軟件測試基本概念及白盒測試方法課件_第1頁
軟件測試基本概念及白盒測試方法課件_第2頁
軟件測試基本概念及白盒測試方法課件_第3頁
軟件測試基本概念及白盒測試方法課件_第4頁
軟件測試基本概念及白盒測試方法課件_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、軟件測試基本概念及白盒測試方法軟件測試定義 使用人工和自動手段來運(yùn)行或測試某個系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。-在IEEE軟件工程標(biāo)準(zhǔn)術(shù)語軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤測試是為了證明程序有錯,而不是證明程序無錯誤一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試-Grenford J. Myers測試是以評價(jià)一個程序或者系統(tǒng)屬性為目標(biāo)的任何一種活動,測試是對軟件質(zhì)量的度量-Bill Hetzelt軟件測試的目的以最少的人力、物力、時間找出軟件中潛在的各種錯誤和缺陷,通過修正錯誤和缺陷提

2、高軟件質(zhì)量,回避潛在的軟件錯誤和缺陷給軟件造成商業(yè)風(fēng)險(xiǎn)。通過分析測試過程中發(fā)現(xiàn)的問題可以幫助發(fā)現(xiàn)當(dāng)前開發(fā)工作所采用的軟件工程的缺陷,以便進(jìn)行軟件過程改進(jìn),同時通過測試結(jié)果的分析整理,可修正軟件開發(fā)規(guī)則,并為軟件可靠性分析提供依據(jù)。軟件測試的目的評價(jià)程序或系統(tǒng)的屬性,對軟件質(zhì)量進(jìn)行度量和評估,以驗(yàn)證軟件的質(zhì)量滿足用戶的需求,為用戶選擇接受軟件提供有力的依據(jù)。軟件測試的原則軟件測試是證偽而非證真軟件測試完成并不能說明軟件已經(jīng)不存在問題了。盡早地和不斷地進(jìn)行軟件測試軟件開發(fā)的每個環(huán)節(jié)都可能產(chǎn)生錯誤軟件開發(fā)每前進(jìn)一步,發(fā)現(xiàn)和修復(fù)軟件缺陷的代價(jià)平均要增長10倍。重視無效數(shù)據(jù)和非預(yù)期使用習(xí)慣的測試軟件產(chǎn)品

3、中突然暴露出來的許多問題常常是當(dāng)程序以某種非預(yù)期的方式運(yùn)行導(dǎo)致的。軟件測試的原則程序員應(yīng)避免檢查自己的程序人們具有一種不愿意否定自己的自然性心理充分注意測試中的群集現(xiàn)象經(jīng)驗(yàn)表明,測試后程序中殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比用例要定期評審,適時補(bǔ)充修改用例測試用例多次重復(fù)使用后,其發(fā)現(xiàn)缺陷的能力會逐漸降低。軟件測試的原則應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查這是一條最明顯的原則,但常常被忽略。遺漏缺陷測試現(xiàn)場保護(hù)和資料歸檔出現(xiàn)問題時要保護(hù)好現(xiàn)場,并記錄足夠的測試信息,以備缺陷能夠復(fù)現(xiàn)。妥善保存測試計(jì)劃,測試用例,出錯統(tǒng)計(jì)和最終分析報(bào)告,為以后產(chǎn)品升級測試提供足夠的價(jià)值信息。軟件測試的原則軟

4、件測試的經(jīng)濟(jì)性原則軟件測試是保證軟件質(zhì)量的重要環(huán)節(jié)窮盡測試是不可能的根據(jù)程序的重要性及故障發(fā)生的損害程度來確定測試有限級做好測試策略,使用盡可能少的測試用例發(fā)現(xiàn)盡可能多的軟件缺陷軟件測試的對象軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)成為軟件測試的對象。為把握軟件開發(fā)各個環(huán)節(jié)的正確性,需要進(jìn)行各種確認(rèn)和驗(yàn)證工作。驗(yàn)證與確認(rèn)確認(rèn)(Validation),是在產(chǎn)品交付用戶之前進(jìn)行的深入細(xì)致的評定,它的目的是確定整個產(chǎn)品是否滿足規(guī)格說明。 需求規(guī)

