軟件測(cè)試



《軟件測(cè)試》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件測(cè)試(190頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第五章第五章 軟件測(cè)試軟件測(cè)試n n測(cè)試的目的和原則測(cè)試的目的和原則n n測(cè)試方法與測(cè)試用例設(shè)計(jì)測(cè)試方法與測(cè)試用例設(shè)計(jì)n n軟件測(cè)試的策略軟件測(cè)試的策略n n軟件測(cè)試的種類軟件測(cè)試的種類n n程序的靜態(tài)測(cè)試程序的靜態(tài)測(cè)試n n程序調(diào)試程序調(diào)試1軟件測(cè)試的目的和原則軟件測(cè)試的目的和原則軟件測(cè)試的目的軟件測(cè)試的目的軟件測(cè)試的原則軟件測(cè)試的原則軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象測(cè)試信息流測(cè)試信息流測(cè)試與軟件開發(fā)各階段的關(guān)系測(cè)試與軟件開發(fā)各階段的關(guān)系測(cè)試的充分性測(cè)試的充分性2軟件測(cè)試的目的軟件測(cè)試的目的基于不同的立場(chǎng),存在著兩種完全不同基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的。的測(cè)試目的。從從用戶的角度
2、用戶的角度出發(fā),普遍希望通過軟件出發(fā),普遍希望通過軟件測(cè)試測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷暴露軟件中隱藏的錯(cuò)誤和缺陷,以,以考慮是否可接受該產(chǎn)品??紤]是否可接受該產(chǎn)品。從從軟件開發(fā)者的角度軟件開發(fā)者的角度出發(fā),則希望測(cè)試出發(fā),則希望測(cè)試成為成為表明軟件產(chǎn)品中不存在錯(cuò)誤表明軟件產(chǎn)品中不存在錯(cuò)誤的過程,的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心。確立人們對(duì)軟件質(zhì)量的信心。3Myers軟件測(cè)試目的軟件測(cè)試目的(1)測(cè)試是測(cè)試是程序的執(zhí)行過程程序的執(zhí)行過程,目的在于,目的在于發(fā)現(xiàn)錯(cuò)誤發(fā)現(xiàn)錯(cuò)誤;(2)一個(gè)好的測(cè)試用例在于一個(gè)好的測(cè)試用例在于能發(fā)
3、現(xiàn)至今能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤未發(fā)現(xiàn)的錯(cuò)誤;(3)一個(gè)成功的測(cè)試是一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試現(xiàn)的錯(cuò)誤的測(cè)試。4換言之,測(cè)試的目的是換言之,測(cè)試的目的是uu 想以最少的時(shí)間和人力,想以最少的時(shí)間和人力,系統(tǒng)地找系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷出軟件中潛在的各種錯(cuò)誤和缺陷。如。如果我們成功地實(shí)施了測(cè)試,我們就能果我們成功地實(shí)施了測(cè)試,我們就能夠發(fā)現(xiàn)軟件中的錯(cuò)誤。夠發(fā)現(xiàn)軟件中的錯(cuò)誤。uu 測(cè)試的附帶收獲是,它測(cè)試的附帶收獲是,它能夠證明軟能夠證明軟件的功能和性能與需求說明相符合件的功能和性能與需求說明相符合。uu 實(shí)施測(cè)試收集到的測(cè)試結(jié)果數(shù)據(jù)為實(shí)施測(cè)試收集到的測(cè)試結(jié)
4、果數(shù)據(jù)為可靠性分析提供了依據(jù)??煽啃苑治鎏峁┝艘罁?jù)。uu 測(cè)試不能表明軟件中不存在錯(cuò)誤,測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能說明軟件中存在錯(cuò)誤。它只能說明軟件中存在錯(cuò)誤。5軟件測(cè)試的原則軟件測(cè)試的原則1.應(yīng)當(dāng)把應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件開發(fā)者的座右銘。作為軟件開發(fā)者的座右銘。2.測(cè)試用例應(yīng)由測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)測(cè)試輸入數(shù)據(jù)和對(duì)應(yīng)的和對(duì)應(yīng)的預(yù)預(yù)期輸出結(jié)果期輸出結(jié)果這兩部分組成。這兩部分組成。3.程序員應(yīng)避免檢查自己的程序。程序員應(yīng)避免檢查自己的程序。4.在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)包括在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)包括合理的輸入合理的輸入條件條件和和不合理的輸入條件
5、不合理的輸入條件。65.充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試后測(cè)試后程序中殘存的錯(cuò)誤數(shù)目與該程序程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比。6.嚴(yán)格執(zhí)行測(cè)試計(jì)劃,嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性排除測(cè)試的隨意性。7.應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。8.妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。計(jì)和最終分析報(bào)告,為維護(hù)提供方便。7軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)試軟件測(cè)試應(yīng)貫穿
6、于軟件定義與開發(fā)的整個(gè)期間應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間。需求分析需求分析、概要設(shè)計(jì)概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程詳細(xì)設(shè)計(jì)以及程序編碼序編碼等各階段所得到的等各階段所得到的文檔文檔,包括需,包括需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)成為軟都應(yīng)成為軟件測(cè)試的對(duì)象件測(cè)試的對(duì)象。8為把握軟件開發(fā)各個(gè)環(huán)節(jié)的正確性,需為把握軟件開發(fā)各個(gè)環(huán)節(jié)的正確性,需要進(jìn)行各種要進(jìn)行各種確認(rèn)確認(rèn)和和驗(yàn)證驗(yàn)證工作。工作。確認(rèn)確認(rèn)(Validation),是一系列的活動(dòng)和是一系列的活動(dòng)和過程,目的是想證實(shí)在一個(gè)給定的外部過程,目的是想證實(shí)在一個(gè)
7、給定的外部環(huán)境中軟件的邏輯正確性。環(huán)境中軟件的邏輯正確性。uu 需求規(guī)格說明確認(rèn)需求規(guī)格說明確認(rèn)uu 程序確認(rèn)程序確認(rèn)(靜態(tài)確認(rèn)、動(dòng)態(tài)確認(rèn)靜態(tài)確認(rèn)、動(dòng)態(tài)確認(rèn))驗(yàn)證驗(yàn)證(Verification),試圖證明在軟件試圖證明在軟件生存期各個(gè)階段,以及階段間的邏輯協(xié)生存期各個(gè)階段,以及階段間的邏輯協(xié)調(diào)性、完備性和正確性。調(diào)性、完備性和正確性。910測(cè)試信息流測(cè)試信息流可靠性可靠性分析分析測(cè)試測(cè)試軟件軟件配置配置測(cè)試測(cè)試配置配置測(cè)試測(cè)試工具工具結(jié)果結(jié)果分析分析測(cè)試結(jié)果測(cè)試結(jié)果預(yù)預(yù)期期結(jié)結(jié)果果出出錯(cuò)錯(cuò)率率數(shù)數(shù)據(jù)據(jù)預(yù)測(cè)的可靠性預(yù)測(cè)的可靠性錯(cuò)誤錯(cuò)誤調(diào)試調(diào)試修改后的軟件修改后的軟件11測(cè)試信息流測(cè)試信息流軟件配
8、置軟件配置:軟件需求規(guī)格說明、軟件設(shè):軟件需求規(guī)格說明、軟件設(shè)計(jì)規(guī)格說明、源代碼等;計(jì)規(guī)格說明、源代碼等;測(cè)試配置測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試程序等;程序等;測(cè)試工具測(cè)試工具:測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜:測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果分析程序、以及驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫分析程序、以及驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫等等。等等。12測(cè)試結(jié)果分析測(cè)試結(jié)果分析:比較實(shí)測(cè)結(jié)果與預(yù)期結(jié):比較實(shí)測(cè)結(jié)果與預(yù)期結(jié)果,評(píng)價(jià)錯(cuò)誤是否發(fā)生。果,評(píng)價(jià)錯(cuò)誤是否發(fā)生。排錯(cuò)排錯(cuò)(調(diào)試調(diào)試):對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò):對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確
9、定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔。誤,同時(shí)修改相關(guān)的文檔。修正后的文檔再測(cè)試修正后的文檔再測(cè)試:直到通過測(cè)試為:直到通過測(cè)試為止。止。13通過收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件通過收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件建立可靠性模型建立可靠性模型利用可靠性分析,評(píng)價(jià)軟件質(zhì)量:利用可靠性分析,評(píng)價(jià)軟件質(zhì)量:軟件的質(zhì)量和可靠性達(dá)到可以接受的軟件的質(zhì)量和可靠性達(dá)到可以接受的程度;程度;所做的測(cè)試不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤;所做的測(cè)試不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤;如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,可以肯定,測(cè)如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,可以肯定,測(cè)試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然試配置考慮得不夠
10、細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。潛伏在軟件中。14測(cè)試與軟件開發(fā)各階段的關(guān)系測(cè)試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個(gè)自頂向下,逐步細(xì)軟件開發(fā)過程是一個(gè)自頂向下,逐步細(xì)化的過程化的過程軟件計(jì)劃階段定義軟件范圍(作用域)軟件計(jì)劃階段定義軟件范圍(作用域)軟件需求分析階段建立軟件信息域、功軟件需求分析階段建立軟件信息域、功能和性能需求、約束等能和性能需求、約束等軟件設(shè)計(jì)階段建立軟件體系結(jié)構(gòu)、用戶軟件設(shè)計(jì)階段建立軟件體系結(jié)構(gòu)、用戶接口、數(shù)據(jù)結(jié)構(gòu)和細(xì)部設(shè)計(jì)接口、數(shù)據(jù)結(jié)構(gòu)和細(xì)部設(shè)計(jì)程序編碼階段把設(shè)計(jì)用某種程序設(shè)計(jì)語程序編碼階段把設(shè)計(jì)用某種程序設(shè)計(jì)語言轉(zhuǎn)換成程序代碼言轉(zhuǎn)換成程序代碼15測(cè)試過程是依相反順
11、序安排的自底向上,測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程。逐步集成的過程。需求分析需求分析設(shè)計(jì)設(shè)計(jì)程序編碼程序編碼單元測(cè)試單元測(cè)試集成測(cè)試集成測(cè)試確認(rèn)測(cè)試確認(rèn)測(cè)試詳細(xì)設(shè)計(jì)規(guī)格說明詳細(xì)設(shè)計(jì)規(guī)格說明概要設(shè)計(jì)規(guī)格說明概要設(shè)計(jì)規(guī)格說明需求規(guī)格說明需求規(guī)格說明16測(cè)試的充分性測(cè)試的充分性測(cè)試的充分性是測(cè)試的充分性是1975年由年由Goodenough和和Gerhart提出來的。提出來的。他們提出了一些軟件測(cè)試充分性準(zhǔn)則,他們提出了一些軟件測(cè)試充分性準(zhǔn)則,用以表明測(cè)試數(shù)據(jù)必須具備什么性質(zhì)才用以表明測(cè)試數(shù)據(jù)必須具備什么性質(zhì)才能算作是一個(gè)徹底的測(cè)試。能算作是一個(gè)徹底的測(cè)試。軟件測(cè)試的充分性從軟件在
12、有限多個(gè)輸軟件測(cè)試的充分性從軟件在有限多個(gè)輸入數(shù)據(jù)的行為,判斷軟件在所有輸入數(shù)入數(shù)據(jù)的行為,判斷軟件在所有輸入數(shù)據(jù)上的行為。據(jù)上的行為。17Weyuker測(cè)試充分性準(zhǔn)則測(cè)試充分性準(zhǔn)則1.空測(cè)試對(duì)任何軟件都是不充分的。空空測(cè)試對(duì)任何軟件都是不充分的??諟y(cè)試用例集合意味著軟件沒有測(cè)試。測(cè)試用例集合意味著軟件沒有測(cè)試。2.有限性有限性 對(duì)任何軟件都存在有限的充對(duì)任何軟件都存在有限的充分測(cè)試集合。因?yàn)檐浖y(cè)試必須的有分測(cè)試集合。因?yàn)檐浖y(cè)試必須的有限時(shí)間內(nèi)完成。限時(shí)間內(nèi)完成。3.單調(diào)性單調(diào)性 如果一個(gè)軟件系統(tǒng)在一個(gè)測(cè)如果一個(gè)軟件系統(tǒng)在一個(gè)測(cè)試用例集合上是的測(cè)試是充分的,那試用例集合上是的測(cè)試是充分的,
13、那么,再多測(cè)試一些用例也應(yīng)是充分的。么,再多測(cè)試一些用例也應(yīng)是充分的。184.非非復(fù)合性復(fù)合性 即使對(duì)軟件所有成分都作即使對(duì)軟件所有成分都作了充分的測(cè)試,也不表明整個(gè)軟件的了充分的測(cè)試,也不表明整個(gè)軟件的測(cè)試已經(jīng)充分了。測(cè)試已經(jīng)充分了。5.非分解性非分解性 即使對(duì)軟件整體做了充分即使對(duì)軟件整體做了充分的測(cè)試,也不表明軟件系統(tǒng)中各個(gè)成的測(cè)試,也不表明軟件系統(tǒng)中各個(gè)成分都已得到充分的測(cè)試。分都已得到充分的測(cè)試。6.復(fù)雜性復(fù)雜性 軟件越復(fù)雜,需要的測(cè)試用軟件越復(fù)雜,需要的測(cè)試用例就越多。例就越多。7.回報(bào)遞減率回報(bào)遞減率 測(cè)試得越多,進(jìn)一步測(cè)測(cè)試得越多,進(jìn)一步測(cè)試所能得到的充分性增長(zhǎng)就越少。試所能得
14、到的充分性增長(zhǎng)就越少。198.軟件測(cè)試的充分性與軟件需求和軟件軟件測(cè)試的充分性與軟件需求和軟件實(shí)現(xiàn)有關(guān)。例如,實(shí)現(xiàn)有關(guān)。例如,對(duì)于兩個(gè)結(jié)構(gòu)相同的程序,會(huì)有一對(duì)于兩個(gè)結(jié)構(gòu)相同的程序,會(huì)有一個(gè)測(cè)試用例集合,它對(duì)一個(gè)程序是個(gè)測(cè)試用例集合,它對(duì)一個(gè)程序是充分的,而對(duì)另一個(gè)程序系統(tǒng)則是充分的,而對(duì)另一個(gè)程序系統(tǒng)則是不充分的;不充分的;類似地,存在兩個(gè)程序,它們的語類似地,存在兩個(gè)程序,它們的語義是相同的,但存在一個(gè)測(cè)試用例義是相同的,但存在一個(gè)測(cè)試用例集合,它對(duì)于一個(gè)程序是充分的,集合,它對(duì)于一個(gè)程序是充分的,而對(duì)于另一個(gè)程序則是不充分的。而對(duì)于另一個(gè)程序則是不充分的。20測(cè)試方法與測(cè)試用例設(shè)計(jì)測(cè)試方法
15、與測(cè)試用例設(shè)計(jì)黑盒測(cè)試黑盒測(cè)試uu等價(jià)類劃分等價(jià)類劃分uu邊界值分析邊界值分析uu錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法uu因果圖因果圖白盒測(cè)試白盒測(cè)試uu邏輯覆蓋邏輯覆蓋uu判定結(jié)構(gòu)分析判定結(jié)構(gòu)分析uu循環(huán)結(jié)構(gòu)分析循環(huán)結(jié)構(gòu)分析u基本路徑覆蓋基本路徑覆蓋21黑盒測(cè)試黑盒測(cè)試這種方法是把這種方法是把測(cè)試對(duì)象測(cè)試對(duì)象看做看做一個(gè)黑盒一個(gè)黑盒,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和功構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合能規(guī)格說明,檢查程序的功能是否符合它的功能說明。它的功能說明。黑盒測(cè)試叫做黑盒測(cè)試叫做功能測(cè)試功能測(cè)試或或數(shù)
16、據(jù)驅(qū)動(dòng)測(cè)試數(shù)據(jù)驅(qū)動(dòng)測(cè)試。一種特殊的黑盒測(cè)試叫做一種特殊的黑盒測(cè)試叫做接口測(cè)試接口測(cè)試,它,它不管程序的需求和實(shí)現(xiàn)細(xì)節(jié),僅依據(jù)程不管程序的需求和實(shí)現(xiàn)細(xì)節(jié),僅依據(jù)程序與其外部環(huán)境的接口來選擇測(cè)試數(shù)據(jù)。序與其外部環(huán)境的接口來選擇測(cè)試數(shù)據(jù)。22黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下錯(cuò)誤主要是為了發(fā)現(xiàn)以下錯(cuò)誤:uu 是否有不正確或遺漏了的功能是否有不正確或遺漏了的功能?uu 在接口上,在接口上,輸入能否正確地接受輸入能否正確地接受?能否輸出正確的結(jié)果能否輸出正確的結(jié)果?uu 是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件例如數(shù)據(jù)
17、文件)訪問錯(cuò)誤訪問錯(cuò)誤?uu 性能上是否能夠滿足要求性能上是否能夠滿足要求?uu 是否有初始化或終止性錯(cuò)誤是否有初始化或終止性錯(cuò)誤?23用黑盒測(cè)試發(fā)現(xiàn)程序錯(cuò)誤,必須在用黑盒測(cè)試發(fā)現(xiàn)程序錯(cuò)誤,必須在所有所有可能的輸入條件和輸出條件可能的輸入條件和輸出條件中確定測(cè)試中確定測(cè)試數(shù)據(jù),檢查程序能否產(chǎn)生正確的輸出。數(shù)據(jù),檢查程序能否產(chǎn)生正確的輸出。但這是但這是不可能不可能的。例如,設(shè)一個(gè)的。例如,設(shè)一個(gè)程序程序P有有輸入量輸入量X和和Y及及輸出量輸出量Z。在字長(zhǎng)為在字長(zhǎng)為32位的計(jì)算機(jī)上運(yùn)行。若位的計(jì)算機(jī)上運(yùn)行。若X、Y取整數(shù),取整數(shù),按黑盒方法進(jìn)行窮舉測(cè)試:可能采用的按黑盒方法進(jìn)行窮舉測(cè)試:可能采用的
18、測(cè)試數(shù)據(jù)組個(gè)數(shù)測(cè)試數(shù)據(jù)組個(gè)數(shù):232232264 如果測(cè)試一組數(shù)據(jù)需要如果測(cè)試一組數(shù)據(jù)需要1毫秒毫秒,一年工作一年工作36524小時(shí),完成所有測(cè)試需小時(shí),完成所有測(cè)試需5億年億年。24白盒測(cè)試白盒測(cè)試此方法此方法把測(cè)試對(duì)象看做一個(gè)透明的盒子把測(cè)試對(duì)象看做一個(gè)透明的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過通過在不同點(diǎn)檢查程序的狀態(tài)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白
19、盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。試。25軟件人員使用白盒測(cè)試方法,主要想對(duì)軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:程序模塊進(jìn)行如下的檢查:uu 對(duì)程序模塊的對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次至少測(cè)試一次 路徑覆蓋測(cè)試路徑覆蓋測(cè)試;uu 對(duì)對(duì)所有的邏輯判定所有的邏輯判定,取取“真真”與取與取“假假”的兩種情況都至少測(cè)試一次的兩種情況都至少測(cè)試一次 邏輯覆蓋測(cè)試邏輯覆蓋測(cè)試;uu 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體環(huán)體 控制流測(cè)試控制流測(cè)試;uu 測(cè)試測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性內(nèi)部數(shù)據(jù)結(jié)構(gòu)
20、的有效性 數(shù)數(shù)據(jù)流測(cè)試、領(lǐng)域測(cè)試據(jù)流測(cè)試、領(lǐng)域測(cè)試等。等。26對(duì)一個(gè)具有對(duì)一個(gè)具有多重選擇和循環(huán)嵌套多重選擇和循環(huán)嵌套的程序,的程序,不同的路徑數(shù)目可能是天文數(shù)字不同的路徑數(shù)目可能是天文數(shù)字。給出。給出一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)行行20次的循環(huán)。次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達(dá)包含的不同執(zhí)行路徑數(shù)達(dá) 520 條,對(duì)每條,對(duì)每一條路徑進(jìn)行測(cè)試需要一條路徑進(jìn)行測(cè)試需要1毫秒,假定一毫秒,假定一年工作年工作36524小時(shí),要想把所有路徑測(cè)小時(shí),要想把所有路徑測(cè)試完,需試完,需3170年。年。2728邏輯覆蓋邏輯覆蓋 語句覆蓋語句覆蓋 判定覆蓋判定覆蓋 條件覆
21、蓋條件覆蓋 判定條件覆蓋判定條件覆蓋 條件組合覆蓋條件組合覆蓋 路徑覆蓋路徑覆蓋邏輯覆蓋是以邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試。的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試。29(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1T TT TF FF Fabdce30L1(a c e)=(A 1)and(B=0)and (A=2)or(X/A 1)=(A 1)and(B=0)and(A=2)or (A 1)and(B=0)and(X/A 1)=(A=2)and(B=0)or (A 1)and(B=0)and(X/A 1)31L2(
22、a b d)=not(A 1)and(B=0)and not(A=2)or(X 1)=not(A 1)or not(B=0)and not(A=2)and not(X1)=not(A 1)and not(A=2)and not(X 1)or not(B=0)and not(A=2)and not(X 1)32L3(a b e)=not(A 1)and(B=0)and (A=2)or(X 1)=not(A 1)or not(B=0)and (A=2)or(X 1)=not(A 1)and(A=2)or not(A 1)and(X 1)or not(B=0)and(A=2)or not(B=0)a
23、nd(X 1)33L4(a c d)=(A 1)and(B=0)and not(A=2)or(X/A 1)=(A 1)and(B=0)and not(A=2)and not(X/A 1)34語句覆蓋語句覆蓋語句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)語句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得行被測(cè)程序,使得每一可執(zhí)行語句至少每一可執(zhí)行語句至少執(zhí)行一次執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語句都在在圖例中,正好所有的可執(zhí)行語句都在路徑路徑L1上,所以選擇上,所以選擇路徑路徑 L1設(shè)計(jì)測(cè)試用設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語句。例,就可以覆蓋所有的可執(zhí)行語句。35測(cè)試用例的設(shè)計(jì)格式如下測(cè)試用例的設(shè)
24、計(jì)格式如下【輸入的【輸入的(A,B,X),輸出的輸出的(A,B,X)】為圖例設(shè)計(jì)滿足為圖例設(shè)計(jì)滿足語句覆蓋語句覆蓋的測(cè)試用例是的測(cè)試用例是:【(2,0,4),(2,0,3)】覆蓋覆蓋 ace【L1】(A=2)and(B=0)or (A1)and(B=0)and(X/A1)36 判定覆蓋判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得行被測(cè)程序,使得程序中每個(gè)判斷的取程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為判定覆蓋又稱為分支覆蓋分支覆蓋。對(duì)于圖例,如果選擇對(duì)于圖例,如果選擇路徑路徑L1和和L2,就可就可
25、得滿足要求的測(cè)試用例得滿足要求的測(cè)試用例:37【(2,0,4),(2,0,3)】覆蓋】覆蓋 ace【L1】【(1,1,1),(1,1,1)】覆蓋覆蓋 abd【L2】(A=2)and(B=0)or (A 1)and(B=0)and(X/A 1)not(A 1)and not(A=2)and not(X 1)or not(B=0)and not(A=2)and not(X 1)38如果選擇路徑如果選擇路徑L3和和L4,還可得另一組可還可得另一組可用的測(cè)試用例用的測(cè)試用例:【(2,1,1),(2,1,2)】覆蓋】覆蓋 abe【L3】【(3,0,3),(3,0,1)】覆蓋覆蓋 acd【L4】not(A
26、 1)and(X 1)or not(B=0)and (A=2)or not(B=0)and(X 1)(A 1)and(B=0)and not(A=2)and not(X/A 1)39條件覆蓋條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對(duì)所有條件的取值在圖例中,我們事先可對(duì)所有條件的取值加以標(biāo)記。例如,加以標(biāo)記。例如,對(duì)于第一個(gè)判斷:對(duì)于第一個(gè)判斷:uu 條件條件 A1 取真為取真為 ,取假為,取假為 條件條件 B0 取
27、真為取真為 ,取假為,取假為40對(duì)于第二個(gè)判斷:對(duì)于第二個(gè)判斷:uu 條件條件A2 取真為取真為 ,取假為,取假為 條件條件X1 取真為取真為 ,取假為,取假為 測(cè)試用例測(cè)試用例 覆蓋分支覆蓋分支 條件取條件取值值【(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)或或41 測(cè)測(cè) 試試 用用 例例覆蓋分支覆蓋分支 條件取值條件取值【(1,0,3),(1,0,4)】L3(b,e)【(2,1,1),(2,1,2)】L3(b,e)判定條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用判定條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得例,使得
28、判斷中每個(gè)條件的所有可能取判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)分每個(gè)判斷中的每個(gè)分支至少執(zhí)行一次支至少執(zhí)行一次。判定條件覆蓋判定條件覆蓋42 測(cè)測(cè) 試試 用用 例例覆蓋分支覆蓋分支 條件取值條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(A=2)and(B=0)or (A 1)and(B=0)and(X/A 1)not(A 1)and not(A=2)and not(X 1)or not(B=0)and not(A=2)and not(X 1)43 andorA1T TB=0T TX=X/AT TF
29、FF FA=2T TF FX1F FX=X+144條件組合覆蓋條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次能的條件取值組合至少執(zhí)行一次。記記 A1,B0 作作 A1,B0 作作 A 1,B0 作作 A 1,B0 作作45 A2,X1 作作 A2,X 1 作作 A2,X1 作作 A2,X 1 作作 測(cè)測(cè) 試試 用用 例例 覆蓋條件覆蓋條件 覆蓋組合覆蓋組合【(2,0,4),(2,0,3)】(L1),【(2,1,1),(2,1,2)】(L3),【(1,0,3),(
30、1,0,4)】(L3),【(1,1,1),(1,1,1)】(L2),46路徑測(cè)試路徑測(cè)試路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆覆蓋程序中所有可能的路徑蓋程序中所有可能的路徑。測(cè)測(cè) 試試 用用 例例 通過路徑通過路徑 覆蓋條件覆蓋條件【(2,0,4),(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)47判定結(jié)構(gòu)分析判定結(jié)構(gòu)分析當(dāng)程序中判定多于一個(gè)時(shí),形成的分支當(dāng)程序中判定多于一個(gè)時(shí),形成的分支結(jié)構(gòu)可以分為兩類:結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)嵌
31、套型分支結(jié)構(gòu)和和連鎖型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)。對(duì)于嵌套型分支結(jié)構(gòu),若有對(duì)于嵌套型分支結(jié)構(gòu),若有n個(gè)判定語句,個(gè)判定語句,需要需要n+1個(gè)測(cè)試用例;個(gè)測(cè)試用例;對(duì)于連鎖型分支結(jié)構(gòu),對(duì)于連鎖型分支結(jié)構(gòu),若有若有n個(gè)判定語句,個(gè)判定語句,需要有需要有2n個(gè)測(cè)試用例,覆蓋它的個(gè)測(cè)試用例,覆蓋它的2n條路徑。條路徑。48嵌套型分支結(jié)構(gòu)嵌套型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)s1s2s3s4p1p2p3s1s2s3s4s5s6p1p2p349對(duì)于連鎖型分支結(jié)構(gòu),當(dāng)對(duì)于連鎖型分支結(jié)構(gòu),當(dāng) n 較大時(shí)將無較大時(shí)將無法測(cè)試。法測(cè)試。為減少測(cè)試用例的數(shù)目,可采用為減少測(cè)試用例的數(shù)目,可采用試驗(yàn)設(shè)試驗(yàn)設(shè)計(jì)法計(jì)法,
32、抽取部分路徑進(jìn)行測(cè)試抽取部分路徑進(jìn)行測(cè)試。由于抽樣服從均勻分布,因此,在假定由于抽樣服從均勻分布,因此,在假定各條路徑的重要性相同,或暫不明確各各條路徑的重要性相同,或暫不明確各條路徑的重要性的情況下可以做到均勻條路徑的重要性的情況下可以做到均勻抽樣。如果明確了各條路徑的重要性,抽樣。如果明確了各條路徑的重要性,還可以采取加權(quán)的辦法,篩選掉部分路還可以采取加權(quán)的辦法,篩選掉部分路徑,再用如下的措施進(jìn)行抽樣。徑,再用如下的措施進(jìn)行抽樣。50設(shè)設(shè)連鎖型分支結(jié)構(gòu)中有連鎖型分支結(jié)構(gòu)中有 n 個(gè)判定,計(jì)算個(gè)判定,計(jì)算滿足關(guān)系式滿足關(guān)系式 n+12m 的最小自然數(shù)的最小自然數(shù)m;設(shè)設(shè)t=2m,取正交表取正
33、交表Lt,并利用它設(shè)計(jì)測(cè)并利用它設(shè)計(jì)測(cè)試數(shù)據(jù)。試數(shù)據(jù)。例如,一個(gè)連鎖型分支結(jié)構(gòu)中有三個(gè)判例如,一個(gè)連鎖型分支結(jié)構(gòu)中有三個(gè)判定語句定語句p1,p2,p3。全部路徑是全部路徑是238 條。條。先計(jì)算先計(jì)算3+12m=t 的的 t,得得 t=4。取正交取正交表表L4,把每一列當(dāng)做一個(gè)判定,每一行把每一列當(dāng)做一個(gè)判定,每一行當(dāng)做可取的測(cè)試用例,可得當(dāng)做可取的測(cè)試用例,可得4個(gè)測(cè)試用例。個(gè)測(cè)試用例。51用各個(gè)判定的用各個(gè)判定的取假分支取假分支取代正交表取代正交表L4中中的的“0”,用,用取真分支取真分支取代正交表中的取代正交表中的“1”,就建立起一個(gè)測(cè)試路徑矩陣。這,就建立起一個(gè)測(cè)試路徑矩陣。這樣,測(cè)試
34、路徑數(shù)目從樣,測(cè)試路徑數(shù)目從238條減少到條減少到314條。條。L40 0 01 0 10 1 11 1 01 2 31234用例用例s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5p1 p2 p31234s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5路路路路 徑徑徑徑52s1s3s5p1p2p3s2s3s6p1p2p3s1s4s6p1p2p3s2s4s5p1p2p353L201112L40 0 01 0 10 1 11 1 01 2 31234L80 0 0 0 0 0 01 0 1 0 1 0 10 1 1 0 0 1 111 0 0 1 1 00 0 0
35、 1 1 1 110 1 1 0 1 00 1 1 1 1 0 01 1 0 1 0 0 11 2 3 4 5 6 712345678L2L454循環(huán)結(jié)構(gòu)分析循環(huán)結(jié)構(gòu)分析循環(huán)分為循環(huán)分為4種不同類型:種不同類型:簡(jiǎn)單循環(huán)簡(jiǎn)單循環(huán)、連鎖連鎖循環(huán)循環(huán)、嵌套循環(huán)嵌套循環(huán)和和非結(jié)構(gòu)循環(huán)非結(jié)構(gòu)循環(huán)。(1)簡(jiǎn)單循環(huán)簡(jiǎn)單循環(huán) 零次循環(huán)零次循環(huán):從循環(huán)入口到出口:從循環(huán)入口到出口 一次循環(huán)一次循環(huán):檢查循環(huán)初始值:檢查循環(huán)初始值 二次循環(huán)二次循環(huán):檢查多次循環(huán):檢查多次循環(huán) m次循環(huán):次循環(huán):檢查在多次循環(huán)檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。少一次的循
36、環(huán)。5556簡(jiǎn)單循環(huán)設(shè)計(jì)測(cè)試用例的例子:簡(jiǎn)單循環(huán)設(shè)計(jì)測(cè)試用例的例子:求最小值求最小值k=i;for(j=i+1;j=n;j+)if(Aj Ak)k=j;57k=i;j=i+1;j=n?AjAk?k=jj+fdcabe58測(cè)試用例選擇測(cè)試用例選擇59 對(duì)對(duì)最內(nèi)層循環(huán)做簡(jiǎn)單循環(huán)的全部測(cè)最內(nèi)層循環(huán)做簡(jiǎn)單循環(huán)的全部測(cè)試試。所有其他層的循環(huán)變量置為最小值;。所有其他層的循環(huán)變量置為最小值;逐步外推,對(duì)其逐步外推,對(duì)其外面一層循環(huán)進(jìn)行外面一層循環(huán)進(jìn)行測(cè)試測(cè)試。測(cè)試時(shí)保持所有外層循環(huán)的循環(huán)變。測(cè)試時(shí)保持所有外層循環(huán)的循環(huán)變量取最小值,所有其他嵌套內(nèi)層循環(huán)的循量取最小值,所有其他嵌套內(nèi)層循環(huán)的循環(huán)變量取環(huán)變量
37、取“典型典型”值。值。反復(fù)進(jìn)行,直到所有各層循環(huán)測(cè)試反復(fù)進(jìn)行,直到所有各層循環(huán)測(cè)試完畢。完畢。(2)嵌套循環(huán)嵌套循環(huán)60 對(duì)全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),對(duì)全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),或者同時(shí)取最大循環(huán)次數(shù)或者同時(shí)取最大循環(huán)次數(shù)(3)連鎖循環(huán)連鎖循環(huán)如果各個(gè)循環(huán)如果各個(gè)循環(huán)互相獨(dú)立互相獨(dú)立,則可以用與簡(jiǎn),則可以用與簡(jiǎn)單循環(huán)相同的方法進(jìn)行測(cè)試。但如果幾單循環(huán)相同的方法進(jìn)行測(cè)試。但如果幾個(gè)循環(huán)不個(gè)循環(huán)不是互相獨(dú)立是互相獨(dú)立的,則需要使用測(cè)的,則需要使用測(cè)試嵌套循環(huán)的辦法來處理。試嵌套循環(huán)的辦法來處理。(4)非結(jié)構(gòu)循環(huán)非結(jié)構(gòu)循環(huán)這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計(jì)方這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計(jì)
38、方法重新設(shè)計(jì)測(cè)試用例。法重新設(shè)計(jì)測(cè)試用例。61基本路徑測(cè)試基本路徑測(cè)試基本路徑測(cè)試方法把覆蓋的路徑數(shù)壓縮基本路徑測(cè)試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),到一定限度內(nèi),程序中的循環(huán)體最多只程序中的循環(huán)體最多只執(zhí)行一次執(zhí)行一次。它是在程序控制流圖的基礎(chǔ)上,它是在程序控制流圖的基礎(chǔ)上,分析控分析控制構(gòu)造的環(huán)路復(fù)雜性制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行導(dǎo)出基本可執(zhí)行路徑集合路徑集合,設(shè)計(jì)測(cè)試用例的設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)方法。設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中,程序的出的測(cè)試用例要保證在測(cè)試中,程序的每一個(gè)可執(zhí)行語句至少要執(zhí)行一次。每一個(gè)可執(zhí)行語句至少要執(zhí)行一次。621.程序的控制流圖程序的控制流圖符號(hào)符號(hào)
39、為控制流圖的一個(gè)結(jié)點(diǎn),表示一為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無分支的個(gè)或多個(gè)無分支的PDL語句或源程序語語句或源程序語句。箭頭為邊,表示控制流的方向。句。箭頭為邊,表示控制流的方向。63在選擇或多分支結(jié)構(gòu)中,分支的匯聚處在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū),當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。區(qū)域。如果判斷中的條件表達(dá)式是由一個(gè)或多如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符個(gè)邏輯運(yùn)算符(OR,AND,.)連接的復(fù)連接的復(fù)合條件表達(dá)式,則需改為合條件表
40、達(dá)式,則需改為 一系列一系列只有單只有單個(gè)條件的嵌套的判斷個(gè)條件的嵌套的判斷。6465abyxxif a or b then procedure x else procedure y;.662.程序環(huán)路復(fù)雜性程序環(huán)路復(fù)雜性程序的環(huán)路復(fù)雜性給出了程序的環(huán)路復(fù)雜性給出了程序基本路徑程序基本路徑集中的獨(dú)立路徑條數(shù)集中的獨(dú)立路徑條數(shù),這是確保程序中,這是確保程序中每個(gè)可執(zhí)行語句至少執(zhí)行一次所必需的每個(gè)可執(zhí)行語句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。測(cè)試用例數(shù)目的上界。從控制流圖來看,一條獨(dú)立路徑是至少從控制流圖來看,一條獨(dú)立路徑是至少包含有一條在其他獨(dú)立路徑中從未有過包含有一條在其他獨(dú)立路徑中從未有
41、過的邊的路徑。的邊的路徑。67例如,在圖示的控制流圖中,一組獨(dú)立例如,在圖示的控制流圖中,一組獨(dú)立的路徑是的路徑是path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-6-7-9-10-1-11路徑路徑 path1,path2,path3,path4組成組成了控制流圖的一個(gè)基本路徑集。了控制流圖的一個(gè)基本路徑集。683.導(dǎo)出測(cè)試用例導(dǎo)出測(cè)試用例導(dǎo)出測(cè)試用例,導(dǎo)出測(cè)試用例,確?;韭窂郊械拿看_?;韭窂郊械拿恳粭l路徑的執(zhí)行一條路徑的執(zhí)行。根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)母鶕?jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)
42、據(jù)以保證某一條路徑可以被測(cè)試到數(shù)據(jù)以保證某一條路徑可以被測(cè)試到 用邏輯覆蓋方法用邏輯覆蓋方法。每個(gè)每個(gè)測(cè)試用例執(zhí)行之后測(cè)試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)與預(yù)期結(jié)果進(jìn)行比較行比較。如果所有測(cè)試用例都執(zhí)行完畢,。如果所有測(cè)試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語句至則可以確信程序中所有的可執(zhí)行語句至少被執(zhí)行了一次。少被執(zhí)行了一次。69必須注意,一些獨(dú)立的路徑必須注意,一些獨(dú)立的路徑(如例中的如例中的path1),往往不是完全孤立的,有時(shí)它往往不是完全孤立的,有時(shí)它是程序正常的控制流的一部分,這時(shí),是程序正常的控制流的一部分,這時(shí),這些路徑的測(cè)試可以是另一條路徑測(cè)試這些路徑的測(cè)試可以是另一條路徑
43、測(cè)試的一部分。的一部分。70等價(jià)類劃分等價(jià)類劃分等價(jià)類劃分是一種典型的黑盒測(cè)試方法,等價(jià)類劃分是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),使用這一方法時(shí),完全不考慮程序的內(nèi)完全不考慮程序的內(nèi)部結(jié)構(gòu)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測(cè)試用例測(cè)試用例。等價(jià)類劃分方法等價(jià)類劃分方法把所有可能的輸入數(shù)據(jù)把所有可能的輸入數(shù)據(jù),即程序的輸入域即程序的輸入域劃分成若干部分劃分成若干部分,然后,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例做為測(cè)試用例。71使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分劃分等價(jià)類等價(jià)類(列出等價(jià)類
44、表)和(列出等價(jià)類表)和選取測(cè)試用選取測(cè)試用例例兩步。兩步。(1)劃分等價(jià)類劃分等價(jià)類等價(jià)類是指某個(gè)輸入域的子集合。在該等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的中的錯(cuò)誤都是等效的。測(cè)試某等價(jià)類的。測(cè)試某等價(jià)類的代表值就等價(jià)于對(duì)這一類其他值的測(cè)試。代表值就等價(jià)于對(duì)這一類其他值的測(cè)試。72等價(jià)類的劃分有兩種不同的情況:等價(jià)類的劃分有兩種不同的情況:有效等價(jià)類有效等價(jià)類:是指對(duì)于程序的規(guī)格說:是指對(duì)于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。構(gòu)成的集合。無效等價(jià)類無效等價(jià)
45、類:是指對(duì)于程序的規(guī)格說:是指對(duì)于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。據(jù)構(gòu)成的集合。在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無效等價(jià)類的設(shè)計(jì)。價(jià)類和無效等價(jià)類的設(shè)計(jì)。73劃分等價(jià)類等價(jià)類的原則。劃分等價(jià)類等價(jià)類的原則。1)如果輸入條件規(guī)定了取值范圍,或值如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。兩個(gè)無效等價(jià)類。例如,在程序的規(guī)格說明中,對(duì)輸入條例如,在程序的規(guī)格說明中,對(duì)輸入條件有一句話:件有一句話:“項(xiàng)數(shù)可以從項(xiàng)數(shù)可以從1到到9
46、99”則有效等價(jià)類是則有效等價(jià)類是“1項(xiàng)數(shù)項(xiàng)數(shù)999”兩個(gè)無效等價(jià)類是兩個(gè)無效等價(jià)類是“項(xiàng)數(shù)項(xiàng)數(shù)1”或或“項(xiàng)數(shù)項(xiàng)數(shù)999”。74在數(shù)軸上表示成在數(shù)軸上表示成:2)如果輸入條件規(guī)定了輸入值的集合,或如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了者是規(guī)定了“必須如何必須如何”的條件,這時(shí)可的條件,這時(shí)可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。例如,在例如,在Pascal語言中對(duì)變量標(biāo)識(shí)符規(guī)定語言中對(duì)變量標(biāo)識(shí)符規(guī)定為為“以字母打頭的以字母打頭的串串”。那么所有以。那么所有以字母打頭的構(gòu)成有效等價(jià)類,而不在此集字母打頭的構(gòu)成有效等價(jià)類,而不在此集合內(nèi)(不以字母打頭)的歸于
47、無效等價(jià)類。合內(nèi)(不以字母打頭)的歸于無效等價(jià)類。753)如果輸入條件是一個(gè)布爾量,則可以確如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可這時(shí)可為為 每一個(gè)輸入值確立一個(gè)有效等價(jià)類,此每一個(gè)輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無效等價(jià)類,它是外針對(duì)這組值確立一個(gè)無效等價(jià)類,它是所有不允許的輸入值的集合。所有不允許的輸入值的集合。76 例如,在教師上崗方案中規(guī)定對(duì)教授、例如,在教師上崗方案中規(guī)
48、定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定相應(yīng)的處理。因此可以確定4個(gè)有效等個(gè)有效等價(jià)類為教授、副教授、講師和助教,一價(jià)類為教授、副教授、講師和助教,一個(gè)無效等價(jià)類,它是所有不符合以上身個(gè)無效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。分的人員的輸入值的集合。5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(符合規(guī)則)則可以確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則)。規(guī)則)。77 例如,例如,Pascal語言規(guī)定語言規(guī)
49、定“一個(gè)語句必須一個(gè)語句必須以分號(hào)以分號(hào);結(jié)束結(jié)束”。這時(shí)可以確定一。這時(shí)可以確定一個(gè)有效等價(jià)類個(gè)有效等價(jià)類“以以;結(jié)束結(jié)束”,若干,若干個(gè)無效等價(jià)類個(gè)無效等價(jià)類“以以:結(jié)束結(jié)束”、“以以,結(jié)束結(jié)束”、“以以 結(jié)束結(jié)束”、“以以LF結(jié)束結(jié)束”等。等。(2)確立測(cè)試用例確立測(cè)試用例在確立了等價(jià)類之后,建立等價(jià)類表,在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。列出所有劃分出的等價(jià)類。78再從劃分出的等價(jià)類中按以下原則選擇再從劃分出的等價(jià)類中按以下原則選擇測(cè)試用例:測(cè)試用例:1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一編號(hào);為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一編號(hào);2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其設(shè)計(jì)一個(gè)新的測(cè)
50、試用例,使其盡可能盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類多地覆蓋尚未被覆蓋的有效等價(jià)類,重,重復(fù)這一步,直到所有的有效等價(jià)類都被復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;覆蓋為止;3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這,重復(fù)這一步,直到所有的無效等價(jià)類都被覆蓋一步,直到所有的無效等價(jià)類都被覆蓋為止。為止。79用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的實(shí)例用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的實(shí)例 在某一在某一PASCAL語言版本中規(guī)定:語言版本中規(guī)定:“標(biāo)識(shí)符是由字母開頭標(biāo)識(shí)符是由字母開頭,后跟字母或數(shù)后跟字母或數(shù)字的任意組合構(gòu)
51、成字的任意組合構(gòu)成。有效字符數(shù)為有效字符數(shù)為8個(gè)個(gè),最大字符數(shù)為最大字符數(shù)為80個(gè)個(gè)?!辈⑶乙?guī)定:并且規(guī)定:“標(biāo)識(shí)符必須先說明標(biāo)識(shí)符必須先說明,再使再使用用?!薄霸谕徽f明語句中在同一說明語句中,標(biāo)識(shí)符至標(biāo)識(shí)符至少必須有一個(gè)少必須有一個(gè)?!?0用等價(jià)類劃分方法,建立輸入等價(jià)類表用等價(jià)類劃分方法,建立輸入等價(jià)類表:81下面選取了下面選取了 9 個(gè)測(cè)試用例,它們覆蓋了所個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類。有的等價(jià)類。VAR x,T1234567:REAL;BEGIN x:=3.414;T1234567:=2.732;.(1),(2),(4),(8),(9),(12),(14)VAR :REAL;(
52、3)VAR x,:,:REAL;(5)82 VAR T12345678:REAL;(6)VAR T12345.:REAL;(7)多于多于80個(gè)字符個(gè)字符 VAR T$:CHAR;(10)VAR GOTO:INTEGER;(11)VAR 2T:REAL;(13)VAR PAR:REAL;(15)BEGIN .PAP:=SIN(3.14*0.8)/6;83邊界值分析邊界值分析邊界值分析也是一種黑盒測(cè)試方法,是邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。對(duì)等價(jià)類劃分方法的補(bǔ)充。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界的錯(cuò)誤是
53、發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。上,而不是在輸入范圍的內(nèi)部。因此針因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查可以查出更多的錯(cuò)誤出更多的錯(cuò)誤。84比如,在做三角形計(jì)算時(shí),要輸入三角比如,在做三角形計(jì)算時(shí),要輸入三角形的三個(gè)邊長(zhǎng):形的三個(gè)邊長(zhǎng):A、B和和C。我們應(yīng)注意我們應(yīng)注意到這三個(gè)數(shù)值應(yīng)當(dāng)滿足到這三個(gè)數(shù)值應(yīng)當(dāng)滿足 A0、B0、C0、ABC、ACB、BCA,才能才能構(gòu)成三角形。但如果把六個(gè)不等式中的構(gòu)成三角形。但如果把六個(gè)不等式中的任何一個(gè)大于號(hào)任何一個(gè)大于號(hào)“”錯(cuò)寫成大于等于錯(cuò)寫成大于等于號(hào)號(hào)“”,那就不能構(gòu)成三角形。問題,那就不能構(gòu)成三角形。問
54、題恰出現(xiàn)在容易被疏忽的邊界附近。恰出現(xiàn)在容易被疏忽的邊界附近。85這里所說的邊界是指,相當(dāng)于輸入等價(jià)這里所說的邊界是指,相當(dāng)于輸入等價(jià)類和輸出等價(jià)類而言,稍高于其邊界值類和輸出等價(jià)類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。及稍低于其邊界值的一些特定情況。使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況。先應(yīng)確定邊界情況。應(yīng)當(dāng)選取正好等于,應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測(cè)剛剛大于,或剛剛小于邊界的值做為測(cè)試數(shù)據(jù)試數(shù)據(jù),而不是選取等價(jià)類中的典型值,而不是選取等價(jià)類中的典型值或任意值做為測(cè)試數(shù)據(jù)。或任意值做為測(cè)試數(shù)據(jù)。86錯(cuò)誤推測(cè)法
55、錯(cuò)誤推測(cè)法人們也可以靠經(jīng)驗(yàn)和直覺推測(cè)程序中可人們也可以靠經(jīng)驗(yàn)和直覺推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推寫檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推測(cè)法。測(cè)法。錯(cuò)誤推測(cè)法的基本想法是:錯(cuò)誤推測(cè)法的基本想法是:列舉出程序列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例特殊情況,根據(jù)它們選擇測(cè)試用例。87因果圖因果圖因果圖的適用范圍因果圖的適用范圍 如果在測(cè)試時(shí)必須考慮如果在測(cè)試時(shí)必須考慮輸入條件的各種輸入條件的各種組合組合,可使用一種適合于描述,可使用一種適合于描述對(duì)于多
56、種對(duì)于多種條件的組合條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式的形式來設(shè)計(jì)測(cè)試用例,這就需要利用因果圖。來設(shè)計(jì)測(cè)試用例,這就需要利用因果圖。因果圖方法最終生成的就是因果圖方法最終生成的就是判定表判定表。它。它適合于檢查程序輸入條件的各種組合情適合于檢查程序輸入條件的各種組合情況。況。用因果圖生成測(cè)試用例的基本步驟用因果圖生成測(cè)試用例的基本步驟88 1)分析軟件規(guī)格說明描述中,哪些是分析軟件規(guī)格說明描述中,哪些是原原因因(即輸入條件或輸入條件的等價(jià)類即輸入條件或輸入條件的等價(jià)類),哪些是哪些是結(jié)果結(jié)果(即輸出條件即輸出條件),并給每個(gè)原,并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。因和結(jié)果賦予一個(gè)
57、標(biāo)識(shí)符。2)分析軟件規(guī)格說明描述的語義,找出分析軟件規(guī)格說明描述的語義,找出原因與結(jié)果之間原因與結(jié)果之間,原因與原因之間原因與原因之間對(duì)應(yīng)對(duì)應(yīng)的關(guān)系的關(guān)系?根據(jù)這些關(guān)系,畫出因果圖。根據(jù)這些關(guān)系,畫出因果圖。3)由于語法或環(huán)境限制由于語法或環(huán)境限制,有些原因與原有些原因與原因之間,原因與結(jié)果之間的組合情況不因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號(hào)果圖上用一些記號(hào)標(biāo)明約束或限制條件標(biāo)明約束或限制條件。89 4)把因果圖轉(zhuǎn)換成判定表。把因果圖轉(zhuǎn)換成判定表。5)把判定表的每一列拿出來作為依據(jù),把判定表的每一列拿出來作為依據(jù)
58、,設(shè)計(jì)測(cè)試用例。設(shè)計(jì)測(cè)試用例。在因果圖中出現(xiàn)的基本符號(hào)在因果圖中出現(xiàn)的基本符號(hào) 通常在因果圖中用通常在因果圖中用Ci表示原因,用表示原因,用Ei表表示結(jié)果,各結(jié)點(diǎn)表示狀態(tài),可取值示結(jié)果,各結(jié)點(diǎn)表示狀態(tài),可取值“0”或或“1”?!?”表示某狀態(tài)不出現(xiàn),表示某狀態(tài)不出現(xiàn),“1”表示某狀態(tài)出現(xiàn)。表示某狀態(tài)出現(xiàn)。90主要的原因和結(jié)果之間的關(guān)系有主要的原因和結(jié)果之間的關(guān)系有:91表示約束條件的符號(hào)表示約束條件的符號(hào)為了表示原因與原因之間,結(jié)果與結(jié)果為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號(hào)。可以附加一些表示約束條件
59、的符號(hào)。92 例如,有一個(gè)處理單價(jià)為例如,有一個(gè)處理單價(jià)為5角錢的飲料的角錢的飲料的自動(dòng)售貨機(jī)軟件測(cè)試用例的設(shè)計(jì)。其規(guī)格自動(dòng)售貨機(jī)軟件測(cè)試用例的設(shè)計(jì)。其規(guī)格說明如下:說明如下:若若投入投入5角錢或角錢或1元錢的硬幣,元錢的硬幣,押下押下橙橙汁或啤酒的按鈕,則相應(yīng)的飲料就汁或啤酒的按鈕,則相應(yīng)的飲料就送出來。若售貨機(jī)送出來。若售貨機(jī)沒有零錢找沒有零錢找,則一個(gè)顯,則一個(gè)顯示零錢找完的紅燈亮,這時(shí)在投入示零錢找完的紅燈亮,這時(shí)在投入1元硬幣并押下按鈕后,飲料不送出來而且元硬幣并押下按鈕后,飲料不送出來而且1元硬幣也退出來;若元硬幣也退出來;若有零錢找有零錢找,則顯示,則顯示零錢找完的紅燈滅,在送出
60、飲料的同零錢找完的紅燈滅,在送出飲料的同時(shí)退還時(shí)退還5角硬幣。角硬幣?!?31)分析這一段說明,列出原因和結(jié)果分析這一段說明,列出原因和結(jié)果原因原因:1.售貨機(jī)有零錢找售貨機(jī)有零錢找 2.投入投入1元硬幣元硬幣 3.投入投入5角硬幣角硬幣 4.押下橙汁按鈕押下橙汁按鈕 5.押下啤酒按鈕押下啤酒按鈕建立中間結(jié)點(diǎn),表示處理中間狀態(tài)建立中間結(jié)點(diǎn),表示處理中間狀態(tài)11.投入投入1元硬幣且押下飲料按鈕元硬幣且押下飲料按鈕12.押下橙汁或啤酒的按鈕押下橙汁或啤酒的按鈕13.應(yīng)當(dāng)找應(yīng)當(dāng)找5角零錢并且售貨機(jī)有零錢找角零錢并且售貨機(jī)有零錢找14.錢已付清錢已付清94 結(jié)果:結(jié)果:21.售貨機(jī)零錢找完燈亮售貨機(jī)零
61、錢找完燈亮 22.退還退還1元硬幣元硬幣 23.退還退還5角硬幣角硬幣 24.送出橙汁飲料送出橙汁飲料 25.送出啤酒飲料送出啤酒飲料 2)畫出因果圖。畫出因果圖。所有原因結(jié)點(diǎn)列在左所有原因結(jié)點(diǎn)列在左邊,所有結(jié)果結(jié)點(diǎn)列在右邊。邊,所有結(jié)果結(jié)點(diǎn)列在右邊。3)由于由于 2 與與 3,4 與與 5 不能同時(shí)發(fā)生,不能同時(shí)發(fā)生,分別加上約束條件分別加上約束條件E。4)因果圖因果圖 5)轉(zhuǎn)換成判定表轉(zhuǎn)換成判定表95 96 97使用各種測(cè)試方法的綜合策略使用各種測(cè)試方法的綜合策略n n在任何情況下都必須使用在任何情況下都必須使用邊界值分析法邊界值分析法。用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)用這種方法設(shè)計(jì)出測(cè)
62、試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。誤的能力最強(qiáng)。n n必要時(shí)用必要時(shí)用等價(jià)類劃分法等價(jià)類劃分法補(bǔ)充一些測(cè)試用補(bǔ)充一些測(cè)試用例。例。n n用用錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法再追加一些測(cè)試用例。再追加一些測(cè)試用例。n n對(duì)照程序邏輯,檢查已有測(cè)試用例的邏對(duì)照程序邏輯,檢查已有測(cè)試用例的邏輯覆蓋程度。如果未達(dá)到要求的覆蓋標(biāo)輯覆蓋程度。如果未達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)再補(bǔ)充足夠的測(cè)試用例。準(zhǔn),應(yīng)再補(bǔ)充足夠的測(cè)試用例。98n n如果程序的功能說明中含有輸入條件的如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用組合情況,則一開始就可選用因果圖法因果圖法。99軟件測(cè)試的策略軟件測(cè)試的策略測(cè)試過程按測(cè)試過程按4個(gè)步
63、驟進(jìn)行,即個(gè)步驟進(jìn)行,即單元測(cè)試單元測(cè)試、組裝測(cè)試組裝測(cè)試、確認(rèn)測(cè)試確認(rèn)測(cè)試和和系統(tǒng)測(cè)試系統(tǒng)測(cè)試。開始是開始是單元測(cè)試單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn),集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。組裝測(cè)試組裝測(cè)試把已測(cè)試過的模塊組裝起來,把已測(cè)試過的模塊組裝起來,主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。造進(jìn)行測(cè)試。100被測(cè)被測(cè)模塊模塊單元單元測(cè)試測(cè)試集成集成測(cè)試測(cè)試被測(cè)被測(cè)模塊模塊單元單元測(cè)試測(cè)試被測(cè)被測(cè)模塊模塊單元單元測(cè)試測(cè)試確認(rèn)確認(rèn)測(cè)試測(cè)試
64、系統(tǒng)系統(tǒng)測(cè)試測(cè)試系系統(tǒng)統(tǒng)其其他他元元素素軟軟件件需需求求設(shè)設(shè)計(jì)計(jì)信信息息已已集集成的成的軟件軟件已已確確認(rèn)的認(rèn)的軟件軟件可交可交付的付的軟件軟件已經(jīng)過已經(jīng)過測(cè)試的測(cè)試的模塊模塊101確認(rèn)測(cè)試確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。求,以及軟件配置是否完全、正確。系統(tǒng)測(cè)試系統(tǒng)測(cè)試把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其他系統(tǒng)成份組合在際運(yùn)行環(huán)境中,與其他系統(tǒng)成份組合在一起進(jìn)行測(cè)試。一起進(jìn)行測(cè)試。102單元測(cè)試單元測(cè)試(Unit Testing)單元
65、測(cè)試又稱模塊測(cè)試,單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)是針對(duì)軟件設(shè)計(jì)的最小單位計(jì)的最小單位 程序模塊程序模塊,進(jìn)行正確性進(jìn)行正確性檢驗(yàn)檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試需要單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。進(jìn)行單元測(cè)試。1031.單元測(cè)試的內(nèi)容單元測(cè)試的內(nèi)容在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該模塊的計(jì)說明書和源程序清單,了解該模塊的I/O條件和模
66、塊的邏輯結(jié)構(gòu),主要采用白條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。合理的輸入,都能鑒別和響應(yīng)。104模塊模塊出錯(cuò)處理出錯(cuò)處理獨(dú)立路徑獨(dú)立路徑模塊接口模塊接口局部數(shù)據(jù)結(jié)構(gòu)局部數(shù)據(jù)結(jié)構(gòu)邊界條件邊界條件105(1)模塊接口測(cè)試模塊接口測(cè)試在單元測(cè)試的開始,應(yīng)對(duì)在單元測(cè)試的開始,應(yīng)對(duì)通過被測(cè)模塊通過被測(cè)模塊的數(shù)據(jù)流的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時(shí)輸入給子模塊的本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;參數(shù)是否正確;全局量的定義在各模塊中是否一致;全局量的定義在各模塊中是否一致;106在做在做內(nèi)外存交換內(nèi)外存交換時(shí)要考慮:時(shí)要考慮:文件屬性是否正確;文件屬性是否正確;OPEN與與CLOSE語句是否正確;語句是否正確;緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;在進(jìn)行讀寫操作之前是否打開了文件;在進(jìn)行讀寫操作之前是否打開了文件
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語文名句默寫總結(jié)
- 八年級(jí)下冊(cè)語文必讀名著《經(jīng)典常談》重點(diǎn)知識(shí)填空100題含參考答案
- 初中語文滿分作文閃光句子
- 初中語文作文素材:54句意蘊(yùn)深刻的電影臺(tái)詞
- 初中語文考試200個(gè)必考成語
- 初中語文考試易錯(cuò)拼音300個(gè)
- 初中語文期末押題滿分作文8篇
- 八年級(jí)語文下冊(cè) 第六單元 《岳陽樓記》教案
- 初中語文文言文閱讀資料:《宋史?歐陽修傳》
- 初中語文文言文閱讀資料:《戴胄犯顏執(zhí)法》
- 初中語文??嫉?18個(gè)成語
- 初中語文【易丟分】7種題型??合集
- 初中語文作文素材:10個(gè)萬能作文套句
- 初中語文考試17種常考的表現(xiàn)手法
- 初中語文古詩文劃分節(jié)奏10種方法
相關(guān)資源
更多