




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 黑盒測(cè)試黑盒測(cè)試 白盒測(cè)試白盒測(cè)試 測(cè)試策略測(cè)試策略 面向?qū)ο鬁y(cè)試面向?qū)ο鬁y(cè)試 測(cè)試完成標(biāo)準(zhǔn)測(cè)試完成標(biāo)準(zhǔn) 調(diào)試調(diào)試3軟件測(cè)試的軟件測(cè)試的策略和方法策略和方法靜態(tài)測(cè)試方法靜態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法 人工測(cè)試方法人工測(cè)試方法計(jì)算機(jī)輔助靜計(jì)算機(jī)輔助靜態(tài)分析方法態(tài)分析方法白盒測(cè)試方法白盒測(cè)試方法黑盒測(cè)試方法黑盒測(cè)試方法4靜態(tài)測(cè)試:靜態(tài)測(cè)試: 基本特征是在對(duì)軟件進(jìn)行分析、檢查和審閱,不實(shí)際基本特征是在對(duì)軟件進(jìn)行分析、檢查和審閱,不實(shí)際運(yùn)行被測(cè)試的軟件。運(yùn)行被測(cè)試的軟件。 靜態(tài)測(cè)試約可找出靜態(tài)測(cè)試約可找出303070%70%的邏輯設(shè)計(jì)錯(cuò)誤的邏輯設(shè)計(jì)錯(cuò)誤. . 對(duì)對(duì)需求規(guī)格說(shuō)明書需求規(guī)格說(shuō)明書、
2、軟件設(shè)計(jì)說(shuō)明書軟件設(shè)計(jì)說(shuō)明書、源程序源程序做檢查做檢查和審閱和審閱 包括:包括:是否符合標(biāo)準(zhǔn)和規(guī)范;是否符合標(biāo)準(zhǔn)和規(guī)范;通過(guò)結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷。通過(guò)結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷。 5動(dòng)態(tài)測(cè)試:動(dòng)態(tài)測(cè)試: 通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。確性。 動(dòng)態(tài)測(cè)試的兩個(gè)基本要素:動(dòng)態(tài)測(cè)試的兩個(gè)基本要素:被測(cè)試程序被測(cè)試程序測(cè)試數(shù)據(jù)(測(cè)試用例)測(cè)試數(shù)據(jù)(測(cè)試用例)動(dòng)態(tài)測(cè)試方法: (1) 選取定義域有效值選取定義域有效值,或定義域外無(wú)效值;或定義域外無(wú)效值; (2) 對(duì)已選取值決定對(duì)已選取值決定預(yù)期的結(jié)果;預(yù)期
3、的結(jié)果; (3) 用選取值執(zhí)行程序;用選取值執(zhí)行程序; (4) 執(zhí)行結(jié)果執(zhí)行結(jié)果與與預(yù)期的結(jié)果預(yù)期的結(jié)果相比相比,不吻和程序有錯(cuò)不吻和程序有錯(cuò)。測(cè)試用例測(cè)試用例ID目的目的前提前提輸入輸入預(yù)期輸出預(yù)期輸出后果后果執(zhí)行歷史執(zhí)行歷史日期日期 結(jié)果結(jié)果 版本版本 執(zhí)行人執(zhí)行人 測(cè)試用例的設(shè)計(jì)是軟件測(cè)試的關(guān)鍵所在測(cè)試用例的設(shè)計(jì)是軟件測(cè)試的關(guān)鍵所在 設(shè)計(jì)盡可能少的測(cè)試用例來(lái)發(fā)現(xiàn)盡可能多設(shè)計(jì)盡可能少的測(cè)試用例來(lái)發(fā)現(xiàn)盡可能多的錯(cuò)誤的錯(cuò)誤 設(shè)計(jì)最有可能發(fā)現(xiàn)軟件錯(cuò)誤的測(cè)試用例,設(shè)計(jì)最有可能發(fā)現(xiàn)軟件錯(cuò)誤的測(cè)試用例,同時(shí)避免使用發(fā)現(xiàn)錯(cuò)誤效果相同的測(cè)試用同時(shí)避免使用發(fā)現(xiàn)錯(cuò)誤效果相同的測(cè)試用例例 測(cè)試用例的設(shè)計(jì)方法大體
4、可分為兩類:白測(cè)試用例的設(shè)計(jì)方法大體可分為兩類:白盒測(cè)試和黑盒測(cè)試盒測(cè)試和黑盒測(cè)試,也稱白箱測(cè)試和黑箱,也稱白箱測(cè)試和黑箱測(cè)試測(cè)試7動(dòng)態(tài)測(cè)試技術(shù)動(dòng)態(tài)測(cè)試技術(shù)1 1、白盒測(cè)試白盒測(cè)試(White Box Testing)2 2、黑盒測(cè)試黑盒測(cè)試(Black Box Testing) 如果知道產(chǎn)品的內(nèi)部工作過(guò)程,可以通過(guò)測(cè)試來(lái)檢驗(yàn)產(chǎn)如果知道產(chǎn)品的內(nèi)部工作過(guò)程,可以通過(guò)測(cè)試來(lái)檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書的規(guī)定正常進(jìn)行品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書的規(guī)定正常進(jìn)行 - 稱為稱為白盒測(cè)試。白盒測(cè)試。 如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過(guò)測(cè)試來(lái)如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過(guò)測(cè)試來(lái)檢驗(yàn)是
5、否每個(gè)功能都能正常使用檢驗(yàn)是否每個(gè)功能都能正常使用 - 稱為黑盒測(cè)試。稱為黑盒測(cè)試。8也叫也叫玻璃盒測(cè)試玻璃盒測(cè)試(Glass Box Testing)、結(jié)構(gòu)測(cè)試結(jié)構(gòu)測(cè)試 對(duì)軟件的過(guò)程性細(xì)對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。這節(jié)做細(xì)致的檢查。這一方法是把測(cè)試對(duì)象一方法是把測(cè)試對(duì)象看作一個(gè)打開的盒子,看作一個(gè)打開的盒子,它允許測(cè)試人員利用它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息及有關(guān)信息,來(lái)設(shè)計(jì),來(lái)設(shè)計(jì)或選擇或選擇測(cè)試用例,測(cè)試用例,對(duì)對(duì)程序所有程序所有邏輯路徑邏輯路徑進(jìn)進(jìn)行測(cè)試。行測(cè)試。白盒測(cè)試白盒測(cè)試(White Box Testing)白盒測(cè)試白盒測(cè)試的內(nèi)容的內(nèi)容對(duì)程序
6、模塊的所有對(duì)程序模塊的所有獨(dú)立獨(dú)立執(zhí)行路徑執(zhí)行路徑至少測(cè)試一次至少測(cè)試一次對(duì)所有的對(duì)所有的邏輯判定邏輯判定,取,取“真真”與取與取“假假”的兩種情況的兩種情況都能至少測(cè)試一次。都能至少測(cè)試一次。 在循環(huán)的邊界和運(yùn)行邊在循環(huán)的邊界和運(yùn)行邊界限內(nèi)執(zhí)行循環(huán)體界限內(nèi)執(zhí)行循環(huán)體 測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。效性。 9黑盒測(cè)試又稱黑盒測(cè)試又稱行為測(cè)試行為測(cè)試,把測(cè)試,把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書,規(guī)格說(shuō)明書,檢查程序的功能是檢查程序的
7、功能是否符合它的功能需求否符合它的功能需求。已知產(chǎn)品。已知產(chǎn)品的功能設(shè)計(jì)規(guī)格,可以進(jìn)行測(cè)試的功能設(shè)計(jì)規(guī)格,可以進(jìn)行測(cè)試證明每個(gè)實(shí)現(xiàn)了的功能是否符合證明每個(gè)實(shí)現(xiàn)了的功能是否符合要求。要求。 黑盒測(cè)試黑盒測(cè)試(Black Box Testing)黑盒測(cè)試黑盒測(cè)試的內(nèi)容的內(nèi)容不正確或遺漏的功能不正確或遺漏的功能接口錯(cuò)誤,如輸入接口錯(cuò)誤,如輸入/ /輸出輸出參數(shù)的個(gè)數(shù)、類型等參數(shù)的個(gè)數(shù)、類型等數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息( (如外部數(shù)據(jù)庫(kù)如外部數(shù)據(jù)庫(kù)) )訪問(wèn)錯(cuò)誤訪問(wèn)錯(cuò)誤性能錯(cuò)誤性能錯(cuò)誤軟件軟件初始化和終止錯(cuò)誤初始化和終止錯(cuò)誤 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ) 白盒測(cè)試白盒測(cè)試 測(cè)試策略測(cè)試策
8、略 面向?qū)ο鬁y(cè)試面向?qū)ο鬁y(cè)試 測(cè)試完成標(biāo)準(zhǔn)測(cè)試完成標(biāo)準(zhǔn) 調(diào)試調(diào)試 黑盒測(cè)試法是根據(jù)被測(cè)黑盒測(cè)試法是根據(jù)被測(cè)程序功能程序功能來(lái)進(jìn)行來(lái)進(jìn)行測(cè)試,所以通常也稱為測(cè)試,所以通常也稱為功能測(cè)試功能測(cè)試。用黑盒。用黑盒測(cè)試法設(shè)計(jì)測(cè)試用例,有測(cè)試法設(shè)計(jì)測(cè)試用例,有5 5 種常用技術(shù):種常用技術(shù):等價(jià)類劃分等價(jià)類劃分邊界值分析邊界值分析比較測(cè)試比較測(cè)試錯(cuò)誤猜測(cè)錯(cuò)誤猜測(cè)因果圖因果圖 由于不能窮舉所有可能的輸入數(shù)據(jù)來(lái)進(jìn)行測(cè)試,所以只能選擇少量有代表性的輸入數(shù)據(jù),來(lái)揭露盡可能多的程序錯(cuò)誤 等價(jià)類劃分等價(jià)類劃分方法將所有可能的輸入數(shù)據(jù)劃分成若干個(gè)等價(jià)類,然后在每個(gè)等價(jià)類中選取一個(gè)代表性的數(shù)據(jù)作為測(cè)試用例等價(jià)類等價(jià)類是
9、指輸入域的某個(gè)子集,該子集中的每個(gè)輸入是指輸入域的某個(gè)子集,該子集中的每個(gè)輸入數(shù)據(jù)對(duì)揭露軟件中的錯(cuò)誤都是等效的,測(cè)試等價(jià)類的數(shù)據(jù)對(duì)揭露軟件中的錯(cuò)誤都是等效的,測(cè)試等價(jià)類的某個(gè)代表值就等價(jià)于對(duì)這一類其他值的測(cè)試。也就是某個(gè)代表值就等價(jià)于對(duì)這一類其他值的測(cè)試。也就是說(shuō),如果該子集中的某個(gè)輸入數(shù)據(jù)能檢測(cè)出某個(gè)錯(cuò)誤,說(shuō),如果該子集中的某個(gè)輸入數(shù)據(jù)能檢測(cè)出某個(gè)錯(cuò)誤,那么該子集中的其他輸入數(shù)據(jù)也能檢測(cè)出同樣的錯(cuò)誤;那么該子集中的其他輸入數(shù)據(jù)也能檢測(cè)出同樣的錯(cuò)誤;反之,如果該子集中的某個(gè)輸入數(shù)據(jù)不能檢測(cè)出錯(cuò)誤,反之,如果該子集中的某個(gè)輸入數(shù)據(jù)不能檢測(cè)出錯(cuò)誤,那么該子集中的其他輸入數(shù)據(jù)也不能檢測(cè)出錯(cuò)誤。那么該
10、子集中的其他輸入數(shù)據(jù)也不能檢測(cè)出錯(cuò)誤。 等價(jià)類劃分方法把輸入數(shù)據(jù)分為有效輸入數(shù)據(jù)和無(wú)效輸入數(shù)據(jù) 有效輸入數(shù)據(jù)指符合規(guī)格說(shuō)明要求的合理的輸入數(shù)據(jù),主要用來(lái)檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明中的功能 無(wú)效輸入數(shù)據(jù)指不符合規(guī)格說(shuō)明要求的不合理或非法的輸入數(shù)據(jù),主要用來(lái)檢驗(yàn)程序是否做了規(guī)格說(shuō)明以外的事 在確定輸入數(shù)據(jù)等價(jià)類時(shí),常常還要分析輸出數(shù)據(jù)的等價(jià)類,以便根據(jù)輸出數(shù)據(jù)等價(jià)類導(dǎo)出輸入數(shù)據(jù)等價(jià)類。14 是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的有意義的合理的有意義的輸入數(shù)據(jù)輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢驗(yàn)程序是否實(shí)現(xiàn)預(yù)先構(gòu)成的集合。利用它可以檢驗(yàn)程序是否實(shí)現(xiàn)預(yù)先規(guī)定的功能和性能。在具
11、體問(wèn)題中,有效等價(jià)類可以是一規(guī)定的功能和性能。在具體問(wèn)題中,有效等價(jià)類可以是一個(gè),也可以是多個(gè)。個(gè),也可以是多個(gè)。 有效等價(jià)類有效等價(jià)類 是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,是無(wú)不合理的,是無(wú)意義的輸入數(shù)據(jù)意義的輸入數(shù)據(jù)構(gòu)成的集合。測(cè)試員主要利用這一類測(cè)試構(gòu)成的集合。測(cè)試員主要利用這一類測(cè)試用例來(lái)檢查程序中功能和性能的實(shí)現(xiàn)是否用例來(lái)檢查程序中功能和性能的實(shí)現(xiàn)是否不符合不符合規(guī)格說(shuō)明規(guī)格說(shuō)明要求。在具體問(wèn)題中,無(wú)效等價(jià)類至少應(yīng)有一個(gè),也可能要求。在具體問(wèn)題中,無(wú)效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)有多個(gè) 無(wú)效等價(jià)類無(wú)效等價(jià)類 確定等價(jià)類根據(jù)軟件的規(guī)格說(shuō)明,對(duì)每一個(gè)
12、輸入條件(通常是規(guī)格說(shuō)明中的一句話或一個(gè)短語(yǔ))確定若干個(gè)有效等價(jià)類和若干個(gè)無(wú)效等價(jià)類。 可使用如下表格輸入條件有效等價(jià)類 無(wú)效等價(jià)類確定等價(jià)類的規(guī)則: (1) 如果輸入條件規(guī)定了取值范圍,則可以確定一個(gè)有效等價(jià)類(輸入值在此范圍內(nèi))和兩個(gè)無(wú)效等價(jià)類(輸入值小于最小值及大于最大值)例如,規(guī)定輸入的考試成績(jī)?cè)?.100之間,則有效等價(jià)類是“0 成績(jī) 100”,無(wú)效等價(jià)類是“成績(jī) 0”和“成績(jī) 100”。(2) 如果輸入條件規(guī)定了值的個(gè)數(shù),則可以確定一個(gè)有效等價(jià)類(輸入值的個(gè)數(shù)等于規(guī)定的個(gè)數(shù))和兩個(gè)無(wú)效等價(jià)類(輸入值的個(gè)數(shù)小于規(guī)定的個(gè)數(shù)和大于規(guī)定的個(gè)數(shù))例如,規(guī)定輸入構(gòu)成三角形的3條邊,則有效等價(jià)類
13、是“輸入邊數(shù) = 3”,無(wú)效等價(jià)類是“輸入邊數(shù) 3”和“輸入邊數(shù) 3”。(3) 如果輸入條件規(guī)定了輸入值的集合(即離散值),而且程序?qū)Σ煌妮斎胫底霾煌奶幚?,那么每個(gè)允許的值都確定為一個(gè)有效等價(jià)類,另外還有一個(gè)無(wú)效等價(jià)類(任意一個(gè)不允許的值)。例如,規(guī)定輸入的考試成績(jī)?yōu)閮?yōu)、良、中、及格、不及格,則可確定5個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(4) 如果輸入條件規(guī)定了輸入值必須遵循的規(guī)則,那么可確定一個(gè)有效等價(jià)類(符合此規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從各個(gè)不同的角度違反此規(guī)則)。例如,在Pascal語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母開頭的串”。那么有效等價(jià)類是“以字母開頭的串”,而無(wú)效等價(jià)類有“以數(shù)字開頭
14、的串”、“以標(biāo)點(diǎn)符號(hào)開頭的串”等。(5) 如果輸入條件規(guī)定輸入數(shù)據(jù)是整型,那么可以確定三個(gè)有效等價(jià)類(正整數(shù)、零、負(fù)整數(shù))和一個(gè)無(wú)效等價(jià)類(非整數(shù))。(6) 如果輸入條件規(guī)定處理的對(duì)象是表格,那么可以確定一個(gè)有效等價(jià)類(表有一項(xiàng)或多項(xiàng))和一個(gè)無(wú)效等價(jià)類(空表)。以上只是列舉了一些規(guī)則,實(shí)際情況往往是千變?nèi)f化的,在遇到具體問(wèn)題時(shí),可參照上述規(guī)則的思想來(lái)劃分等價(jià)類。 設(shè)計(jì)測(cè)試用例在確定了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。并為每個(gè)有效等價(jià)類和無(wú)效等價(jià)類編號(hào)。 輸入條件有效等價(jià)類 無(wú)效等價(jià)類 利用等價(jià)類設(shè)計(jì)測(cè)試用例的步驟: (1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào)。 (2) 設(shè)計(jì)一個(gè)新的
15、測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止; (3) 為每個(gè)無(wú)效等價(jià)類設(shè)計(jì)一個(gè)新的測(cè)試用例。測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍例例: :某報(bào)表處理系統(tǒng)要求用戶某報(bào)表處理系統(tǒng)要求用戶輸入輸入處理報(bào)表處理報(bào)表 的的日期日期,日期限制在,日期限制在20032003年年1 1月至月至20082008年年 1212月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表 進(jìn)行處理,如日期不在此范圍內(nèi),則顯進(jìn)行處理,如日期不在此范圍內(nèi),則顯 示輸入錯(cuò)誤信息。示輸入錯(cuò)誤信息。 系統(tǒng)日期規(guī)定由年、月的系統(tǒng)日期規(guī)定由年、月的6 6位數(shù)字字符組位數(shù)字字符組 成,
16、前四位代表年,后兩位代表月。成,前四位代表年,后兩位代表月。 如何用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例如何用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例, , 來(lái)來(lái)測(cè)試程序的日期檢查功能?測(cè)試程序的日期檢查功能?第一步:等價(jià)類劃分第一步:等價(jià)類劃分輸入條件輸入條件 有效等價(jià)類有效等價(jià)類 無(wú)效等價(jià)類無(wú)效等價(jià)類 報(bào)表日期的報(bào)表日期的類型及長(zhǎng)度類型及長(zhǎng)度6 6位數(shù)字字符位數(shù)字字符(1)(1)有非數(shù)字字符有非數(shù)字字符 (4)(4)少于少于6 6個(gè)數(shù)字字符個(gè)數(shù)字字符 (5)(5)多于多于6 6個(gè)數(shù)字字符個(gè)數(shù)字字符 (6)(6)年份范圍年份范圍在在2003200320082008之間之間 (2)(2)小于小于2003 2003 (7)
17、(7)大于大于2008 2008 (8)(8)月份范圍月份范圍在在1 11212之間之間(3)(3)“報(bào)表日期報(bào)表日期”輸入條件的等價(jià)類表輸入條件的等價(jià)類表小于小于1 1 (9)(9)大于大于12 12 (10)(10)第二步:為有效等價(jià)類設(shè)計(jì)測(cè)試用例 測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍200306200306等價(jià)類等價(jià)類(1)(2)(3)(1)(2)(3)輸入有效輸入有效對(duì)表中編號(hào)為對(duì)表中編號(hào)為1,2,31,2,3的的3 3個(gè)有效等價(jià)類用一個(gè)測(cè)個(gè)有效等價(jià)類用一個(gè)測(cè)試用例覆蓋:試用例覆蓋:(1)(1)6 6位數(shù)字字符位數(shù)字字符(2)(2)年在年在2003200320082008之間之間 (3)(3)
18、月在月在1 11212之間之間第三步:為每一個(gè)無(wú)效等價(jià)類設(shè)至少 設(shè)計(jì)一個(gè)測(cè)試用例 測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍003003MAYMAY等價(jià)類等價(jià)類(4)(4)輸入無(wú)效輸入無(wú)效2003520035等價(jià)類等價(jià)類(5)(5)輸入無(wú)效輸入無(wú)效20030052003005等價(jià)類等價(jià)類(6)(6)輸入無(wú)效輸入無(wú)效200120010505等價(jià)類等價(jià)類(7)(7)輸入無(wú)效輸入無(wú)效200920090505等價(jià)類等價(jià)類(8)(8)輸入無(wú)效輸入無(wú)效200320030000等價(jià)類等價(jià)類(9)(9)輸入無(wú)效輸入無(wú)效200320031313等價(jià)類等價(jià)類(10)(10)輸入無(wú)效輸入無(wú)效不能出現(xiàn)相同不能出現(xiàn)相同的測(cè)試用例的測(cè)
19、試用例本例的本例的1010個(gè)等價(jià)類至個(gè)等價(jià)類至少需要少需要8 8個(gè)測(cè)試用例個(gè)測(cè)試用例例例: :對(duì)招生考試系統(tǒng)對(duì)招生考試系統(tǒng)“輸入學(xué)生成績(jī)輸入學(xué)生成績(jī)”子模塊子模塊 設(shè)計(jì)測(cè)試錄入準(zhǔn)考證號(hào)的測(cè)試用例設(shè)計(jì)測(cè)試錄入準(zhǔn)考證號(hào)的測(cè)試用例準(zhǔn)考證號(hào)數(shù)據(jù)格式定義:共準(zhǔn)考證號(hào)數(shù)據(jù)格式定義:共6 6位數(shù)字組成,其中位數(shù)字組成,其中第一位為專業(yè)代號(hào)第一位為專業(yè)代號(hào): :1 1- -行政專業(yè)行政專業(yè), ,2 2- -法律專業(yè),法律專業(yè),3 3- -財(cái)經(jīng)專業(yè)財(cái)經(jīng)專業(yè)后后5 5位為考生順序號(hào),編碼范圍為:位為考生順序號(hào),編碼范圍為: 行政專業(yè)準(zhǔn)考證號(hào)碼為行政專業(yè)準(zhǔn)考證號(hào)碼為: :1 110001100011 1112151
20、1215 法律專業(yè)準(zhǔn)考證號(hào)碼為法律專業(yè)準(zhǔn)考證號(hào)碼為: :2 210001100012 21200612006 財(cái)經(jīng)專業(yè)準(zhǔn)考證號(hào)碼為財(cái)經(jīng)專業(yè)準(zhǔn)考證號(hào)碼為: :3 310001100013 31401514015 準(zhǔn)考證號(hào)碼的等價(jià)類劃分準(zhǔn)考證號(hào)碼的等價(jià)類劃分 有效等價(jià)類有效等價(jià)類: : (1) 110001 (1) 110001 111215111215 (2) 210001 (2) 210001 212006212006 (3) 310001 (3) 310001 314015314015 無(wú)效等價(jià)類無(wú)效等價(jià)類: : (4) - (4) - 110000110000 (5) 111216 (5)
21、 111216 210000210000 (6) 212007 (6) 212007 310000310000 (7) 314016 (7) 314016 + + 練習(xí)1: 根據(jù)下面給出的規(guī)格說(shuō)明,利用等價(jià)類劃分的方法,給出足夠的測(cè)試用例。 一個(gè)程序讀入三個(gè)整數(shù)。把此三個(gè)數(shù)值看成是一個(gè)三角形的三個(gè)邊。這個(gè)程序要打印出信息,說(shuō)明這個(gè)三角形是三邊不等的、是等腰的、還是等邊的。解答: 設(shè)三角形的3條邊分別A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,還要判斷A=B,或B=C,或A=C。 如果是等邊的,則需判斷是否A=B,且B=
22、C,且A=C。解答: 設(shè)三角形的3條邊分別A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,還要判斷A=B,或B=C,或A=C。 如果是等邊的,則需判斷是否A=B,且B=C,且A=C。解答: 設(shè)三角形的3條邊分別A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,還要判斷A=B,或B=C,或A=C。 如果是等邊的,則需判斷是否A=B,且B=C,且A=C。課后作業(yè):課后作業(yè):城市的電話號(hào)碼由兩部分組成。這兩部分的名稱和內(nèi)容分別是:地區(qū)碼地區(qū)碼:以0開頭的三位或
23、者四位數(shù)字(包括0);電話號(hào)碼電話號(hào)碼:以非0、非1開頭的七位或者八位數(shù)字。假定被調(diào)試的程序能接受一切符合上述規(guī)定的電話號(hào)碼,拒絕所有不符合規(guī)定的號(hào)碼,就可用等價(jià)分類法來(lái)設(shè)計(jì)它的調(diào)試用例。請(qǐng)為寫出所有可能的有效等價(jià)類和無(wú)效等價(jià)類,并為所有的分類設(shè)計(jì)一個(gè)測(cè)試用例。 采用邊界值分析法來(lái)選擇測(cè)試用例,可使得被測(cè)程序能在邊界值及其附近運(yùn)行,從而更有效地暴露程序中潛藏的錯(cuò)誤。這里所說(shuō)的邊界值是指,相對(duì)與輸入等價(jià)類和輸出等價(jià)類而言,稍高于或稍低于其邊界值的一些特定情況。 針對(duì)邊界值設(shè)計(jì)測(cè)試用例時(shí),應(yīng)注意遵循以下幾條原則:1.如果輸入條件規(guī)定了取值范圍,或是規(guī)定了值的個(gè)數(shù),則應(yīng)以該范圍的邊界內(nèi)及剛剛超出范圍
24、的邊界外的值,或是分別取最大,最小個(gè)數(shù)及稍小于最小,稍大于最大個(gè)數(shù)作為測(cè)試用例。例如:某一個(gè)問(wèn)題規(guī)格說(shuō)明規(guī)定:“某輸入文件可包含1至255個(gè)記錄.”,則測(cè)試用例可取1和255,還應(yīng)取0及256等。 針對(duì)邊界值設(shè)計(jì)測(cè)試用例時(shí),應(yīng)注意遵循以下幾條原則:2.針對(duì)規(guī)格說(shuō)明的每個(gè)輸出條件使用前面的第1條原則。 例如:情報(bào)檢索系統(tǒng)要求每次最多顯示4條情報(bào)摘要,這時(shí),我們應(yīng)考慮的測(cè)試用例包括1和4,還應(yīng)包括0和5等。 針對(duì)邊界值設(shè)計(jì)測(cè)試用例時(shí),應(yīng)注意遵循以下幾條原則:3.如果程序規(guī)格說(shuō)明中提到的輸入或輸出域是個(gè)有序的集合(如順序文件,表格等),就應(yīng)注意選取有序集的第一個(gè)和最后一個(gè)元素作為測(cè)試用例。(1)等價(jià)
25、分類法的測(cè)試數(shù)據(jù)是在各個(gè)等價(jià)類允許的值域內(nèi)任意選取的,而邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,邊界值分析法的測(cè)試數(shù)據(jù)必須在邊界值附近選取。(2)一般來(lái)說(shuō),用邊界值分析法設(shè)計(jì)的測(cè)試用例要比等價(jià)分 類法的代表性更廣,發(fā)現(xiàn)錯(cuò)誤的能力也更強(qiáng)。但是對(duì)邊 界的分析與確定比較復(fù)雜,它要求測(cè)試人員具有更多的 經(jīng)驗(yàn)。被測(cè)試被測(cè)試子子 域域測(cè)試內(nèi)點(diǎn)測(cè)試內(nèi)點(diǎn)測(cè)試外點(diǎn)測(cè)試外點(diǎn) 如果在懸崖峭壁邊如果在懸崖峭壁邊可以自信地安全行走,可以自信地安全行走,平地就不在話下。平地就不在話下。 如果軟件在能力達(dá)如果軟件在能力達(dá)到極限時(shí)能夠運(yùn)行,那到極限時(shí)能夠運(yùn)行,那么在正常情況下就不會(huì)么在正常情況下就不會(huì)出什么問(wèn)題出什么問(wèn)
26、題。軟件邊界與懸崖很類似輸入輸入條件條件報(bào)表日?qǐng)?bào)表日期的類期的類型及長(zhǎng)型及長(zhǎng)度度5 5個(gè)數(shù)字字符個(gè)數(shù)字字符7 7個(gè)數(shù)字字符個(gè)數(shù)字字符6 6個(gè)數(shù)字字符個(gè)數(shù)字字符有有1 1個(gè)非數(shù)字字符個(gè)非數(shù)字字符全部是非數(shù)字字符全部是非數(shù)字字符顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)日期日期范圍范圍月份月份范圍范圍“報(bào)表日期報(bào)表日期”邊界值分析法測(cè)試用邊界值分析法測(cè)試用例例測(cè)試用例說(shuō)明測(cè)試用例說(shuō)明測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù) 期望結(jié)果期望結(jié)果選取理由選取理由2003520035200300520030052003052003052003.52003.5MAY-MAY-月份為月份為1 1
27、月月月份為月份為1212月月月份月份11212200301200301200312200312200300200300200313200313200301200301200812200812200212200212200901200901輸入有效輸入有效輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)輸入有效輸入有效輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)在有效范圍在有效范圍邊界上選取邊界上選取數(shù)據(jù)數(shù)據(jù)比有效長(zhǎng)度少比有效長(zhǎng)度少1 1比有效長(zhǎng)度多比有效長(zhǎng)度多1 1類型及長(zhǎng)度均有效類型及長(zhǎng)度均有效只有只有1 1個(gè)非法字符個(gè)非法字符6 6個(gè)非法字符個(gè)非法字符最小日期最小日期最大日期最大日期剛
28、好小于最小日期剛好小于最小日期剛好大于最大日期剛好大于最大日期最小月份最小月份最大月份最大月份剛好小于最小月份剛好小于最小月份剛好大于最大月份剛好大于最大月份 通常,可由二支軟件開發(fā)隊(duì)伍,根據(jù)相同的需求規(guī)格說(shuō)明分別開發(fā)二個(gè)軟件版本,然后,用相同的測(cè)試用例對(duì)二個(gè)版本的軟件分別進(jìn)行測(cè)試,比較二個(gè)版本軟件的測(cè)試結(jié)果,如果測(cè)試結(jié)果相同,則可認(rèn)為二個(gè)版本的軟件都是正確的,如果測(cè)試結(jié)果不同,則要分析各個(gè)版本,以發(fā)現(xiàn)錯(cuò)誤的所在。這種測(cè)試稱為比較測(cè)試或稱為背靠背測(cè)試(backtoback testing)。大多數(shù)情況下,可用自動(dòng)化工具來(lái)進(jìn)行比較測(cè)試。 值得注意的是,比較測(cè)試并不能保證軟件沒(méi)有錯(cuò)誤,如果規(guī)格說(shuō)明
29、本身有錯(cuò),那么所有的版本都可能反映這種錯(cuò)誤。 另外,如果各個(gè)版本產(chǎn)生相同的但都不正確的結(jié)果,那么比較測(cè)試也無(wú)法發(fā)現(xiàn)這種錯(cuò)誤。 錯(cuò)誤猜測(cè)是一種憑直覺(jué)和經(jīng)驗(yàn)推測(cè)某些可能存在的錯(cuò)誤,從而針對(duì)這些可能存在的錯(cuò)誤設(shè)計(jì)測(cè)試用例的方法。 錯(cuò)誤猜測(cè)法的基本思想是:列舉出程序中所有可能的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,然后根據(jù)這些猜測(cè)設(shè)計(jì)測(cè)試用例。 沒(méi)有確定的步驟,很大程度上是憑經(jīng)驗(yàn)沒(méi)有確定的步驟,很大程度上是憑經(jīng)驗(yàn)進(jìn)行的進(jìn)行的。 例如輸入數(shù)據(jù)為零或輸出數(shù)據(jù)為零是容易發(fā)生錯(cuò)誤的情況,所以可選擇輸入值為零的例子,以及使輸出值為零的例子; 又如輸入表格為“空”或輸入表格只有一行是較易出錯(cuò)誤的情況,所以可選擇表示這些情
30、況的例子?!臼纠繙y(cè)試一個(gè)對(duì)線性表(比如數(shù)組)進(jìn)行排序的程序,可推測(cè)列出以下幾項(xiàng)需要特別測(cè)試的情況:u 輸入線性表為空;u 表中只有一個(gè)元素;u 輸入表中所有元素已排好序;u 輸入表已按逆序拍好;u 輸入表中部分或全部元素相同。 在等價(jià)類劃分方法和邊界值方法中未考慮輸入條件的各種組合,當(dāng)輸入條件比較多時(shí),輸入條件組合的數(shù)目會(huì)相當(dāng)大 因果圖方法是一種幫助人們系統(tǒng)地選擇一組高效測(cè)試用例的方法,它既考慮了輸入條件的組合關(guān)系,又考慮了輸出條件對(duì)輸入條件的依賴關(guān)系,即因果關(guān)系,其測(cè)試用例發(fā)現(xiàn)錯(cuò)誤的效率比較高。 因果圖方法的特點(diǎn)是:考慮輸入條件的組合關(guān)系;考慮輸入條件的組合關(guān)系;考慮輸出條件對(duì)輸入條件的依
31、賴關(guān)系,考慮輸出條件對(duì)輸入條件的依賴關(guān)系,即因果關(guān)系;即因果關(guān)系;測(cè)試用例發(fā)現(xiàn)錯(cuò)誤的效率高;測(cè)試用例發(fā)現(xiàn)錯(cuò)誤的效率高;能檢查出功能說(shuō)明中的某些不一致或遺能檢查出功能說(shuō)明中的某些不一致或遺漏。漏。 用因果圖設(shè)計(jì)測(cè)試用例的步驟:(1) 分割功能說(shuō)明書 將輸入條件分成若干組,然后分別對(duì)每個(gè)組使用因果圖,這樣可減少輸入條件組合的數(shù)目。如測(cè)試編譯程序時(shí),可以將每個(gè)語(yǔ)句作為一組。 (2) 識(shí)別“原因”和“結(jié)果”,并加以編號(hào) “原因”是指輸入條件或輸入條件的等價(jià)類;“結(jié)果”是指輸出條件或系統(tǒng)變換。如,更新主文件就是一種系統(tǒng)變換。 每個(gè)原因和結(jié)果都對(duì)應(yīng)于因果圖中的一個(gè)結(jié)點(diǎn),當(dāng)原因或結(jié)果成立(或出現(xiàn))時(shí),相應(yīng)的
32、結(jié)點(diǎn)的值為1,否則為0。(3) 根據(jù)功能說(shuō)明中規(guī)定的原因與結(jié)果之間的關(guān)系畫出因果圖 因果圖的基本符號(hào)如下:ba恒等恒等ba非非 abcd或或abcd 與與 圖中左邊的結(jié)點(diǎn)表示原因,右邊的結(jié)點(diǎn)表示結(jié)果 原因和結(jié)果之間的關(guān)系有:恒等:若恒等:若a=1,則,則b=1;若;若a=0,則,則b=0非:若非:若a=1,則,則b=0;若;若a=0,則,則b=1或:若或:若a=1或或b=1 或或c=1 ,則,則d=1;否則;否則d=0與:若與:若a=b=c=1 ,則,則d=1;否則;否則d=0 畫因果圖時(shí)原因在左,結(jié)果在右,由上向畫因果圖時(shí)原因在左,結(jié)果在右,由上向下排列下排列,并根據(jù)功能說(shuō)明中規(guī)定的原因和結(jié)
33、果之間的關(guān)系,用上述符號(hào)連接起來(lái)。必要時(shí)還可以引入一些中間結(jié)點(diǎn)。(4) 根據(jù)功能說(shuō)明在因果圖中加上約束條件 因果圖的約束條件如下圖所示:要求要求RbabaM屏蔽屏蔽互斥互斥abcE包含包含abcI唯一唯一abcO 圖中互斥、包含、唯一、要求是對(duì)原因的約束,屏蔽是對(duì)結(jié)果的約束互斥:表示互斥:表示a、b、c中至多只有一個(gè)為中至多只有一個(gè)為1,即不,即不同時(shí)為同時(shí)為1包含:表示包含:表示a、b、c中至少有一個(gè)為中至少有一個(gè)為1,即不同,即不同時(shí)為時(shí)為0唯一:表示唯一:表示a、b、c中有且僅有一個(gè)中有且僅有一個(gè)1要求:表示若要求:表示若a=1 ,則要求,則要求b必須為必須為1,即不可,即不可出現(xiàn)出現(xiàn)a
34、=1 且且b=0屏蔽:表示若屏蔽:表示若a=1 ,則,則b必須為必須為0,即不可出現(xiàn),即不可出現(xiàn)a=1 且且b=1(5) 根據(jù)因果圖畫出判定表(決策表) 列出滿足約束條件的所有原因組合,寫出每種原因組合下的結(jié)果(如有的話)原原因因允許的原因組合允許的原因組合中間中間結(jié)點(diǎn)結(jié)點(diǎn)各種原因組合下中間結(jié)點(diǎn)的值各種原因組合下中間結(jié)點(diǎn)的值結(jié)結(jié)果果各種原因組合下的結(jié)果值各種原因組合下的結(jié)果值(6)為判定表的每一列設(shè)計(jì)一個(gè)測(cè)試用例,有一個(gè)處理單價(jià)為5角錢的飲料自動(dòng)售貨機(jī)軟件,其規(guī)格說(shuō)明如下: 飲料自動(dòng)售貨機(jī)允許投入5角或1元的硬幣,用戶可通過(guò)“橙汁”和“啤酒”按鈕選擇飲料,售貨機(jī)還裝有一個(gè)表示“零錢找完”的指示
35、燈,當(dāng)售貨機(jī)中有零錢找時(shí)指示燈暗,當(dāng)售貨機(jī)中無(wú)零錢找時(shí)指示燈亮。當(dāng)用戶投入5角硬幣并押下“橙汁”或“啤酒”按鈕后,售貨機(jī)送出“橙汁”或“啤酒” 。當(dāng)用戶投入1元硬幣并押下“橙汁”或“啤酒”按鈕后,如果售貨機(jī)有零錢找,則送出相應(yīng)的飲料,并退還5角硬幣;如果售貨機(jī)沒(méi)有零錢找,則飲料不送出,并且退還1元硬幣。分析規(guī)格說(shuō)明,列出原因和結(jié)果規(guī)格說(shuō)明中的紅色部分是輸入條件(原因),藍(lán)色部分是輸出條件(結(jié)果)。 由于“售貨機(jī)有零錢找”是在投入1元硬幣時(shí)判斷是否能找零錢的依據(jù),所以也可把它看作是一個(gè)輸入條件,即原因。與之對(duì)應(yīng)的結(jié)果是售貨機(jī)指示燈亮(或暗)。 原因 結(jié)果(1)售貨機(jī)有零錢找(21)售貨機(jī)“零錢找
36、完”燈亮(2)投入1元硬幣(22)退還1元硬幣(3)投入5角硬幣(23)退還5角硬幣(4)押下“橙汁”按鈕(24)送出“橙汁”飲料(5)押下“啤酒”按鈕(25)送出“啤酒”飲料(2) 畫出因果圖。所有原因結(jié)點(diǎn)列在左邊,所有結(jié)果結(jié)點(diǎn)列在右邊。 其中中間結(jié)點(diǎn)的含義如下: (11)投入1元硬幣且押下飲料按鈕 (12)押下“橙汁”或“啤酒”按鈕 (13)應(yīng)找5角硬幣且售貨機(jī)有零錢找 (14)錢已付清 (3) 由于原因 2 與 3 ,4 與 5 不能同時(shí)發(fā)生,分別加上約束條件E。(4) 根據(jù)因果圖畫出判定表(5) 根據(jù)判定表設(shè)計(jì)測(cè)試用例 最后,驅(qū)除無(wú)效用例,合并判定表,寫出對(duì)應(yīng)測(cè)試最后,驅(qū)除無(wú)效用例,合
37、并判定表,寫出對(duì)應(yīng)測(cè)試用例即可。用例即可。練習(xí):某軟件規(guī)格說(shuō)明書包含這樣的要求:第一列字符必須是A或B,第二列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改,但如果第一列字符不正確,則給出信息L;如果第二列字符不是數(shù)字,則給出信息M。請(qǐng)根據(jù)題目完成以下操作:(1)要求畫出因果圖;(2)并根據(jù)因果圖建立判定表;練習(xí):某軟件規(guī)格說(shuō)明書包含這樣的要求:第一列字符必須是A或B,第二列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改,但如果第一列字符不正確,則給出信息L;如果第二列字符不是數(shù)字,則給出信息M。請(qǐng)根據(jù)題目完成以下操作:(1)要求畫出因果圖;(2)并根據(jù)因果圖建立判定表;作業(yè):作業(yè):作業(yè):作業(yè):6
38、3/161黑盒測(cè)試選擇黑盒測(cè)試選擇n 1.在任何情況下都在任何情況下都必須選擇邊界值分析方法必須選擇邊界值分析方法。經(jīng)驗(yàn)表。經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最明用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng);強(qiáng);n 2.必要時(shí)用必要時(shí)用等價(jià)類劃分法等價(jià)類劃分法補(bǔ)充一些測(cè)試用例;補(bǔ)充一些測(cè)試用例;n 3.用用錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法再追加一些測(cè)試用例;再追加一些測(cè)試用例;n 4.如果程序的功能說(shuō)明中含有輸入條件的組合情況,如果程序的功能說(shuō)明中含有輸入條件的組合情況,則可選用則可選用因果圖法因果圖法。 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ) 黑盒測(cè)試黑盒測(cè)試 測(cè)試策略測(cè)試策略 面向?qū)ο鬁y(cè)試面向?qū)ο?/p>
39、測(cè)試 測(cè)試完成標(biāo)準(zhǔn)測(cè)試完成標(biāo)準(zhǔn) 調(diào)試調(diào)試n 白盒測(cè)試,有時(shí)也稱為玻璃盒測(cè)試,它關(guān)注軟件產(chǎn)品的內(nèi)部細(xì)節(jié)和邏輯結(jié)構(gòu),即把被測(cè)的程序看成是一個(gè)透明的盒子。白盒測(cè)試?yán)脴?gòu)件層設(shè)計(jì)的一部分而描述的控制結(jié)構(gòu)來(lái)生成測(cè)試用例。白盒測(cè)試需要對(duì)系統(tǒng)內(nèi)部結(jié)構(gòu)和工作原理有一個(gè)清楚的了解。 白盒測(cè)試示意圖白盒測(cè)試示意圖常用的白盒測(cè)試方法有: 代碼檢查法 靜態(tài)結(jié)構(gòu)分析 程序插樁技術(shù) 邏輯覆蓋法 基本路徑法 數(shù)據(jù)流測(cè)試 循環(huán)測(cè)試n 代碼檢查法 代碼檢查法包括桌面檢查、代碼審查和走查等。它主要檢查代碼和設(shè)計(jì)的一致性,代碼對(duì)標(biāo)準(zhǔn)的遵循,可讀性,代碼邏輯表達(dá)正確性,代碼結(jié)構(gòu)合理性等方面;n 靜態(tài)結(jié)構(gòu)分析法 靜態(tài)結(jié)構(gòu)分析主要是以圖
40、的形式表現(xiàn)程序的內(nèi)部結(jié)構(gòu),供測(cè)試人員對(duì)程序結(jié)構(gòu)進(jìn)行分析。靜態(tài)結(jié)構(gòu)分析是一種對(duì)代碼機(jī)械性的、程式化的特性進(jìn)行分析的方法。在靜態(tài)結(jié)構(gòu)分析中,測(cè)試者通過(guò)使用測(cè)試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖、子程序表、宏和函數(shù)參數(shù)表等各類圖形圖表n 程序插樁技術(shù) 程序插樁技術(shù)是借助往被測(cè)程序中插入操作來(lái)實(shí)現(xiàn)測(cè)試目的的方法,即向源程序中添加一些語(yǔ)句,實(shí)現(xiàn)對(duì)程序語(yǔ)句的執(zhí)行、變量的變化等情況進(jìn)行檢查。例如想要了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)行語(yǔ)句被覆蓋的情況,或是每個(gè)語(yǔ)句的實(shí)際執(zhí)行次數(shù),就可以利用程序插樁技術(shù)。最簡(jiǎn)單的插樁:在程序中插入
41、打印最簡(jiǎn)單的插樁:在程序中插入打印printf(“”););語(yǔ)句。語(yǔ)句。 語(yǔ)句覆蓋語(yǔ)句覆蓋 判定覆蓋判定覆蓋 條件覆蓋條件覆蓋 判定條件覆蓋判定條件覆蓋 條件組合覆蓋條件組合覆蓋 路徑覆蓋路徑覆蓋邏輯覆蓋法以程序內(nèi)在的邏輯結(jié)構(gòu)為基邏輯覆蓋法以程序內(nèi)在的邏輯結(jié)構(gòu)為基礎(chǔ),礎(chǔ),根據(jù)程序的流程圖根據(jù)程序的流程圖設(shè)計(jì)測(cè)試用例。邏輯設(shè)計(jì)測(cè)試用例。邏輯覆蓋主要考察使用測(cè)試數(shù)據(jù)運(yùn)行被測(cè)程序時(shí)覆蓋主要考察使用測(cè)試數(shù)據(jù)運(yùn)行被測(cè)程序時(shí)對(duì)程序邏輯的覆蓋程度。對(duì)程序邏輯的覆蓋程度。通常希望選擇最少通常希望選擇最少的測(cè)試用例來(lái)滿足所需的覆蓋標(biāo)準(zhǔn)的測(cè)試用例來(lái)滿足所需的覆蓋標(biāo)準(zhǔn)。主要的。主要的覆蓋標(biāo)準(zhǔn)有:覆蓋標(biāo)準(zhǔn)有:1、用流
42、程圖描述程序、用流程圖描述程序(流程圖、(流程圖、N-S圖、圖、PAD圖)圖)2、運(yùn)用邏輯覆蓋法設(shè)計(jì)測(cè)試用例、運(yùn)用邏輯覆蓋法設(shè)計(jì)測(cè)試用例覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果開始開始(A1)AND(B=0)(A=2)OR(X1)結(jié)束結(jié)束X=X/AX=X+1FFTTabdcevoid sampal(int A, int B, int X) if (A1)&(B=0) ) X /=A; if (A=2)|(X1) ) X+=1;printf(“%d,%d,%d”,A,B,X);例:對(duì)下列子程序進(jìn)行測(cè)試?yán)簩?duì)下列子程序進(jìn)行測(cè)試 覆蓋標(biāo)準(zhǔn)覆蓋標(biāo)準(zhǔn) : 使得程序中使得程序中
43、每個(gè)語(yǔ)句每個(gè)語(yǔ)句至少都能被執(zhí)行一次。至少都能被執(zhí)行一次。滿足語(yǔ)句覆蓋的情況是:滿足語(yǔ)句覆蓋的情況是: 執(zhí)行路徑:執(zhí)行路徑:aceace選擇用例:選擇用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3)用例格式用例格式: :由由輸入數(shù)據(jù)輸入數(shù)據(jù)和和預(yù)期的輸出結(jié)預(yù)期的輸出結(jié)果果兩部分組成:兩部分組成: 輸入輸入(A,B,X)(A,B,X),輸出,輸出(A,B,X)(A,B,X)aA1ANDB=0X=X/AA=2ORX1X=X+1bcdeYNYN程序中除判定外,還有兩條語(yǔ)句。程序中除判定外,還有兩條語(yǔ)句。覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果語(yǔ)句覆蓋語(yǔ)句覆
44、蓋A1ANDB=0A=2ORX12 2,0 0,4 42 2,0 0,3 3覆蓋標(biāo)準(zhǔn):覆蓋標(biāo)準(zhǔn): 使得程序中使得程序中每個(gè)判定每個(gè)判定至少為至少為TRUE TRUE 或或FALSEFALSE各一次。各一次。覆蓋情況:共有兩個(gè)判定,應(yīng)執(zhí)行路徑:覆蓋情況:共有兩個(gè)判定,應(yīng)執(zhí)行路徑:ace ace 和和 abdabd,或或 acdacd 和和 abeabe選擇用例,選擇用例, 兩組用例中兩組用例中任選擇其一任選擇其一 (2,0,4),(2,0,3) ace(2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd(1,1,1),(1,1,1) abd (2,1,1),(2,1,2
45、) abe(2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd(3,0,3),(3,1,1) acdA1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果判定覆蓋判定覆蓋A1ANDB=0A=2ORX12 2,0 0,4 42 2,0 0,3 3A1, A1, B=0, B0: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1: A=2, A2, X1, X1選擇用例:選擇用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3) (1,1,1),(1
46、,1,1)(1,1,1),(1,1,1)注意注意:(1,0,3),(1,0,4) :(1,0,3),(1,0,4) (abeabe) (2,1,1),(2,1,2) (2,1,1),(2,1,2) (abeabe)滿足條件覆蓋,但不滿足判定覆蓋。滿足條件覆蓋,但不滿足判定覆蓋。A1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN判定一判定一判定二判定二覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果條件覆蓋:條件覆蓋:以下以下8種情種情況 各 出 現(xiàn)況 各 出 現(xiàn)一次:一次:A1, A1, A1,B=0, A1,B=0, B0B0A=2, A2, A=2,
47、A2, X1, X1X1, X1A1,B=0A=2,X12 2,0 0,4 42 2,0 0,3 3A1A1,B00X1,A2X1,A21,1,11,1,1覆蓋標(biāo)準(zhǔn):覆蓋標(biāo)準(zhǔn): 同時(shí)滿足判定覆蓋和條件覆蓋同時(shí)滿足判定覆蓋和條件覆蓋。即使得程。即使得程序中每個(gè)判定至少為序中每個(gè)判定至少為TRUE TRUE 或或 FALSEFALSE各一次,各一次,同時(shí)使得判定中的每個(gè)條件獲得各種可能的同時(shí)使得判定中的每個(gè)條件獲得各種可能的結(jié)果。結(jié)果。應(yīng)滿足以下覆蓋情況:應(yīng)滿足以下覆蓋情況: 條件覆蓋條件覆蓋: A1, A1, B=0, B0: A1, A1, B=0, B0A=2, A2, X1, X1A=2,
48、 A2, X1, X1 判定覆蓋:判定覆蓋:ace ace 和和 abd abd或或 acd acd 和和 abe abe選擇用例:選擇用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd)(1,1,1),(1,1,1) (abd)A1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果判定判定/條件覆蓋:條件覆蓋:每 個(gè) 判 定每 個(gè) 判 定至 少 為 真至 少 為 真或 假 各 一或 假 各 一次,次,并且并且以下以下8種情種情況 各
49、出 現(xiàn)況 各 出 現(xiàn)一次:一次:A1, A1, A1,B=0, A1,B=0, B0B0A=2, A2, A=2, A2, X1, X1X1, X1判定一為真,判定一為真,判定二為真;判定二為真;覆蓋條件:覆蓋條件:A1,B=0A=2,X12 2,0 0,4 42 2,0 0,3 3判定一為假,判定一為假,判定二為假;判定二為假;覆蓋條件:覆蓋條件:A1A1,B00X1,A2X1,A21,1,11,1,1A1X=X/AA=2X=X+1abcdeB=0X1YNYNYNYN雖然采用雖然采用判定判定/條件覆蓋條件覆蓋一般比前一般比前面幾種覆蓋標(biāo)準(zhǔn)要好,但若考慮在編面幾種覆蓋標(biāo)準(zhǔn)要好,但若考慮在編譯系
50、統(tǒng)下執(zhí)行時(shí),譯系統(tǒng)下執(zhí)行時(shí),對(duì)條件對(duì)條件“AND”和和“OR”的處理情況,部分路徑未被執(zhí)的處理情況,部分路徑未被執(zhí)行。行。例如,紅線所標(biāo)注的路徑未被執(zhí)行。例如,紅線所標(biāo)注的路徑未被執(zhí)行。例如:沒(méi)有考慮例如:沒(méi)有考慮A1, B0 B0,A2A2,X1X1這這種條件組合的情況。種條件組合的情況。編譯系統(tǒng)下的執(zhí)行情況考慮到程序在編譯狀態(tài)下的執(zhí)行情考慮到程序在編譯狀態(tài)下的執(zhí)行情況,可采用最深的一種覆蓋標(biāo)準(zhǔn)況,可采用最深的一種覆蓋標(biāo)準(zhǔn)條件條件組合覆蓋。組合覆蓋。ANDOR判定判定/條件覆蓋條件覆蓋選擇用例:選擇用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3)(ace) ace) A1
51、 A1 ,B=0, A=2 B=0, A=2 ,X1 X1 (1,1,1),(1,1,1) (abd)(1,1,1),(1,1,1) (abd) A1, B0 ,A2, X1 A1, B0 ,A2, X1 覆蓋標(biāo)準(zhǔn):覆蓋標(biāo)準(zhǔn): 使得每個(gè)判定中使得每個(gè)判定中條件的各種可能組合條件的各種可能組合都都至少出現(xiàn)一次。至少出現(xiàn)一次。滿足以下覆蓋情況:滿足以下覆蓋情況:A1,B=0A1,B0A1,B0A1,B=0A=2,X1A=2,X1A2,X1A2,X1選擇用例:選擇用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) 覆蓋情況 (2,1,1),(2,1,2) (2,1,1),(2,1,
52、2) 覆蓋情況 (1,0,3),(1,0,4) (1,0,3),(1,0,4) 覆蓋情況 (1,1,1),(1,1,1) (1,1,1),(1,1,1) 覆蓋情況 判定一判定二顯然,條件組合覆蓋所測(cè)試的情況最多,但是選擇用例較多,相對(duì)難度也大些。顯然,條件組合覆蓋所測(cè)試的情況最多,但是選擇用例較多,相對(duì)難度也大些。 編譯系統(tǒng)下的執(zhí)行情況A1X:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果條件組合覆蓋:條件組合覆蓋:條件的各種可能組合都至少條件的各種可能組合都至少出現(xiàn)一次:出現(xiàn)一次:判定一:判定一:A1,B=0
53、A1,B0A1,B0A1,B=0判定二:判定二:A=2,X1A=2,X1A2,X1A2,X12 2,0 0,4 42 2,0 0,3 3 2,1,12,1,2 1,0,31,0,4 1,1,11,1,1 路徑覆蓋是指選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),被測(cè)程序的每條可能執(zhí)行到的路徑都至少經(jīng)過(guò)一次(如果程序中包含環(huán)路,則要求每條環(huán)路至少經(jīng)過(guò)一次) 覆蓋標(biāo)準(zhǔn): 被測(cè)程序的每條可能執(zhí)行到的路徑都至少經(jīng)過(guò)一次。路徑覆蓋應(yīng)執(zhí)行路徑:ace,acd,abe ,abd選擇用例,每個(gè)路徑選擇一個(gè)用例(2,0,4),(2,0,3) ace(3,0,3),(3,0,1) acd (2,1,1),(2,1,
54、2) abe(1,1,1),(1,1,1) abd A1 AND B=0X=X/A A=2 OR X1X=X+1abcdeYNYN覆蓋種類覆蓋種類需滿足條件需滿足條件測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)預(yù)期結(jié)果預(yù)期結(jié)果路徑覆蓋:路徑覆蓋:每條可能執(zhí)行每條可能執(zhí)行到的路徑都至到的路徑都至少經(jīng)過(guò)一次:少經(jīng)過(guò)一次:ace,acdacd,abe,abdabdace2 2,0 0,4 42 2,0 0,3 3acdacd3,0,33,0,1abe2,1,12,1,2abdabd1,1,11,1,1 路徑覆蓋實(shí)際上考慮了程序中各種判定結(jié)果的所有可能組合,但它未必能覆蓋判定中條件結(jié)果的各種可能情況。因此,它是一種比較強(qiáng)的覆蓋標(biāo)
55、準(zhǔn),但不能替代條件覆蓋和條件組合覆蓋標(biāo)準(zhǔn)。 一般情況下,這幾種覆蓋法的覆蓋率是不一樣的,其中路徑覆蓋的覆蓋率最高,語(yǔ)句覆蓋的覆蓋率最低。發(fā)現(xiàn)錯(cuò)誤的能力覆蓋標(biāo)準(zhǔn)含 義(弱)語(yǔ)句覆蓋每條語(yǔ)句至少執(zhí)行一次判定覆蓋每一判定的每個(gè)分支至少執(zhí)行一次條件覆蓋每一判定中的每個(gè)條件,分別按“真”、“假”至少各執(zhí)行一次判定/條件覆蓋同時(shí)滿足判定覆蓋和條件覆蓋的要求條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次(強(qiáng))路徑覆蓋程序中每一條可能的路徑至少執(zhí)行一次輸入輸入A,B,C,D(A0)AND(B0)X=A-BX=A+B(CA)OR(D0&B0CA | D0&B0CA | D0、B0
56、、CA 、D0、B0、CA 、D0,B0A0,B0A0,B0A0,B0CA,DA,DBCA,D 0) if(0= =iType) x=y+2; break; else if (1= =iType)x=y+10; else x=y+20; 1. 912第一步:畫出其程序流程圖和對(duì)應(yīng)的控制流圖第一步:畫出其程序流程圖和對(duì)應(yīng)的控制流圖G。467810111314467148101113程序流程圖 控制流圖912912對(duì)應(yīng)上面圖中的環(huán)形復(fù)雜度,對(duì)應(yīng)上面圖中的環(huán)形復(fù)雜度,計(jì)算如下:(三種方法任選計(jì)算如下:(三種方法任選一種)一種) 流圖中有流圖中有四四個(gè)區(qū)域;個(gè)區(qū)域; V(G)=10條邊條邊-8結(jié)點(diǎn)結(jié)點(diǎn)
57、+2=4; V(G)=3個(gè)判定結(jié)點(diǎn)個(gè)判定結(jié)點(diǎn)+1=4。第二步:計(jì)算環(huán)路復(fù)雜度第二步:計(jì)算環(huán)路復(fù)雜度V(G)。根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑徑。(一條獨(dú)立路徑是指,和其他的獨(dú)立路一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新判斷的程序通路。判斷的程序通路。V(G)V(G)值正好等于該程序的值正好等于該程序的獨(dú)立路徑的條數(shù)。獨(dú)立路徑的條數(shù)。)路徑路徑1:4-14路徑路徑2:4-6-7-14路徑路徑3:4-6-9-10-13-4-14路徑路徑4:4-6-9-12-13-4-14第三步:找出程
58、序線性無(wú)關(guān)的基本路徑集第三步:找出程序線性無(wú)關(guān)的基本路徑集根據(jù)上一步分析得到的獨(dú)立路徑,去根據(jù)上一步分析得到的獨(dú)立路徑,去設(shè)計(jì)輸設(shè)計(jì)輸入數(shù)據(jù)入數(shù)據(jù)使稱序分別執(zhí)行到上面四條路徑,并使稱序分別執(zhí)行到上面四條路徑,并寫出寫出預(yù)期結(jié)果預(yù)期結(jié)果。路徑路徑1:4-14輸入數(shù)據(jù)輸入數(shù)據(jù):iRecordNum0,iType=0或者取或者取iRecordNum 0) if(0= =iType) x=y+2; break; else if(1= =iType) x=y+10; else x=y+20; 1. 第四步:第四步:生成測(cè)試用例,以保證每一條路徑可以被測(cè)試。生成測(cè)試用例,以保證每一條路徑可以被測(cè)試。程序代
59、碼:程序代碼:1)#include2)main()3)4)int A,B,C;5)printf(請(qǐng)輸入三角形的三條邊:請(qǐng)輸入三角形的三條邊:);6)scanf(%d %d %d,&A,&B,&C);7)if(A0&B0&C0)&(A+B)C&(A+C)B&(B+C)A)8) 9) if(A=B&A=C)10)printf(該三角形是等邊三角形!該三角形是等邊三角形!n);11) else12) if(A=B&B!=C)|(B=C&B!=A)|(A=C&A!=B)13) printf(該三角形是等腰三角形!該三角形是等腰三角形!n);14) else15) printf(該三角形是普通三角形!該
60、三角形是普通三角形!n);16) 17)else18)19) printf(ERROR!n);20) return main();21)22)程序流程圖:程序流程圖:107開始開始19917121314151620結(jié)束結(jié)束1122107開始開始19917121314151620結(jié)束結(jié)束1122第一步:畫出其程序流程圖和對(duì)應(yīng)的控制流圖第一步:畫出其程序流程圖和對(duì)應(yīng)的控制流圖G。計(jì)算環(huán)路復(fù)雜度計(jì)算環(huán)路復(fù)雜度:圖中域的個(gè)數(shù)為圖中域的個(gè)數(shù)為4;V(G)=E-N+2=11-9+2=4;V(G)=P+1=3+1=4。第二步:計(jì)算環(huán)路復(fù)雜度第二步:計(jì)算環(huán)路復(fù)雜度V(G)。根據(jù)上面的計(jì)算方法,可得出四根據(jù)上面
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 古詩(shī)文中意象表達(dá)技巧指導(dǎo)
- 項(xiàng)目進(jìn)度說(shuō)明文書
- 童話故事兒童劇解讀
- 理賠案件統(tǒng)計(jì)分析表
- 企業(yè)并購(gòu)重組科技成果轉(zhuǎn)化合作協(xié)議
- 農(nóng)場(chǎng)租賃合同
- 農(nóng)業(yè)生產(chǎn)綠色低碳發(fā)展與實(shí)踐路徑
- 提升客戶服務(wù)質(zhì)量的具體措施方案
- 規(guī)章制度匯編-員工手冊(cè)
- 城市綠化項(xiàng)目合作施工合同
- 細(xì)胞內(nèi)蛋白質(zhì)的分選和運(yùn)輸細(xì)胞生物學(xué)-1
- 納米生物醫(yī)用材料課件
- 第十章可持續(xù)發(fā)展理論與實(shí)踐課件
- 電氣基礎(chǔ)知識(shí)培訓(xùn)要點(diǎn)課件
- 洗浴中心轉(zhuǎn)讓合同(5篇)
- 外研版小學(xué)英語(yǔ)五年級(jí)下冊(cè)課文翻譯
- YY-T 1823-2022 心血管植入物 鎳鈦合金鎳離子釋放試驗(yàn)方法
- 年產(chǎn)12000噸水合肼(100%)項(xiàng)目環(huán)評(píng)報(bào)告書
- 鉆芯法檢測(cè)混凝土抗壓強(qiáng)度原始記錄1
- 液壓支架與泵站(第二版)課件匯總?cè)珪娮咏贪竿暾嬲n件最全幻燈片(最新)
- 分布式光伏電站支架結(jié)構(gòu)及荷載計(jì)算書
評(píng)論
0/150
提交評(píng)論