5、格說明的確認(rèn) 程序的確認(rèn) (靜態(tài)確認(rèn)、動態(tài)確認(rèn)) 驗(yàn)證(Verification),確定某階段是否正確完成的過程,在每階段結(jié)束時進(jìn)行 -IEEE 610.12,1990:軟件工程術(shù)語表驗(yàn)證與確認(rèn)驗(yàn)證(Verification)在生命周期的每個階段,通過測試和分析,確定所考查階段的需求是否滿足前一階段的輸出以及本階段的輸出是否實(shí)現(xiàn)了本階段的需求的活動。確認(rèn)(Validation)通過測試和分析,表明產(chǎn)品在各個方面符合規(guī)定需求的一種證明行為 。-EN50129.2003 軟件的驗(yàn)證和確認(rèn)與軟件質(zhì)量保證的關(guān)系驗(yàn)證和確認(rèn)不同于軟件質(zhì)量保證,驗(yàn)證和確認(rèn)是一個系統(tǒng)工程過程,采用嚴(yán)格的方法學(xué)來評估軟件生命周

6、期全過程中的軟件產(chǎn)品的正確性和質(zhì)量,強(qiáng)調(diào)產(chǎn)品的完整性和正確性。軟件質(zhì)量保證是一個系統(tǒng)過程,評價(jià)過程和產(chǎn)品,通過強(qiáng)調(diào)對過程的監(jiān)視來保證發(fā)布產(chǎn)品的質(zhì)量,強(qiáng)調(diào)對標(biāo)準(zhǔn)和程序的依從性。驗(yàn)證和確認(rèn)關(guān)注的是安全和任務(wù)關(guān)鍵的工程軟件; 軟件質(zhì)量保證關(guān)注的是整個工程軟件。驗(yàn)證和確認(rèn)不能代替軟件質(zhì)量保證,它應(yīng)該是軟件質(zhì)量保證的補(bǔ)充,它們的工作可能有一些重迭。測試信息流測試信息流軟件配置:軟件需求規(guī)格說明、軟件設(shè)計(jì)規(guī)格說明、源代碼等;測試配置:測試計(jì)劃、測試用例、測試程序等;測試工具:測試數(shù)據(jù)自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序、以及驅(qū)動測試的測試數(shù)據(jù)庫等等。測試信息流測試結(jié)果分析:比較實(shí)測結(jié)

7、果與預(yù)期結(jié)果,評價(jià)錯誤是否發(fā)生。排錯(調(diào)試):對已經(jīng)發(fā)現(xiàn)的錯誤進(jìn)行錯誤定位和確定出錯性質(zhì),并改正這些錯誤,同時修改相關(guān)的文檔。修正后的文檔再測試:直到通過測試為止。測試信息流通過收集和分析測試結(jié)果數(shù)據(jù),對軟件建立可靠性模型利用可靠性分析,評價(jià)軟件質(zhì)量: 軟件的質(zhì)量和可靠性達(dá)到可以接受的程度; 所做的測試不足以發(fā)現(xiàn)嚴(yán)重的錯誤;如果測試發(fā)現(xiàn)不了錯誤,可以肯定,測試配置考慮得不夠細(xì)致充分,錯誤仍然潛伏在軟件中。軟件測試的分類分類依據(jù)測試類型軟件開發(fā)階段單元測試(模塊測試)集成測試(組裝測試,部件測試)系統(tǒng)測試(確認(rèn)測試,配置項(xiàng)測試)驗(yàn)收測試軟件測試的分類分類依據(jù)測試類型測試方法與技術(shù)是否執(zhí)行軟件靜態(tài)

