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