軟件測試系列培訓(xùn)教程(北大青鳥)



單擊此處編輯母版標(biāo)題樣式,第一級,第二級,第三級,第四級,第五級,*,*,*,單擊此處編輯母版標(biāo)題樣式,第一級,第二級,*,第二章,測試技術(shù),回顧,軟件質(zhì)量的衡量標(biāo)準(zhǔn)是可以準(zhǔn)時(shí)地交付給用戶,所耗費(fèi)的成本不超出預(yù)算,并且最重要的是,能夠正常地運(yùn)行SQA,的目標(biāo)是通過在開發(fā)周期的早期階段發(fā)現(xiàn)錯(cuò)誤來降低解決問題的成本SQA,應(yīng)用于軟件開發(fā)的每個(gè)階段,每個(gè)階段都有其自己的質(zhì)量標(biāo)準(zhǔn)實(shí)施質(zhì)量管理中,要注意構(gòu)建自己的管理體系,包括:構(gòu)建質(zhì)量計(jì)劃、建立質(zhì)量保證、建立質(zhì)量控制等,2,本章目標(biāo),定義軟件測試,明確軟件測試的準(zhǔn)則,明確測試的方法,描述軟件測試的各個(gè)階段,描述各種測試階段的測試內(nèi)容,3,簡介,軟件測試是軟件工程過程中的關(guān)鍵組件軟件測試是軟件質(zhì)量保證的要素,可以將其描述為一個(gè)運(yùn)行程序以檢測錯(cuò)誤(如果有)的過程4,測試的常識與道理 2-1,編程大師說:沒有錯(cuò)誤的程序世間難求編程之道),你在學(xué)校里學(xué)過測試嗎?(讀到博士可能也不懂測試),你所在的企業(yè)重視測試嗎?(小公司程序員的技能更加全面),臨時(shí)抱佛腳行嗎?,你以為有文檔模板就會測試了嗎,?,5,測試的常識與道理 2-2,如果不懂得有效地進(jìn)行測試,你不僅得不到功勞,也沒人欣賞你的苦勞,你擁有最多的將只是疲勞。
職業(yè)軟件工程師應(yīng)當(dāng)掌握需求開發(fā)、系統(tǒng)設(shè)計(jì)、編程、測試、維護(hù),所有技能6,測試的目的是什么,測試的目的是為了發(fā)現(xiàn)盡可能多的缺陷,,不是,為了說明軟件中沒有缺陷推論:成功的測試在于發(fā)現(xiàn)了迄今尚未發(fā)現(xiàn)的缺陷所以測試人員的職責(zé)是設(shè)計(jì)這樣的測試用例,它能有效地揭示潛伏在軟件里的缺陷,千萬不要將“測試”與“演示”混為一談例如科研鑒定會如果產(chǎn)品通過了嚴(yán)格的測試,大家不要不吭氣,應(yīng)當(dāng)好好地宣傳一把,7,軟件測試原則 2-1,完全測試程序是不可能的,輸入量太大,輸出結(jié)果太多,軟件實(shí)現(xiàn)途徑太多,軟件說明書沒有客觀標(biāo)準(zhǔn)從不同角度看,軟件缺陷的標(biāo)準(zhǔn)不同8,軟件測試原則 2-2,軟件測試是有風(fēng)險(xiǎn)的行為,測試無法顯示潛伏的軟件缺陷,找到的軟件缺陷越多,就說明軟件缺陷越多,并非所有軟件缺陷都能修復(fù),軟件測試一項(xiàng)講究條理的技術(shù)專業(yè),9,軟件測試方法黑盒和白盒,白盒測試中(有時(shí)候稱為開盒測試),軟件測試員可以訪問程序員的代碼,并通過檢查代碼來協(xié)助測試可以看到盒子里面一般在單元測試中采用白盒測試,用于測試模塊中所有可能的路徑、執(zhí)行所有循環(huán)并測試所有邏輯表達(dá)式黑盒測試則側(cè)重于軟件的整體功能它不基于程序的內(nèi)部結(jié)構(gòu)而基于系統(tǒng)功能。
猶如一個(gè)人站在黑盒子外面,只知道系統(tǒng)輸入一定數(shù)據(jù),得到一定的輸出,而不必清楚這個(gè)黑盒子中進(jìn)行了哪些操作和運(yùn)算10,軟件測試方法靜態(tài)和動(dòng)態(tài),靜態(tài)檢查,確保系統(tǒng)按照組織的標(biāo)準(zhǔn)和過程運(yùn)行,主要依賴于評審和非運(yùn)行的手段來檢查通常包括需求評審、設(shè)計(jì)評審、代碼走查和代碼檢查動(dòng)態(tài)檢查,在生命周期中進(jìn)行測試(運(yùn)行)通常包括單元測試、集成測試、系統(tǒng)測試、用戶的驗(yàn)收測試11,靜態(tài)測試,審查(,Inspection),軟件的一種基本測試方法,它以一系列典型問題為依據(jù)進(jìn)行檢測走查(,Walkthrough),一對一的審查,比審查更加仔細(xì)回顧(,Review),以發(fā)現(xiàn)軟件中存在的錯(cuò)誤和缺陷為目的的一種軟件測試方法,它是在軟件證實(shí)執(zhí)行之前完成12,靜態(tài)和動(dòng)態(tài)測試進(jìn)行結(jié)構(gòu)和功能測試,測試階段,執(zhí)行人,靜態(tài)校驗(yàn),動(dòng)態(tài)校驗(yàn),可行性評審,開發(fā)人員,用戶,需求評審,開發(fā)人員,用戶,設(shè)計(jì)評審,開發(fā)人員,單元測試,開發(fā)人員,集成測試,開發(fā)人員,用戶,系統(tǒng)測試,開發(fā)人員在用戶的協(xié)助下完成,驗(yàn)收測試,用戶,13,測試技術(shù),14,測試產(chǎn)品說明書,對于產(chǎn)品說明書的制定是個(gè)很重要的設(shè)計(jì)階段,產(chǎn)品說明書的質(zhì)量會直接影響到整個(gè)產(chǎn)品開發(fā)測試產(chǎn)品說明書屬于靜態(tài)黑盒子測試。
15,常用測試用語測試用例,測試用例:編寫用于輸入輸入的實(shí)際數(shù)制和預(yù)期結(jié)果測試用例還明確指出使用具體測試用例產(chǎn)生的測試程序的任何限制使用目的:,測試用例應(yīng)該設(shè)計(jì)為能夠快速容易地發(fā)現(xiàn)盡可能多的錯(cuò)誤應(yīng)該通過使用和產(chǎn)生正確和錯(cuò)誤的輸入和輸出來“檢驗(yàn)”程序其目標(biāo)是要使用合理范圍內(nèi)的條件,盡可能全面地測試所有模塊乃至整個(gè)系統(tǒng)16,測試與調(diào)試什么是缺陷,缺陷:最終產(chǎn)品同用戶的期望不一致,缺陷的分類,錯(cuò)誤,遺漏,超出需求的部分,缺陷(未觸發(fā)),VS.,錯(cuò)誤(應(yīng)首先解決),17,測試與調(diào)試調(diào)試的準(zhǔn)則,調(diào)試的方法:歸納法、演繹法和回溯法常用調(diào)試技術(shù)使用診斷輸出語句(diagnostic output statement)、快照轉(zhuǎn)儲(snapshot dump)以及跟蹤指令的斷點(diǎn)(instruction-dependent breakpoint)18,測試的分類與比較,開發(fā)與測試的,V,型關(guān)系,如果軟件開發(fā)過程采用嚴(yán)格的瀑布模型,那么開發(fā)與測試有“,V”,型的對應(yīng)關(guān)系,需求開發(fā),高層設(shè)計(jì),詳細(xì)設(shè)計(jì),編程,單元測試,集成測試,系統(tǒng)測試,驗(yàn)收測試,19,測試階段 2-1,單元測試、集成測試、,系統(tǒng)測試、,驗(yàn)收測試。
是,“從小到大”、“由內(nèi)至外”、“循序漸進(jìn)”的測試過程,體現(xiàn)了“分而治之”的思想單元測試的粒度最小,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計(jì)”集成測試界于單元測試和系統(tǒng)測試之間,起到“橋梁作用”,一般由開發(fā)小組采用白盒加黑盒的方式來測試,既要驗(yàn)證“設(shè)計(jì)”又要驗(yàn)證“需求”20,測試階段 2-2,系統(tǒng)測試的粒度最大,一般由獨(dú)立測試小組采用黑盒方式來測試,主要測試系統(tǒng)是否符合“需求規(guī)格說明書”驗(yàn)收測試與系統(tǒng)測試非常相似,主要區(qū)別是測試人員不同,驗(yàn)收測試由用戶執(zhí)行21,測試內(nèi)容,測試內(nèi)容一般包含,接口與路徑測試功能測試、健壯性測試、性能測試、用戶界面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試,22,測試階段對應(yīng)表,測試階段,主要依據(jù),測試人員、測試方式,主要測試內(nèi)容,單元測試,系統(tǒng)設(shè)計(jì)文檔,由開發(fā)小組執(zhí)行白盒測試,接口測試、路徑測試,集成測試,系統(tǒng)設(shè)計(jì)文檔,需求文檔,由開發(fā)小組執(zhí)行白盒測試和黑盒測試,接口測試、路徑測試,功能測試、性能測試,系統(tǒng)測試,需求文檔,由獨(dú)立測試小組執(zhí)行黑盒測試,功能測試、健壯性測試、性能測試、用戶界面測試、安全性測試、壓力測試、可靠性測試、安裝,/,反安裝測試,驗(yàn)收測試,需求文檔,由用戶執(zhí)行黑盒測試,23,接口與路徑測試 3-1,接口測試:數(shù)據(jù)一般通過接口輸入和輸出,接口測試一般是白盒測試的第一步。
輸入?yún)?shù)有“典型值”、“邊界值”、“異常值”,輸出包括函數(shù)的返回值和輸出參數(shù)實(shí)際輸出與期望的輸出不一致,那么說明程序有錯(cuò)誤一個(gè)函數(shù)體內(nèi)的語句可能只有十幾條,但邏輯路徑可能有成千上萬條所以應(yīng)該根據(jù)經(jīng)驗(yàn)選擇關(guān)鍵的路徑測試24,接口與路徑測試 3-2,路徑測試的檢查表,數(shù)據(jù)類型、變量值、邏輯判斷、循環(huán)、內(nèi)存管理、文件,I/O、,錯(cuò)誤處理,預(yù)防一些重要的路徑?jīng)]有被測試的措施有:,觀察是否有程序語句從來沒有被執(zhí)行過要特別留意函數(shù)體內(nèi)的錯(cuò)誤處理程序塊25,接口與路徑測試 3-3,接口與路徑測試用例的參考模板,26,功能測試 3-1,功能測試的基本方法是構(gòu)造一些合理輸入(在需求范圍之內(nèi)),檢查輸出是否與期望的相同如果兩者不一致,即表明功能有誤難點(diǎn)在于如何構(gòu)造有效的輸入27,功能測試 3-2,功能測試的測試方法:等價(jià)劃分法和邊界值分析法等價(jià)劃分是指把輸入空間劃分為幾個(gè)“等價(jià)區(qū)間”,在每個(gè)“等價(jià)區(qū)間”中只需要測試一個(gè)典型值就可以了等價(jià)劃分法來源于人們的直覺與經(jīng)驗(yàn),可令測試事半功倍缺陷遺漏在角落里,聚集在邊界上”邊界值測試法是對等價(jià)劃分法的補(bǔ)充如果,A,和,B,是輸入空間的邊界值,那么除了典型值外還要用,A,和,B,作為測試用例。
28,功能測試 3-3,功能測試,用例的參考模板,29,性能測試 3-1,性能測試即測試軟件處理事務(wù)的速度,一是為了檢驗(yàn)性能是否符合需求,二是為了得到某些性能數(shù)據(jù)供人們參考絕對值考慮:如數(shù)據(jù)送輸速率是每秒多少比特相對值”考慮:如某個(gè)軟件比另一個(gè)軟件快多少倍性能測試中考慮運(yùn)行環(huán)境的影響:例如網(wǎng)絡(luò)環(huán)境、計(jì)算機(jī)主頻,總線結(jié)構(gòu)和外部設(shè)備都可能影響軟件的運(yùn)行速度30,性能測試 3-2,性能測試的一些注意事項(xiàng):,應(yīng)當(dāng)編寫一段程序用于計(jì)算時(shí)間以及相關(guān)數(shù)據(jù)應(yīng)當(dāng)測試軟件在標(biāo)準(zhǔn)配置和最低配置下的性能應(yīng)當(dāng)關(guān)閉那些消耗內(nèi)存、占用,CPU,的其它應(yīng)用軟件(如殺毒軟件)應(yīng)當(dāng)分檔記錄例如傳輸文件的容量從100,K,到1,M,可以分成若干等級同一種輸入情況在不同的時(shí)間可能得到不同的性能數(shù)據(jù),可以取其平均值31,性能測試 3-3,性能測試,用例的參考模板,32,壓力測試 2-1,壓力測試也叫負(fù)荷測試,即獲取系統(tǒng)能正常運(yùn)行的極限狀態(tài)壓力測試的主要任務(wù)是:構(gòu)造正確的輸入,使勁折騰系統(tǒng)卻讓它剛好不癱瘓壓力測試的一個(gè)變種是敏感測試在某種情況下,微小的輸入變動(dòng)會導(dǎo)致系統(tǒng)的表現(xiàn)(如性能)發(fā)生急劇的變化33,壓力測試 2-2,壓力測試用例的參考模板,34,其他測試內(nèi)容,健壯性測試,用戶界面測試,信息安全測試,可靠性測試,安裝和反安裝測試,35,問題1:有了“黑盒”測試為什么還要“白盒”測試?,問題2:由于單元測試要寫測試驅(qū)動(dòng)程序,非常麻煩,能否等到整個(gè)系統(tǒng)全部開發(fā)完后,再集中精力進(jìn)行一次性地單元測試呢?,問題3:如果每個(gè)單元都通過了測試,把它們集成一起難道會有什么不妥嗎?集成測試是否多此一舉?,測試常見問題 2-1,36,測試常見問題 2-2,問題4:在集成測試的時(shí)候,已經(jīng)對一些子系統(tǒng)進(jìn)行了功能測試、性能測試等等,那么在系統(tǒng)測試時(shí)能否跳過相同內(nèi)容的測試?,問題5:既然系統(tǒng)測試與驗(yàn)收測試的內(nèi)容幾乎是相同的,為什么還要驗(yàn)收測試?,問題6:能否將系統(tǒng)測試和驗(yàn)收測試“合二為一”?,37,總結(jié) 2-1,測試可以將測試描述為一個(gè)運(yùn)行程序以發(fā)現(xiàn)錯(cuò)誤的過程。
軟件測試的準(zhǔn)則:不完全測試、風(fēng)險(xiǎn)測試、無法顯示潛伏錯(cuò)誤、發(fā)現(xiàn)錯(cuò)誤成線性增長、缺陷不能完全修復(fù)、測試有條理規(guī)程,測試的方法:黑盒/白盒、靜態(tài)/動(dòng)態(tài),軟件測試的各個(gè)階段:單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試,38,總結(jié),2-2,測試的內(nèi)容包括:接口/路徑測試、功能測試、性能測試、壓力測試、可靠性測試、安全性測試、用戶界面測試、安裝/反安裝測試,39,。