8、測試動態(tài)測試是否了解內(nèi)部結(jié)構(gòu)黑盒測試白盒測試灰盒測試軟件測試的分類分類依據(jù)測試類型測試實(shí)施組織開發(fā)方測試用戶測試第三方測試軟件測試的分類分類依據(jù)測試類型測試內(nèi)容功能測試安全性測試接口測試容量測試完整性測試結(jié)構(gòu)測試用戶界面測試軟件測試的分類分類依據(jù)測試類型測試內(nèi)容負(fù)載測試壓力測試疲勞強(qiáng)度測試恢復(fù)性測試配置測試兼容性測試安裝測試測試類型描述單元測試單元測試又稱為模塊測試,是對軟件中最小可測單元進(jìn)行檢查和驗(yàn)證。單元測試需要掌握內(nèi)部設(shè)計(jì)和編碼的細(xì)節(jié)知識,往往需要開發(fā)測試驅(qū)動模塊和樁模塊來輔助完成,一般由開發(fā)人員來執(zhí)行測試。集成測試單元測試的下一個階段就是集成測試,又稱為組裝測試,是在單元測試的基礎(chǔ)上,

9、將單元模塊組裝成系統(tǒng)或子系統(tǒng)過程中所進(jìn)行的測試,重點(diǎn)檢查軟件不同單元或部件之間的接口是否正確。系統(tǒng)測試系統(tǒng)測試是對整個基于計(jì)算機(jī)系統(tǒng)的測試,軟件作為該系統(tǒng)的一個元素,與計(jì)算機(jī)硬件,外設(shè),網(wǎng)絡(luò),支持軟件,數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起,在真實(shí)或模擬運(yùn)行環(huán)境下進(jìn)行一系列的組裝測試和確認(rèn)測試,檢查軟件是否能與硬件、外設(shè)、網(wǎng)絡(luò)、支持軟件等正確配置連接,并滿足用戶需求。驗(yàn)收測試驗(yàn)收測試是按照項(xiàng)目任務(wù)書或合同,供需雙方約定的驗(yàn)收依據(jù)文檔,在用戶指定的或真實(shí)的環(huán)境中,對整個系統(tǒng)進(jìn)行的測試與評審,作為用戶接受或拒絕系統(tǒng)的依據(jù),是軟件在投入使用之前的最后測試。靜態(tài)測試不運(yùn)行被測軟件本身,僅通過人工分析或檢查

10、軟件的需求說明書,設(shè)計(jì)說明書,以及源程序的文法,結(jié)構(gòu)、過程、接口等來驗(yàn)證軟件正確性的測試過程動態(tài)測試通過人工或工具運(yùn)行軟件,比較軟件運(yùn)行的外部表現(xiàn)與預(yù)期結(jié)果的差異,來驗(yàn)證軟件的正確性,并分析軟件運(yùn)行效率和健壯性等性能。白盒測試白盒測試是一種按照程序內(nèi)部邏輯結(jié)構(gòu)和編碼結(jié)構(gòu)設(shè)計(jì)測試數(shù)據(jù)的測試方法。測試時可以看到被測程序的內(nèi)部結(jié)構(gòu),并根據(jù)其內(nèi)部結(jié)構(gòu)設(shè)計(jì)測試數(shù)據(jù),使程序中的每個語句、每個條件分支、每個控制路徑都在程序測試中受到檢驗(yàn)。白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。黑盒測試黑盒測試(BLACK-BOXTESTING)是一種按照需求規(guī)格說明設(shè)計(jì)測試數(shù)據(jù)的方法。它把程序看作內(nèi)部不可見的黑盒子,完全不需

11、考慮程序內(nèi)部結(jié)構(gòu)和編碼結(jié)構(gòu),也不需考慮程序中的語句及路徑,測試者只需了解程序輸入和輸出之間的關(guān)系,或是程序的功能,完全依靠能夠反映這一關(guān)系和程序功能的需求規(guī)格說明確定測試數(shù)據(jù),判定測試結(jié)果的正確性。黑盒測試也稱功能測試、 數(shù)據(jù)驅(qū)動測試?;液袦y試介于白盒測試與黑盒測試之間的測試;關(guān)注輸出對于輸入的正確性,同時也關(guān)注內(nèi)部表現(xiàn)。開發(fā)方測試在軟件開發(fā)環(huán)境下,由開發(fā)方檢測與證實(shí)軟件的實(shí)現(xiàn)是否滿足設(shè)計(jì)說明或需求說明要求的過程。用戶測試在用戶的應(yīng)用環(huán)境下,用戶通過運(yùn)行和使用軟件,檢測和核實(shí)軟件是否符合自己預(yù)期要求的過程。第三方測試又稱獨(dú)立測試,通常是在模擬用戶真實(shí)應(yīng)用的環(huán)境下,由在技術(shù)、管理、財(cái)務(wù)上與開發(fā)、

12、用戶相當(dāng)獨(dú)立的組織進(jìn)行的軟件測試功能測試側(cè)重于驗(yàn)證測試目標(biāo)預(yù)期功能,在規(guī)定的一段時間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以驗(yàn)證這個軟件系統(tǒng)有無嚴(yán)重錯誤。安全性測試側(cè)重于確保測試目標(biāo)數(shù)據(jù)(或系統(tǒng))只供預(yù)定好的那些參與者訪問。接口測試測試驗(yàn)證測試目標(biāo)的數(shù)據(jù)接口的正確性和對其設(shè)計(jì)的遵循性容量測試側(cè)重于驗(yàn)證測試目標(biāo)處理大量數(shù)據(jù)的能力。完整性測試側(cè)重于評估測試目標(biāo)的健壯性(防止故障)和語言、語法和資源用途的技術(shù)一致性。結(jié)構(gòu)測試側(cè)重于評估測試目標(biāo)對其設(shè)計(jì)和形式的遵循性。用戶界面測試側(cè)重于驗(yàn)證用戶與軟件的交互。負(fù)載測試一種性能測試,側(cè)重于驗(yàn)證和評估在滿足性能指標(biāo)的情況下,系統(tǒng)所能承受的最大負(fù)載量。壓力測試一種性能測試

13、,側(cè)重于通過確定一個系統(tǒng)的瓶頸或不能接受的性能點(diǎn),來獲得系統(tǒng)能提供的最大服務(wù)級別。疲勞強(qiáng)度測試側(cè)重于驗(yàn)證測試目標(biāo)在異常或極端條件下其性能行為的可接受程度?;謴?fù)性測試側(cè)重于應(yīng)用程序或整個系統(tǒng)可以從各種硬件、軟件或網(wǎng)絡(luò)故障中成功地進(jìn)行故障轉(zhuǎn)移或恢復(fù)。配置測試側(cè)重于在不同的硬件和軟件配置上實(shí)現(xiàn)預(yù)期的測試目標(biāo)功能。兼容性測試側(cè)重于確保受測試系統(tǒng)與其他軟件可以共存運(yùn)行安裝測試側(cè)重于確保在不同硬件和軟件配置上以及不同條件下按計(jì)劃安裝測試目標(biāo)。性能測試性能測試是要檢查系統(tǒng)是否滿足在需求說明書中規(guī)定的性能。特別是對于實(shí)時系統(tǒng)或嵌入式系統(tǒng)。性能測試常常需要與強(qiáng)度測試結(jié)合起來進(jìn)行,并常常要求同時進(jìn)行硬件和軟件檢測

14、。通常對軟件性能的檢測表現(xiàn)在以下幾個方面:響應(yīng)時間、吞吐量、輔助存儲區(qū),例如緩沖區(qū),工作區(qū)的大小等、處理精度等等。軟件測試基本方法黑盒測試常用的方法等價(jià)類邊界值錯誤推測法因果圖法判定表法場景法功能圖法軟件測試基本方法白盒測試常用的方法靜態(tài)測試代碼走查,代碼走查控制流分析,數(shù)據(jù)流分析,接口分析,表達(dá)式分析動態(tài)測試邏輯覆蓋,基本路徑覆蓋,域測試,符合測試,程序插樁,程序變異測試方法分類與關(guān)系分析等價(jià)類劃分邊界值分析錯誤推測法因果圖法判定表法正交實(shí)驗(yàn)法場景法功能圖法黑盒測試白盒測試靜態(tài)測試代碼走查代碼審查靜態(tài)分析數(shù)據(jù)流分析控制流分析接口分析表達(dá)式分析動態(tài)測試邏輯覆蓋基本路徑測試域測試符號測試程序插樁

15、軟件測試過程模型-V模型系統(tǒng)需求分析軟件需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼單元測試集成(部件)測試軟件確認(rèn)(配置項(xiàng))測試(系統(tǒng))確認(rèn)測試系統(tǒng)任務(wù)說明書軟件任務(wù)書軟件需求說明軟件概要設(shè)計(jì)文檔軟件詳細(xì)設(shè)計(jì)文檔驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證確認(rèn)確認(rèn)編譯后的單元測試后的單元測試后的軟件部件測試后的軟件配置項(xiàng)交付軟件測試與軟件開發(fā)各階段的關(guān)系測試方法分類與關(guān)系分析單元測試適合各種測試方法集成測試適合各種測試方法,主要是動態(tài)測試方法(白盒、黑盒)確認(rèn)測試、系統(tǒng)測試適合各種測試方法,主要是黑盒測試方法軟件測試生命周期測試需求劃分測試需求明確測試意圖,分解測試需求;確定測試需求輸入與輸出;檢查測試需求與軟件需求的一致性。

16、白盒測試用例設(shè)計(jì)方法邏輯覆蓋法基本路徑法數(shù)據(jù)流測試程序插樁域測試程序變異符合測試邏輯覆蓋法測試數(shù)據(jù)執(zhí)行程序的邏輯覆蓋程度語句覆蓋(SC)判定覆蓋(DC)條件覆蓋(CC)判定-條件覆蓋(CDC)修正條件判定覆蓋(MC/DC)多條件覆蓋(MCC)例語句覆蓋(statement coverage)語句覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語句都在路徑L1上,所以選擇路徑 L1設(shè)計(jì)測試用例,就可以覆蓋所有的可執(zhí)行語句。 L1:a-c-eL1測試用例的設(shè)計(jì)格式如下【輸入的(A, B, X),輸出的(A, B, X)】為圖例設(shè)計(jì)滿足語句覆蓋的測

17、試用例是:【(2, 0, 4),(2, 0, 3)】 覆蓋 ace【L1】 (A=2)and(B=0)or (A1)and(B=0)and (X/A1) 判定覆蓋(decision coverage)判定覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例L1: a-c-eL2: a-b-dL1L2100%語句覆蓋不一定100%判定覆蓋。【(2, 0, 4),(2, 0, 3)】覆蓋 ace【L1】【(1, 1, 1),(1, 1, 1)】覆蓋 abd【L2】(A=2)a

18、nd(B=0)or (A1)and(B=0)and (X/A1)(A=1)and(X=1)or (B!=0)and(A!=2)and(X=1) 判定覆蓋如果選擇路徑L3和L4,還可得另一組可用的測試用例:【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】【(3, 0, 3),(3, 1, 1)】覆蓋 acd【L4】 判定覆蓋L4L3條件覆蓋(condition coverage)條件覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對所有條件的取值加以標(biāo)記。例如,對于第一個判斷: 條件 A1 取真為 ,取假為 條件 B

19、0 取真為 ,取假為對于第二個判斷: 條件A2 取真為 ,取假為 條件X1 取真為 ,取假為測試用例 覆蓋分支 條件取值【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 0, 1),(1, 0, 1)】L2(b, d) 【(2, 1, 1),(2, 1, 2)】L3(b, e)或條件覆蓋 測 試 用 例 覆蓋分支 條件取值【(1, 0, 3),(1, 0, 4)】L3(b, e)【(2, 1, 1),(2, 1, 2)】L3(b, e)判定條件覆蓋(condition/ decision coverage)判定條件覆蓋就是設(shè)計(jì)足夠的測試用例,使得判斷中每個條件的所有可能取值

20、至少執(zhí)行一次,同時每個判斷中的每個條件的可能取值至少執(zhí)行一次。 測 試 用 例 覆蓋分支 條件取值【(2, 0, 4),(2, 0, 3)】L1(c, e)【(1, 1, 1),(1, 1, 1)】L2(b, d)判定條件覆蓋條件組合覆蓋(Multiple condition coverage)條件組合覆蓋就是設(shè)計(jì)足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。 記 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作 A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 測 試 用 例 覆蓋條件 覆蓋組合【(2, 0, 4)

21、, (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) , 【(1, 1, 1), (1, 1, 1)】(L2) , 修正條件判定覆蓋(MC/DC)運(yùn)行被測程序,使得條件判斷表達(dá)式中所有條件操作數(shù)邏輯值獨(dú)立對條件判定表達(dá)式結(jié)果影響。(每個條件對判定的結(jié)果都至少轉(zhuǎn)化一次) A1, B0 作 結(jié)果 1 A1, B0 作 結(jié)果 0 A1, B0 作 結(jié)果 0 修正條件判定覆蓋(MC/DC)路徑覆蓋路徑測試就是設(shè)計(jì)足夠的測試用例,覆蓋程序中所有可能的路徑。測 試 用 例 通過路徑 覆蓋條件【(2, 0, 4)

22、, (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4) 條件測試路徑選擇當(dāng)程序中判定多于一個時,形成的分支結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)和連鎖型分支結(jié)構(gòu)。對于嵌套型分支結(jié)構(gòu),若有n個判定語句,需要n+1個測試用例;對于連鎖型分支結(jié)構(gòu), 若有n個判定語句,需要有2n個測試用例,覆蓋它的2n條路徑。當(dāng)n較大時將無法測試。條件測試路徑選擇循環(huán)測試路徑選擇循環(huán)分為4種不同類型:簡單循環(huán)、連鎖循環(huán)、嵌套循環(huán)和非結(jié)構(gòu)循環(huán)。 (

23、1) 簡單循環(huán) 零次循環(huán):從循環(huán)入口到出口 一次循環(huán):檢查循環(huán)初始值 二次循環(huán):檢查多次循環(huán) m次循環(huán): 檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。循環(huán)測試路徑選擇例:求最小值k = i; for ( j = i+1; j = n; j+ ) if ( Aj 0) 錯寫成:if( e=0) 使用白盒測試方法則不能發(fā)現(xiàn)該錯誤。因此必須將結(jié)構(gòu)測試與功能測試方法結(jié)合起來。白盒測試方法-說明2說明2:采用其中任何一種方法都不能完全覆蓋所有的測試用例,因此,在實(shí)際的測試用例設(shè)計(jì)過程中,可以將不同的測試方法組合起來,交叉使用。黑盒測試方法等價(jià)類劃分等價(jià)類劃分是一種典型的黑盒測試方法,使

24、用這一方法時,完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。等價(jià)類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。使用這一方法設(shè)計(jì)測試用例要經(jīng)歷劃分等價(jià)類(列出等價(jià)類表)和選取測試用例兩步。劃分等價(jià)類等價(jià)類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價(jià)類的代表值就等價(jià)于對這一類其它值的測試。等價(jià)類劃分等價(jià)類的劃分有兩種不同的情況: 有效等價(jià)類:是指對于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。 無效等價(jià)類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的

25、輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計(jì)測試用例時,要同時考慮有效等價(jià)類和無效等價(jià)類的設(shè)計(jì)。等價(jià)類劃分劃分等價(jià)類的原則。(1) 如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價(jià)類和兩個無效等價(jià)類。等價(jià)類劃分例如,在程序的規(guī)格說明中,對輸入條件有一句話: “ 項(xiàng)數(shù)可以從1到999 ” 則有效等價(jià)類是“1項(xiàng)數(shù)999”兩個無效等價(jià)類是“項(xiàng)數(shù)1”或“項(xiàng)數(shù)999”。在數(shù)軸上表示成: 等價(jià)類劃分(2) 如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價(jià)類和一個無效等價(jià)類。例如,在Pascal語言中對變量標(biāo)識符規(guī)定為“以字母打頭的串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類,

26、而不在此集合內(nèi)(不以字母打頭)的歸于無效等價(jià)類。等價(jià)類劃分(3) 如果輸入條件是一個布爾量,則可以確定一個有效等價(jià)類和一個無效等價(jià)類。(4) 如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進(jìn)行處理。這時可為 每一個輸入值確立一個有效等價(jià)類,此外針對這組值確立一個無效等價(jià)類,它是所有不允許的輸入值的集合。等價(jià)類劃分例如,在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個有效等價(jià)類為教授、副教授、講師和助教,一個無效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。(5) 如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價(jià)類(符合規(guī)則)和若干

27、個無效等價(jià)類(從不同角度違反規(guī)則)。等價(jià)類劃分例如,Pascal語言規(guī)定 “一個語句必須以分號;結(jié)束”。這時,可以確定一個有效等價(jià)類 “以;結(jié)束”,若干個無效等價(jià)類 “以:結(jié)束”、“以,結(jié)束”、“以 結(jié)束”、“以LF結(jié)束”等。確立測試用例在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。等價(jià)類劃分再從劃分出的等價(jià)類中按以下原則選擇測試用例:(1) 為每一個等價(jià)類規(guī)定一個唯一編號;(2) 設(shè)計(jì)一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;(3)設(shè)計(jì)一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價(jià)類,重復(fù)這一步,直到所有的無效

28、等價(jià)類都被覆蓋為止。等價(jià)類劃分用等價(jià)類劃分法設(shè)計(jì)測試用例的實(shí)例在某一PASCAL語言版本中規(guī)定:“標(biāo)識符是由字母開頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個,最大字符數(shù)為80個?!辈⑶乙?guī)定:“標(biāo)識符必須先說明,再使用。” “在同一說明語句中,標(biāo)識符至少必須有一個?!钡葍r(jià)類劃分用等價(jià)類劃分的方法,建立輸入等價(jià)類表:等價(jià)類劃分下面選取了9個測試用例,它們覆蓋了所有的等價(jià)類。 VAR x,T1234567:REAL; BEGIN x := 3.414; T1234567 := 2.732; . (1), (2), (4), (8), (9), (12), (14) VAR :REAL; (3

29、) VAR x,:REAL; (5)等價(jià)類劃分 VAR T12345678:REAL; (6) VAR T12345.:REAL; (7) 多于80個字符 VAR T$:CHAR; (10) VAR GOTO:INTEGER; (11) VAR 2T:REAL; (13) VAR PAR:REAL; (15) BEGIN . PAP := SIN (3.14 * 0.8) / 6; 等價(jià)類劃分邊界值分析邊界值分析也是一種黑盒測試方法,是對等價(jià)類劃分方法的補(bǔ)充。人們從長期的測試工作經(jīng)驗(yàn)得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查

30、出更多的錯誤。比如,在做三角形計(jì)算時,要輸入三角形的三個邊長:A、B和C。 我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足 A0、B0、C0、 ABC、ACB、BCA,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“”錯寫成大于等于號“”,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。邊界值分析這里所說的邊界是指,相當(dāng)于輸入等價(jià)類和輸出等價(jià)類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)確定邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值做為測試數(shù)據(jù)。 邊界值分析錯誤推測法人們也可以靠經(jīng)驗(yàn)和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推測法。錯誤推測法的基本想法是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例。因果圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論