軟件工程導(dǎo)論(第7章)



《軟件工程導(dǎo)論(第7章)》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件工程導(dǎo)論(第7章)(152頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、,,,,,,,,,,,,,,,,,,,,,,,,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,,,,,,,,,,,,,,,,,,,,,,,,,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第
2、五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,
3、,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,第7章:實(shí)現(xiàn),編碼和測試統(tǒng)稱為實(shí)現(xiàn)。,,編碼:把軟件設(shè)計(jì)結(jié)果翻譯成程序。,,測試:檢測程序并改正錯(cuò)誤的過程。,,計(jì)算機(jī)程序設(shè)計(jì)語言基本上可以分為兩大類:,,,1.,匯編語言,;,,2.,高級語言。,,7.1,編碼,7.1.1 選擇程序設(shè)計(jì)語言,從應(yīng)
4、用特點(diǎn)看,高級語言可分為:,,1),基礎(chǔ)語言,,如,BASIC、FORTRAN、COBOL,等,,2),結(jié)構(gòu)化語言,,如,PL/1、PASCAL、C、ADA,等,,3),專用語言,,如,APL、BLISS、FORTH、LISP、PROLOG,等,選擇一種編程語言的理論標(biāo)準(zhǔn):,,1,)有理想的模塊化機(jī)制;,,2,)可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);,,3,)便于調(diào)試和提高軟件可靠性;,,4,)編譯程序發(fā)現(xiàn)程序錯(cuò)誤的能力強(qiáng);,,5,)有良好的獨(dú)立編譯機(jī)制。,選擇語言時(shí)除了考慮理論上的標(biāo)準(zhǔn),還必須同時(shí)考慮主要的實(shí)用標(biāo)準(zhǔn):,,(1)系統(tǒng)用戶要求,,(2)可以使用的編譯程序,,(3)可以得到的軟件工具,,(
5、4)工程規(guī)模,,(5)程序員知識(shí),,(6)軟件可移植性要求,,(7)軟件的應(yīng)用領(lǐng)域,1.程序內(nèi)部的文檔,,選取含義鮮明的名字,如果使用縮寫,縮寫規(guī)則要一致,并給每個(gè)名字加注釋;,,通常在每個(gè)模塊開始處要有一段注釋,描述模塊功能、算法、接口特點(diǎn)等;,,程序清單布局應(yīng)利用適當(dāng)?shù)碾A梯形式,使程序的層次結(jié)構(gòu)清晰明顯。,7.1.2 寫程序的風(fēng)格,2.數(shù)據(jù)說明,,數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化,如按數(shù)據(jù)類型確定說明的次序;,,多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量;,,如果設(shè)計(jì)時(shí)使用了復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)該用注釋說明實(shí)現(xiàn)該數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。,,3.語句構(gòu)造:語句分行、分段、復(fù)雜條件語句規(guī)則、
6、嵌套規(guī)則等等。,,,4.輸入/輸出:數(shù)據(jù)檢驗(yàn)、格式、合法性等等,,5.效率,,,A.,程序運(yùn)行時(shí)間,,,B.,存儲(chǔ)器效率,,C.,輸入/輸出效率,,程序設(shè)計(jì)工具實(shí)例:,Visual C++,運(yùn)用,Visual C++,開發(fā)工具需要掌握:,,C++,語言特點(diǎn)、語法;,,Windows,編程基礎(chǔ);,,MFC,相關(guān)知識(shí);,,Visual C++,集成開發(fā)工具環(huán)境的使用;,一、,C++,語言特點(diǎn)、語法:,,C++,語言是在,C,語言的基礎(chǔ)是擴(kuò)展而成的,兩種語言的基本語法和語義是相同。,C++,中加入了面向?qū)ο蟪绦蛟O(shè)計(jì)(,OOP),的特征:,,,封裝性,:通過“類”把屬性和函數(shù)組合在一起。,,,繼承性,
7、:派生類可從先前定義的基類中繼承函數(shù)和屬性。,,,多態(tài)性,:一個(gè)函數(shù)名,由不同的對象解釋執(zhí)行,可得到不同的執(zhí)行效果。,二、,Windows,編程基礎(chǔ):,,API,:,,API,是,Windows,應(yīng)用程序編程接口。,,API,是一個(gè)程序內(nèi)(或一組相關(guān)程序內(nèi))的一組函數(shù)調(diào)用,程序員用它創(chuàng)建其他程序。,,程序員不必知道函數(shù)內(nèi)部,只要知道,API,的函數(shù)原型及返回值。,API,的函數(shù)原型及返回值形式可由相關(guān)的技術(shù)規(guī)范資料獲得。,現(xiàn)在的,Win32 API,中,核心部分依靠三個(gè)主要組件提供,Windows,的大部分函數(shù),這三個(gè)組件分別是:,,,USER32.DLL,;,,,GDI32.DLL,;,,,
8、KERNEL32.DLL,。,,Windows,消息機(jī)制,:,,1)基于消息的事件驅(qū)動(dòng),,消息可以是由硬件發(fā)來的(存于系統(tǒng)隊(duì)列),,,也可以由,Windows,系統(tǒng)和應(yīng)用程序發(fā)來(存于程序隊(duì)列中);,,每一個(gè),Windows,程序在不停的捕捉各種消息,,,并進(jìn)行處理;,,每個(gè)窗口都必須有一個(gè)窗口函數(shù),來負(fù)責(zé)消息的判斷與處理。,2)窗口函數(shù)對消息的處理,,,窗口函數(shù)是一個(gè)回調(diào)函數(shù),可以處理收到的消息,在程序中不需要用戶顯式調(diào)用。,,,該窗口函數(shù)的形式通常為:,WndProc(),,每個(gè)窗口類必須在初始化時(shí)指定一個(gè)窗口函數(shù)。,三、,MFC,:,,MFC,,即,Microsoft,基本類,該類庫封裝
9、了,SDK(,軟件開發(fā)工具包)結(jié)構(gòu)、功能及應(yīng)用程序框架內(nèi)部技術(shù)。,,它提供了許多可以重用的類,使得,Windows,程序員避免了許多重復(fù)性工作。,四、,Visual C++,集成開發(fā)工具環(huán)境,,1)開發(fā)工具的使用;,,2)掌握,Win32,程序開發(fā)流程 ;,,,,一個(gè),win32,程序由兩大塊組成:,,,程序代碼,;,,,用戶接口資源,。,用戶接口資源,:菜單,對話框,圖標(biāo),光標(biāo)等;,,這些資源的實(shí)際內(nèi)容(二進(jìn)制代碼)由各種工具產(chǎn)生,并以各種擴(kuò)展名的文件存在;,資源描述文件(*,.,rc,),中對用戶接口資源進(jìn)行描述;,,,RC,編輯器(,RC.exe,),根據(jù)該資源描述文件(*,.,rc,)
10、,將所有用戶接口資源集中構(gòu)造一個(gè)*,.,RES,文件;,,*,.,RES,文件與程序代碼結(jié)合起來,構(gòu)成一個(gè),Win32,程序。,關(guān)于函數(shù)庫和頭文件,:,,動(dòng)態(tài)鏈接庫,:應(yīng)用程序調(diào)用的,API,函數(shù)在“執(zhí)行期間”才鏈接上的函數(shù)庫,,,擴(kuò)展名可以是.,dll,,也可以是,.exe、?.fon、?.mod、.drv、,,.ocx,等。,,靜態(tài)連接庫,:.,lib,,頭文件,:如,windows.h,,它包含操作系統(tǒng)本身的三大模塊,gdi32.dll、user32.dll,和,kernel32.dll,中的所有,API,函數(shù)。,有關(guān)測試的一些規(guī)則:,,(1)測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程;
11、,,(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案;,,(,3,)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試。,,7.2.1 軟件測試的目標(biāo),7.2 軟件測試基礎(chǔ),測試的正確定義:“為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程?!?7.2.2 軟件測試準(zhǔn)則,1,)所有測試都應(yīng)該能追溯到用戶需求;,,2,)應(yīng)該遠(yuǎn)在測試前就制定出測試計(jì)劃;,,3,)把,Pareto,原理應(yīng)用到軟件測試中;,Pareto,原理說明測試發(fā)現(xiàn)的錯(cuò)誤中的,80%,很可能是由程序中,20%,的模塊造成的。,,4,)應(yīng)該從“小規(guī)模”測試開始,并逐步進(jìn)行“大規(guī)?!睖y試;,5,)窮舉測試是不可能的;,窮盡測試,:
12、包含所有可能情況的測試稱為窮盡測試。,程序,main(),a2,a1,a3,b,輸入,輸出,a1、a2、a3 :,,Integer 16bits,輸入數(shù)據(jù)的窮盡測試組合:,2,16,×2,16,× 2,16,= 2,48,≈ 3 × 10,14,6,)為了達(dá)到最佳測試效果,應(yīng)該由獨(dú)立的第三方從事測試工作。,黑盒測試,:,,如果已經(jīng)知道軟件應(yīng)該具有的功能,可以通過測試來檢驗(yàn)是否每個(gè)功能都能正常使用,這種測試稱黑盒測試。也稱功能測試。,7.2.3 測試方法,白盒測試,:,,也稱結(jié)構(gòu)測試。,,如果知道軟件內(nèi)部工作過程,可以通過測試來檢驗(yàn)軟件內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,這種測試稱為白
13、盒測試。,1.,模塊測試,,模塊測試又稱單元測試,它把每個(gè)模塊作為單獨(dú)的實(shí)體來測試。,,2.,子系統(tǒng)測試,,子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個(gè)子系統(tǒng)來測試。,7.2.4 軟件測試的步驟,3.,系統(tǒng)測試,,系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測試。,,4.,驗(yàn)收測試,,驗(yàn)收測試把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測試(利用用戶的實(shí)際數(shù)據(jù)測試)。,,5.,平行運(yùn)行,,平行運(yùn)行是同時(shí)運(yùn)行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。,,7.2.5,測試階段的信息流,測試,評價(jià),調(diào)試,可靠性模型,軟件配置,測試配置,測試結(jié)果,預(yù)期結(jié)果,錯(cuò)誤,錯(cuò)誤率數(shù)據(jù),正確
14、,可靠性預(yù)測,圖7.1 測試階段的信息流,7.3 單元測試,單元測試的一般方法是:,,首先通過編譯系統(tǒng)檢查并改正程序中所有的語法錯(cuò)誤;,,然后用詳細(xì)設(shè)計(jì)模塊說明為指南,對重要的控制路徑進(jìn)行測試,以便發(fā)現(xiàn)模塊內(nèi)部的錯(cuò)誤。,,通常,單元測試使用白盒測試方法。,,1),模塊接口,,應(yīng)該對穿過模塊接口的數(shù)據(jù)流進(jìn)行檢測,以保證正確的輸入和輸出。,,2),局部數(shù)據(jù)結(jié)構(gòu),,這是錯(cuò)誤的主要來源,應(yīng)該設(shè)計(jì)相應(yīng)的測試用例,以便發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)方面的錯(cuò)誤。,7.3.1 測試重點(diǎn),3),重要的執(zhí)行路徑,,由于不可能進(jìn)行窮盡測試,因此選擇測試路徑是非常關(guān)鍵的。,,4,),出錯(cuò)處理通路,,5),邊界條件,審查小組:,,,1,
15、)組長;,,2,)程序的設(shè)計(jì)者;,,3,)程序的編寫者;,,4,)程序的測試者。,,7.3.2 代碼審查,7.3.3 計(jì)算機(jī)測試,,,由于軟件模塊不是一個(gè)獨(dú)立的系統(tǒng),不能獨(dú)立運(yùn)行,要依靠其他模塊調(diào)用,或需要調(diào)用其他模塊。,,因此,必須要為測試的單元開發(fā),驅(qū)動(dòng)程序,或,存根程序,。,1),驅(qū)動(dòng)程序,,相當(dāng)于一個(gè)“主程序”,用來把測試數(shù)據(jù)傳送給被測試的模塊,并打印有關(guān)結(jié)果。,,2,),存根程序,,用來代替被測試模塊所調(diào)用的模塊,相當(dāng)于,“,虛擬子程序,”,。,,如,測試,B,模塊,設(shè)計(jì)了,A,模塊和,C,模塊。,,由,A,負(fù)責(zé)傳送測試數(shù)據(jù),由,C,負(fù)責(zé)模擬被,B,調(diào)用的模塊。,C,模塊可能沒有
16、,這取決于,B,有沒有調(diào)用其他程序。,,A、C,都是一次性程序,只在測試時(shí)臨時(shí)使用,應(yīng)盡量設(shè)計(jì)得簡單一些,以節(jié)省費(fèi)用和時(shí)間。,B,A,C,被測試模塊,驅(qū)動(dòng)模塊,存根模塊,例:,正文加工系統(tǒng),輸入,,1.0,輸出,,2.0,編輯,,3.0,加標(biāo)題,,4.0,存儲(chǔ),,5.0,檢索,,6.0,編目錄,,7.0,格式化,,8.0,添加,,3.1,刪除,,3.2,插入,,3.3,修改,,3.4,合并,,3.5,列表,,3.6,圖7.2 正文加工系統(tǒng),TEST DRIVER,編輯,,3.0,TEST STUB,對“編輯”功能的測試:,7.4 集成測試,集成測試是組裝軟件的系統(tǒng)化技術(shù),它將經(jīng)過單元測試的模
17、塊聯(lián)系在一起進(jìn)行測試。,,由模塊組裝成程序時(shí)有兩種方法:,,1),非漸增式測試方法,,先分別測試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序。,2,),漸增式測試方法,,每次增加一個(gè)待測試模塊,把它同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試,反復(fù)進(jìn)行直到完成所有模塊測試的方法。,使用漸增式測試方法把模塊結(jié)合到軟件系統(tǒng)中去時(shí),有,自頂向下,和,自底向上,兩種集成方法。,,,自頂向下,集成是一種遞增的裝配軟件結(jié)構(gòu)的方法,這種方法應(yīng)用非常廣泛。它需要存根程序,但是不需要驅(qū)動(dòng)程序。,7.4.1 自頂向下集成,這種方法的思想是:從主控模塊(主程序)開始,沿軟件的控制層次向下移動(dòng),逐漸把各個(gè)模塊結(jié)
18、合起來。,,在自頂向下結(jié)合方法中,如何將所有模塊組裝到軟件結(jié)構(gòu)中,又有兩種方法:,1),深度優(yōu)先策略,,先組裝軟件結(jié)構(gòu)的一條,主控制通路,上的所有模塊,選擇哪條主控制通路,具有較大的任意性。,,如圖,如果選取左通路,就先把模塊,M1、M2、M5,結(jié)合起來測試,然后結(jié)合模塊,M8、M6,,再構(gòu)造中央和右側(cè)的控制通路。,M1,M2,M3,M4,M6,M5,M7,M8,圖7.3 自頂向下結(jié)合實(shí)例,2),寬度優(yōu)先策略,,沿著軟件結(jié)構(gòu)水平地移動(dòng),把處于同一個(gè)層次的所有模塊組裝起來。,,如圖,首先結(jié)合,M2、M3、M4,和主控模塊,M1,,然后結(jié)合下一個(gè)控制層次中的模塊,M5、M6,和,M7,,最后結(jié)合模
19、塊,M8。,M1,M2,M3,M4,M6,M5,M7,M8,圖7.3 自頂向下結(jié)合實(shí)例,自頂向下集成方法的基本過程如下:,,1)對主控模塊進(jìn)行測試,測試時(shí)用存根程序代替所有直接被主控模塊調(diào)用的模塊;,M1,M2,M3,M4,M6,M5,M7,M8,圖7.3 自頂向下結(jié)合實(shí)例,M1,M2,M3,M4,M6,M5,M7,M8,圖7.3 自頂向下結(jié)合實(shí)例,2)根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個(gè)實(shí)際模塊代替一個(gè)存根程序(新結(jié)合的模塊往往又需要新的存根程序);,3)每結(jié)合一個(gè)模塊,就測試一個(gè);,,4)為保證不引入新的錯(cuò)誤,需要進(jìn)行回歸測試,即重復(fù)以前進(jìn)行過的部分或全部測試;,,5,)重
20、復(fù)回到第二步,直到構(gòu)成整個(gè)軟件結(jié)構(gòu)。,M1,M2,M3,M4,M6,M5,M7,M8,圖7.3 自頂向下結(jié)合實(shí)例,自底向上集成方法是從軟件結(jié)構(gòu)最底層模塊開始進(jìn)行組裝和測試,它與自頂向下結(jié)合方法相反,需要驅(qū)動(dòng)程序,不需要存根程序。,,7.4.2 自底向上集成,自底向上集成方法的基本過程如下:,,1)把底層模塊組合成實(shí)現(xiàn)一個(gè)特定軟件子功能的族,如圖族1、2、3。,Mc,Ma,Mb,D2,D1,D3,,,,,,,,,,,,族1,族2,族3,圖7.4 自底向上實(shí)例,2)為每個(gè)模塊設(shè)計(jì)一個(gè)驅(qū)動(dòng)程序,作為測試的控制程序,以協(xié)調(diào)測試用例的輸入和輸出。圖中,D1、D2、D3,分別是族1、2、3的驅(qū)動(dòng)程序;,M
21、c,Ma,Mb,D2,D1,D3,,,,,,,,,,,,族1,族2,族3,圖7.4 自底向上實(shí)例,3)對模塊進(jìn)行測試;,,4)用實(shí)際模塊代替驅(qū)動(dòng)程序組裝成新的模塊族,在新加入的實(shí)際模塊上面加上新的驅(qū)動(dòng)程序進(jìn)行測試;,Mc,Ma,Mb,D2,D1,D3,,,,,,,,,,,,族1,族2,族3,圖7.4 自底向上實(shí)例,5)重復(fù)第二到第四步,逐漸向上加入實(shí)際模塊,直至構(gòu)造出整個(gè)軟件結(jié)構(gòu)。,Mc,Ma,Mb,D2,D1,D3,,,,,,,,,,,,族1,族2,族3,圖7.4 自底向上實(shí)例,7.4.3 不同集成測試策略的比較,1. 改進(jìn)的自頂向下測試方法;少數(shù)關(guān)鍵模塊自底向上。,,2. 混合法。,M
22、1,M2,M3,M4,M5,M6,,,7.4.4 回歸測試,,指重新執(zhí)行已經(jīng)做過的部分測試。,,,回歸測試用于保證由于調(diào)試或其他原因引起的程序變化,不會(huì)導(dǎo)致額外錯(cuò)誤的測試活動(dòng)。,7.5 確認(rèn)測試(驗(yàn)收測試),,也稱為驗(yàn)收測試,目標(biāo)是驗(yàn)證軟件的有效性。,,如果軟件的功能和性能符合用戶的期待,軟件就是有效的。,,軟件規(guī)格說明書是進(jìn)行確認(rèn)測試的基礎(chǔ)。,,7.5.1 確認(rèn)測試的范圍,確認(rèn)測試的主要特點(diǎn)及內(nèi)容有:,,1)某些已經(jīng)測試過的純粹技術(shù)性的測試項(xiàng)可能不需要再次測試,而對用戶特別感興趣的功能或性能,可能需要增加一些測試;,,2)通常確認(rèn)測試主要使用實(shí)際生產(chǎn)中的數(shù)據(jù)來進(jìn)行測試;,,3,)確認(rèn)測試
23、必須有用戶的積極參與,甚至以用戶為主,可能需要進(jìn)行一些與用戶使用步驟有關(guān)的測試。,,確認(rèn)測試一般使用黑盒測試法。,7.5.2 軟件配置復(fù)查,目的:保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,而且已經(jīng)編好目錄。,7.5.3,Alpha,和,Beta,測試,Alpha,測試,:用戶在開發(fā)者的場所進(jìn)行測試,并且在開發(fā)者的指導(dǎo)下進(jìn)行,測試在受控環(huán)境中進(jìn)行,開發(fā)者記錄發(fā)現(xiàn)的錯(cuò)誤和問題;,,Beta,測試,:用戶在一個(gè)或多個(gè)客戶場所進(jìn)行測試,不受開發(fā)者控制,測試者記錄發(fā)現(xiàn)的問題和錯(cuò)誤,定期將問題報(bào)告發(fā)送給開發(fā)者。,7.6 白盒測試技術(shù),1.,語句覆蓋,,語句覆蓋是指:設(shè)計(jì)的測試用例
24、能使程序中每條語句至少執(zhí)行一次。,,7.6.1 邏輯覆蓋,例:一個(gè)被測試模塊的源程序?yàn)?(,PASCAL,語言),:,,PROCEDURE EXAMPLE (A , B : REAL ; VAR X : REAL) ;,,BEGIN,,IF (A>1) AND (B=0),,THEN X : = X / A;,,IF (A=2) OR (X>1),,THEN X : = X + 1,,END,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,選取測試用例:,A
25、 = 2 , B = 0 , X = 4,,,程序執(zhí)行路徑為:,sacbed,。,2.,判定覆蓋,,判定覆蓋是指:選取足夠的測試用例,使得程序中每個(gè)判斷的可能結(jié)果都至少執(zhí)行一次,也就是說使程序的每個(gè)判斷分支至少通過一次。,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,對于上例,選取如下測試用例:,,I.,A=3,B=0,X=3,(,覆蓋,sacbd),,II.,A=2,B=1,X=1,(,覆蓋,sabed),3.,條件覆蓋,,,條件覆蓋是指:選擇足夠的測試用例,
26、使得程序中每個(gè)判定表達(dá)式的每個(gè)條件都取到各種可能的結(jié)果。,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,上例中,有兩個(gè)判定表達(dá)式,每個(gè)表達(dá)式有兩個(gè)條件,為了做到條件覆蓋,應(yīng)該選取測試數(shù)據(jù)使得,a,點(diǎn)出現(xiàn)如下結(jié)果:,,,A>1,A≤1,B=0,B≠0,,在,b,點(diǎn)出現(xiàn)如下結(jié)果:,,,A=2,A≠2,X>1,X≤1,,選取如下測試用例:,,I.,A=2,B=0,X=4,(,滿足,A>1,B=0,A=2,和,X>1,,執(zhí)行路徑為,sacbed),,II.,A=1,B=
27、1,X=1,(,滿足,A≤1,B≠0,A≠2,和,X≤1,,執(zhí)行路徑為,sabd),入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,條件覆蓋通常比判定覆蓋強(qiáng),但是條件覆蓋不一定包含判定覆蓋。,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,如:,,I.,A=2,B=0,X=1,(,滿足,A>1,B=0,A=2,和,X≤1,,執(zhí)行路徑為
28、,sacbed),,II.,A=1,B=1,X=2,(,滿足,A≤1,B≠0,A≠2,和,X>1,,執(zhí)行路徑為,sabed),,只滿足條件覆蓋,并不滿足判定覆蓋。,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,4.,判定/條件覆蓋,,判定/條件覆蓋是指:選取足夠的測試用例使得同時(shí)滿足判定覆蓋和條件覆蓋的要求。,對于上例,選取如下測試用例:,,I.,A=2,B=0,X=4,(,滿足,A>1,B=0,A=2,和,X>1,,執(zhí)行路徑為,sacbed),,II.,A=1
29、,B=1,X=1,(,滿足,A≤1,B≠0,A≠2,和,X≤1,,執(zhí)行路徑為,sabd),入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,5.,條件組合覆蓋,,,條件組合覆蓋指:選取足夠的測試用例,使得每個(gè)判定表達(dá)式中條件的各種可能的組合都至少出現(xiàn)一次。,對于上例,共有8種可能的條件組合:,,1),A>1,B=0,,2)A>1,B≠0,,3)A≤1,B=0,,4)A≤1,B≠0,,,,5)A=2,X>1,,6)A=2,X≤1,,7)A≠2,X>1,,8)A≠2,X
30、≤1,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,選取如下測試用例:,,I.,A=2,B=0,X=4,(,滿足1、5組合:,A>1,B=0,A=2,X>1,,執(zhí)行路徑,sacbed),,II.,A=2,B=1,X=1,(,滿足2、6組合:,A>1,B≠0,A=2,X≤1,,執(zhí)行路徑,sabed),入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試
31、模塊的流程圖,III.,A=1,B=0,X=2,(,滿足3、7組合:,A≤1,B=0,A≠2,X>1,,執(zhí)行路徑,sabed),,IV.,A=1,B=1,X=1,(,滿足4、8組合:,A≤1,B≠0,A≠2,X≤1,,執(zhí)行路徑,sabd),,入口,返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,如果從對程序路徑的覆蓋程度分析,可以提出下面一些邏輯覆蓋標(biāo)準(zhǔn):,,6.,點(diǎn)覆蓋,,點(diǎn)覆蓋是指:選取足夠多的測試用例,使得程序執(zhí)行路徑至少經(jīng)過程序圖中每個(gè)節(jié)點(diǎn)一次。,,,,,,,s
32、,a,b,d,c,e,1,2,3,4,5,6,7,圖7.5 對應(yīng)的程序圖,7.,邊覆蓋,,邊覆蓋是指:選取足夠多的測試用例,使得程序執(zhí)行路徑至少經(jīng)過程序圖中每條邊一次。,,,,,,,s,a,b,d,c,e,1,2,3,4,5,6,7,圖7.5 對應(yīng)的程序圖,選取如下測試用例:,,I.,A=3,B=0,X=3,,(,執(zhí)行路徑1—4—5—3),,II.,A=2,B=1,X=1,,(,執(zhí)行路徑1—2—6—7),8.,路徑覆蓋,,路徑覆蓋是指:選取足夠多的測試用例,使得程序的每條可能路徑都至少執(zhí)行一次。,,,,,,,s,a,b,d,c,e,1,2,3,4,5,6,7,圖7.5 對應(yīng)的程序圖,選取如下測
33、試用例:,,I.,A=1,B=1,X=1,,(,執(zhí)行路徑1—2—3),,II.,A=1,B=1,X=2,,(,執(zhí)行路徑1—2—6—7),,III.,A=3,B=0,X=1,,(,執(zhí)行路徑1—4—5—3),,IV.,A=2,B=0,X=4,,(,執(zhí)行路徑1—4—5—6—7),1),A=3,B=0,X=1,,,2),A=2,B=0,X=4,,3),A=2,B=1,X=1,,4),A=1,B=0,X=2,,5),A=1,B=1,X=1,更強(qiáng)的測試數(shù)據(jù),:滿足路徑覆蓋和條件組合覆蓋,,2,)-,5,)滿足條件組合覆蓋,執(zhí)行路徑分別是:,sacbed,、,sabed,、,sabed,、,sabd,入口,
34、返回,A>1 and B=0,A=2 or X>1,X=X/A,X=X+1,s,a,b,d,c,e,T,T,F,F,1,2,3,4,5,6,7,圖7.5 被測試模塊的流程圖,,路徑:,sacbd,7.6.2 控制結(jié)構(gòu)測試,,現(xiàn)有的很多白盒測試技術(shù),是根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測試的技術(shù),常用的控制結(jié)構(gòu)測試技術(shù)有:,,基本路經(jīng)測試,,條件測試,,循環(huán)測試,,83,1,、基本路經(jīng)測試,,基本路徑測試,首先計(jì)算程序的環(huán)形復(fù)雜度,并用該復(fù)雜度為指南定義執(zhí)行路徑的基本集合,從該基本集合導(dǎo)出的測試用例可以保證程序中的每條語句至少執(zhí)行一次,而且每個(gè)條件在執(zhí)行時(shí)都將分別取真、假兩種值。,84,步驟,第一步,根據(jù)
35、過程設(shè)計(jì)結(jié)果畫出相應(yīng)的流圖。,,第二步,計(jì)算流圖的環(huán)形復(fù)雜度。,,第三步,確立線性獨(dú)立路徑的基本集合,,所謂獨(dú)立路徑是指至少引入程序的一個(gè)新處理語句集合或一個(gè)新條件的路徑,也就是說,獨(dú)立路徑至少包含一條在定義該路徑之前不曾用過的邊。,,使用基本路徑測試法設(shè)計(jì)測試用例時(shí),程序的環(huán)形復(fù)雜度決定了程序中獨(dú)立路徑的數(shù)量,而且這個(gè)數(shù)是確保程序中所有語句至少被執(zhí)行一次所需的測試數(shù)量的上界。,,第四步,設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測試用例。,,85,分析例子,流圖,,環(huán)形復(fù)雜度,6,,基本集合,86,2.,條件測試,基本路徑測試簡單高效,但是只有這樣的技術(shù)還不夠,為了進(jìn)一步提高白盒測試的質(zhì)量,還需要使
36、用其他控制結(jié)構(gòu)技術(shù)。,,條件測試技術(shù)設(shè)計(jì)出的測試用例,能夠檢查程序模塊中包含的邏輯條件。,,條件測試基礎(chǔ),,簡單條件格式:一個(gè)布爾變量或一個(gè)關(guān)系表達(dá)式,在布爾變量或關(guān)系表達(dá)式之前還可能有一個(gè),NOT,算符。關(guān)系表達(dá)式的形式如下:,,,E1<,關(guān)系算符,>E2,關(guān)系算符,:>,<,≥≤≠=,,復(fù)合條件:復(fù)合條件由兩個(gè)或多個(gè)簡單條件、布爾算符和括弧組成。布爾算符有,OR,,,AND,和,NOT,。不包含關(guān)系表達(dá)式的條件稱為布爾表達(dá)式。,,條件成分類型:包括布爾算符、布爾變量、布爾括弧、關(guān)系算符及算術(shù)表達(dá)式。,87,條件錯(cuò)誤類型,布爾算符錯(cuò),(,布爾算符不正確,遺漏布爾算符或有多余的布爾算符,),,
37、布爾變量錯(cuò),,布爾括弧錯(cuò),,關(guān)系算符錯(cuò),,算術(shù)表達(dá)式錯(cuò),,88,3,.循環(huán)測試,,循環(huán)測試是一種白盒測試技術(shù),它專注于測試循環(huán)結(jié)構(gòu)的有效性。在結(jié)構(gòu)化的程序中通常只有,3,種循環(huán),即:,,簡單循環(huán),,嵌套循環(huán),,串接循環(huán),89,(1),簡單循環(huán)測試法,跳過循環(huán)。,,只通過循環(huán)一次。,,通過循環(huán)兩次。,,通過循環(huán),m,次,其中,m 38、增加一些額外的測試。,,由內(nèi)向外,對下一個(gè)循環(huán)進(jìn)行測試,但保持所有其他外層循環(huán)為最小值,其他嵌套循環(huán)為“典型”值。,,繼續(xù)進(jìn)行下去,直到測試完所有循環(huán)。,91,(3),串接循環(huán)測試法,各個(gè)循環(huán)彼此獨(dú)立:可以使用前述的簡單循環(huán)測試法。,,各個(gè)循環(huán)彼此不獨(dú)立: 采用嵌套循環(huán)測試法。,等價(jià)類劃分是一種黑盒測試技術(shù)。,,窮盡的黑盒測試需要使用所有可能的輸入數(shù)據(jù)(有效的和無效的)進(jìn)行測試,通常是不現(xiàn)實(shí)的。因此產(chǎn)生了等價(jià)類劃分。,,7.7.1 等價(jià)劃分(等價(jià)類劃分),7.7 黑盒測試技術(shù),等價(jià)類劃分的思想,:,,如果將所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分為若干個(gè)等價(jià)類,就可以假定用每一個(gè)等價(jià)類中的代 39、表值作為測試用例來進(jìn)行測試時(shí),等價(jià)于用該類中所有值進(jìn)行了測試。,用等價(jià)類劃分設(shè)計(jì)測試用例時(shí),主要分兩步:劃分等價(jià)類、確定測試用例。,,1),等價(jià)類劃分,,劃分等價(jià)類需要經(jīng)驗(yàn),以下給出一些規(guī)則:,,A.,如果某輸入條件規(guī)定了輸入的范圍,那么可以劃分為一個(gè)有效的等價(jià)類和兩個(gè)無效的等價(jià)類。如,X,的值的輸入范圍是[1,99],那么測試,X,時(shí),可以這樣劃分:有效等價(jià)類為[1,99],無效等價(jià)類為(-∞,1)和(99,+∞)。,,B.,如果某個(gè)輸入條件規(guī)定了一組可能的值,且程序可以對不同的值作出不同的處理,那么可以為每種值確定一個(gè)有效的等價(jià)類,同時(shí)還有一個(gè)無效等價(jià)類。,如,“職稱”這個(gè)量可能的值是:教 40、授、副教授、講師、助教。那么可以這樣劃分:四類有效等價(jià)類分別為教授、副教授、講師、助教,無效等價(jià)類為四種職稱以外的所有值。,2),確定測試用例,,A.,給每個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào);,,B.,設(shè)計(jì)一個(gè)新的測試用例,使其盡可能多地覆蓋未被覆蓋過的有效等價(jià)類。重復(fù)此步,直至所有有效等價(jià)類被覆蓋;,C.,設(shè)計(jì)一個(gè)新的測試用例,使其覆蓋而且只覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類。重復(fù)此步,直到所有無效等價(jià)類被覆蓋。,,通常程序發(fā)現(xiàn)一類錯(cuò)誤后,就報(bào)出錯(cuò)信息,不再檢查其它類錯(cuò)誤,所以設(shè)計(jì)測試用例時(shí),一次只覆蓋一個(gè)無效等價(jià)類。,實(shí)例:一個(gè)把數(shù)字串變成整數(shù)的函數(shù)。,,計(jì)算機(jī)字長:16,bits ,,函數(shù)由,PAS 41、CAL,語言編寫。,,,function strtoint ( dstr: shortstr ): integer,,type shortstr = array[1..6] of char; /,字符串,6,位,/,,,,(,16,位字長能表示的整型數(shù)范圍是,[-2,15,, 2,15,-1],,即,[,-32768,,,3276,7,,],,),有效輸入的等價(jià)類有:,,(1)1-6個(gè)數(shù)字字符組成的數(shù)字串(最高位數(shù)字不為零);,,如:[ 0 , 999999 ],,(2)最高位數(shù)字是零的數(shù)字串;,,如:“012345”,,(3)最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串;,,如:“-12345”,無效輸入 42、的等價(jià)類有:,,(4)空字符串(全是空格);如“ ”;,,(5)左部填充的字符既不是零,又不是空格;,,如:“,A12345”,,(6),最高位數(shù)字右面由數(shù)字和空格混合而成;,,如:“123 45”,,(7)最高位數(shù)字右面由數(shù)字和其他字符混合而成;,,如:“12,A345”,,(8),負(fù)號(hào)與最高位數(shù)字之間有空格;,,如:“- 1234”,合法輸出的等價(jià)類有:,,(9)在計(jì)算機(jī)能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù);,,如:[ -32768 , 0 ),,(10)零;,,(11)在零和計(jì)算機(jī)能表示的最大正整數(shù)之間的正整數(shù);,,如: (0 , 32767 ],非法輸出的等價(jià)類有:,,( 43、12)比計(jì)算機(jī)能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù);,,如:“-32769”,,(13)比計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù);,,如:“123456”,根據(jù)劃分的等價(jià)類,設(shè)計(jì)出測試方案11個(gè):,,(1)1-6個(gè)數(shù)字組成的字符串;,,輸入:‘ 1’,,預(yù)期的輸出:1,,(2),最高位數(shù)字是零的數(shù)字串;,,輸入:‘000001’,,預(yù)期的輸出:1,,(3)負(fù)號(hào)與最高位數(shù)字相鄰;,,輸入:‘-00001’,,預(yù)期的輸出:-1,(4)最高位數(shù)字是零的特例;,,輸入:‘000000’,,預(yù)期的輸出:0,,(5)太小的負(fù)整數(shù);,,輸入:‘-47561’,,預(yù)期的輸出:錯(cuò)誤-無效輸入,,(6)太大的正 44、整數(shù);,,輸入:‘132767’,,預(yù)期的輸出:錯(cuò)誤-無效輸入,(7)空字符串;,,輸入:‘ ’,,預(yù)期的輸出:錯(cuò)誤-沒有數(shù)字,,(8)字符串左部字符既不是零又不是空格;,,輸入:‘,AAAAA1’,,預(yù)期的輸出:錯(cuò)誤-非數(shù)字,,(9)最高位數(shù)字后面有空格;,,輸入:‘1 2’,,預(yù)期的輸出:錯(cuò)誤-無效輸入,(10)最高位數(shù)字后面有其他字符;,,輸入:‘1,AAA23’,,預(yù)期的輸出:錯(cuò)誤-無效輸入,,(11),負(fù)號(hào)和最高位數(shù)字之間有空格;,,輸入:‘- 12’,,預(yù)期的輸出:錯(cuò)誤-負(fù)號(hào)位置錯(cuò)。,程序通常在處理邊緣情況時(shí)容易出現(xiàn)錯(cuò)誤,如等價(jià)類與等價(jià)類之間的 45、邊界值。,,所以在設(shè)計(jì)測試用例時(shí),使用正好等于、正好大于、正好小于邊界值的數(shù)據(jù)進(jìn)行測試,發(fā)現(xiàn)程序錯(cuò)誤的概率較大。,7.7.2 邊界值分析,邊界值分析測試法屬黑盒測試。,,在實(shí)際設(shè)計(jì)測試方案時(shí),常常結(jié)合使用等價(jià)劃分和邊界值分析兩種技術(shù),把一些等價(jià)類的邊界值作為測試用例進(jìn)行測試。,,,上例中設(shè)計(jì)了11個(gè)測試用例,還應(yīng)該用邊界值分析補(bǔ)充測試用例:,,(12)使輸出剛好等于最小負(fù)整數(shù);,,輸入:‘-32768’,,預(yù)期的輸出:-32768,,(13)使輸出剛好等于最大的正整數(shù);,,輸入:‘ 32767’,,預(yù)期的輸出:32767,(14)使輸出剛剛小于最小的負(fù)整數(shù);,,輸入:‘-32769’,,預(yù)期 46、的輸出:錯(cuò)誤-無效輸入,,(15)使輸出剛剛大于最大正整數(shù);,,輸入:‘ 32768’,,預(yù)期的輸出:錯(cuò)誤-無效輸入,錯(cuò)誤推測法在很大程度上靠直覺和經(jīng)驗(yàn)進(jìn)行。,,基本思想:列舉出程序中可能的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,且根據(jù)它們選擇測試方案。,,如:輸入、輸出為,0,時(shí)容易出錯(cuò);輸出記錄為,0,條時(shí)容易出錯(cuò);等等。,7.7.3 錯(cuò)誤推測,對軟件系統(tǒng)進(jìn)行實(shí)際測試時(shí),應(yīng)該聯(lián)合使用各種設(shè)計(jì)測試方案的方法,形成一種綜合策略。具體可以使用如下策略:,,1)在任何情況下都應(yīng)該進(jìn)行邊界值分析;,,2)必要時(shí)用等價(jià)劃分法補(bǔ)充測試方案;,7.7.4 實(shí)用測試策略,3)必要時(shí)再用錯(cuò)誤推測法補(bǔ)充測試方案;,, 47、4)對照程序邏輯,檢查已經(jīng)設(shè)計(jì)出的測試方案??梢愿鶕?jù)對程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn)。,實(shí)例,:程序,TRIANGLE,讀入三個(gè)整數(shù)值,這三個(gè)整數(shù)代表同一個(gè)三角形三條邊的長度,程序根據(jù)這三個(gè)值判斷三角形屬于不等邊、等腰或是等邊三角形。,開始,停止,A
48、T,T,F,F,F,T,T,F,圖,7.8,程序,TRIANGLE,的流程圖,綜合使用邊界值分析、等價(jià)值劃分和錯(cuò)誤推測等技術(shù),可以設(shè)計(jì)出11種應(yīng)該測試的情況:,,(1)正常的不等邊三角形,;,,(2)正常的等邊三角形,;,,(3)正常的等腰三角形,包括兩條相等邊的三種不同排列方法,;,,(4)退化的三角形(即兩邊的和等于第三邊),包括三種不同排列方法;,(5)三條邊不能構(gòu)成三角形(即兩邊之和小于第三邊),包括三種不同排列方法;,,(6)一條邊的長度為零,包括三種不同的排列方法;,,(7)兩條邊的長度為零,包括三種不同的排列方法;,,(8)三條邊的長度全為零;,,(9)輸入數(shù)據(jù)中包含負(fù)整數(shù);,, 49、(10)輸入數(shù)據(jù)不全(不足三個(gè)正整數(shù));,,(11)輸入數(shù)據(jù)中包含非整數(shù)型的數(shù)據(jù)。,,,,,,,,,,,,,,,,,a,b,c,d,e,f,g,h,k,l,m,n,o,p,i,j,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,圖,7.9,對應(yīng)的程序圖,程序,TRIANGLE,的測試數(shù)據(jù),測試功能,測試數(shù)據(jù),,,,a,b,c,1.等邊,,2.等腰,,3.不等邊,,4.非三角形,,5.退化情況,,6.零數(shù)據(jù),10,10,10,,10,10,17,,8,10,12,,10,10,21,,10,5,5,,0,0,0,,0,0,7 50、,,0,10,12,-,-,-,,10,17,10,,8,12,10,,10,21,10,,5,10,5,,-,-,-,,0,17,0,,12,0,10,-,-,-,,17,10,10,,10,12,8,,21,10,10,,5,5,10,,-,-,-,,17,0,0,,12,10,0,測試功能,測試數(shù)據(jù),,,,a,b,c,7.負(fù)數(shù)據(jù),,,8.遺留數(shù)據(jù),,,9.無效輸入,,,,10.邊界值,-10,-10,-10,,-10,-10,17,,-8,10,17,,-,-,-,,10,- ,-,,8,10, -,,A,B,C,,=,+,*,,8,10,,A,,7,E3 , 10.5 , A,,327 51、67,32766,8,,-32768,8,32766,,-32768,8,-32769,-,-,-,,-10,17,-10,,17,-8,10,,-,-,-,,-,10,-,,8,-,10,,-,-,-,,-,-,-,,8,,A,10,,10.5, 7,E3, A,,32766,8,32767,,32768,8,-32769,,8,-32767,-32768,-,-,-,,17,-10,-10,,10,12,8,,-,-,-,,-,-,10,,-,8,10,,-,-,-,,-,-,-,,A,10,8,,A , 10.5, 7E3,,32768,8,32767,,-32769,8,32767,, 52、-32767,8,-32769,最后,檢查測試數(shù)據(jù)的覆蓋程度,通常應(yīng)該做到邊覆蓋。,測試數(shù)據(jù)覆蓋程度檢驗(yàn)表中列出的四種測試數(shù)據(jù)已經(jīng)做到了邊覆蓋(覆蓋所有的22條邊)。,測試數(shù)據(jù)覆蓋程度檢驗(yàn)表,編號(hào),測試數(shù)據(jù),覆蓋的邊,1,,2,a,,2b,,2c,,3a,,3b,,3c,,4a,,4b,,4c,10,10,10,,10,10,17,,10,17,10,,17,10,10,,8,10,12,,8,12,10,,10,12,8,,10,10,21,,10,21,10,,21,10,10,1,2,3,4,5,6,7,8,,1,2,3,4,5,15,19,20,8,,1,2,3,4,14,18,19, 53、20,8,,1,2,3,4,14,16,17,19,20,8,,1,2,3,4,14,16,21,22,8,,1,2,3,4,14,16,21,22,8,,1,2,3,4,14,16,21,22,8,,1,2,3,11,12,13,8,,1,2,10,12,13,8,,1,9,12,13,8,7.8 調(diào)試,7.8.1 調(diào)試過程,調(diào)試是在測試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。,測試用例,結(jié)果,調(diào)試,附加測試,糾正且回歸測試,已識(shí)別原因,被懷疑原因,1.,蠻干法,:打印內(nèi)存的內(nèi)容,從中尋找錯(cuò)誤的線索,是效率最低的程序調(diào)試方法。,,2.,回溯法,:從發(fā)現(xiàn)問題的程序段開始人工地往回追蹤分析程序代碼,直到找 54、到錯(cuò)誤。,,3.,原因排除法,,包括:對分查找法、歸納法、演繹法,7.8.2 調(diào)試途徑,7.9 軟件可靠性,1. 軟件可靠性定義,,,軟件可靠性,:是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率。,7.9.1 基本概念,2. 軟件的可用性,,對故障可修復(fù)系統(tǒng),應(yīng)同時(shí)使用可靠性和可用性來衡量。,,,軟件可用性,是:程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。,,,可靠性和可用性的區(qū)別,是:可靠性是在0到,t,時(shí)間間隔內(nèi),系統(tǒng)沒有失效的概率。而可用性是在,t,時(shí)刻,系統(tǒng)是正常運(yùn)行的概率。,如果在,t,時(shí)刻,系統(tǒng)是可用的,則有兩種可能:,,1)在0到,t,時(shí)刻這 55、段時(shí)間內(nèi),系統(tǒng)一直沒有失效(可靠);,,2)在0到,t,時(shí)刻這段時(shí)間內(nèi)失效過,但是系統(tǒng)修復(fù)后運(yùn)行到,t,時(shí)刻時(shí)情況良好。,如果在一段時(shí)間內(nèi),軟件系統(tǒng)故障停機(jī)時(shí)間分別為:,t,d,1,, t,d,2,, … ,,正常運(yùn)行時(shí)間分別為:,t,u,1,, t,u,2,, … ,,則系統(tǒng)的穩(wěn)態(tài)可用性定義為:,其中,T,up,=Σ t,ui,, T,down,=Σ t,di,,如果引入系統(tǒng)平均無故障時(shí)間,MTTF,和平均維修時(shí)間,MTTR,的概念,則上面公式的系統(tǒng)穩(wěn)態(tài)可用性變成:,,平均維修時(shí)間,MTTR,是修復(fù)一個(gè)故障平均需要用的時(shí)間,取決于維護(hù)人員的技術(shù)水平和對系統(tǒng)熟悉程度。,,,平均無故障時(shí)間,MT 56、TF,是系統(tǒng)按照規(guī)格說明書規(guī)定成功地運(yùn)行的平均時(shí)間,取決于系統(tǒng)中潛伏的錯(cuò)誤數(shù)量。,1. 符號(hào),,估算,MTTF,時(shí)使用到下列符號(hào),,E,T,——,測試之前程序中故障總數(shù);,,I,T,——,程序長度(機(jī)器指令總數(shù));,,τ——,測試(包括調(diào)試)時(shí)間;,,E,d,(τ) ——,在0至,τ,期間發(fā)現(xiàn)的錯(cuò)誤數(shù);,,E,c,(τ) ——,在0至,τ,期間改正的錯(cuò)誤數(shù);,7.9.2 估算平均無故障時(shí)間,MTTF,的方法,2. 基本假定,,可作出下列假定:,,1),單位長度里的故障數(shù),E,T,/ I,T,近似為常數(shù),。一些統(tǒng)計(jì)數(shù)字表明,通常有:0.5×10,-2,≤,E,T,/ I,T,≤2×10,- 57、2,。,,2),失效率正比于軟件中剩余的(潛藏的)故障數(shù),,,而平均無故障時(shí)間,MTTF,與剩余的故障數(shù)成反比,。,,3),調(diào)試過程沒有引入新的故障,,即,E,c,(τ)= E,d,(τ)。,由于系統(tǒng)剩余的故障數(shù)為:,,,E,r,(τ) = E,T,- E,c,(τ),,所以單位長度程序中剩余的故障數(shù)為:,,,ε,r,(τ) = E,T,/ I,T,- E,c,(τ)/ I,T,,3. 估算平均無故障時(shí)間,MTTF,,因?yàn)槠骄鶡o故障時(shí)間與單位長度程序中剩余的故障數(shù),ε,r,(τ),成反比,所以:,其中:,K,為常數(shù),它的值根據(jù)經(jīng)驗(yàn)選取,經(jīng)典值是,200,。,由上式變換后得到程序中改正的錯(cuò)誤數(shù) 58、:,根據(jù)對軟件平均無故障時(shí)間的要求,可以估計(jì)需要改正多少個(gè)錯(cuò)誤后,測試工作就可以結(jié)束。,4. 估計(jì)故障總數(shù),E,T,的方法,,1),植入故障法,,,假設(shè)人為地植入的故障數(shù)為,N,s,,,經(jīng)過一段時(shí)間的測試之后發(fā)現(xiàn),n,s,個(gè)植入的故障,同時(shí)還發(fā)現(xiàn)了,n,個(gè)原有的故障,則可以估計(jì)出程序中原有的故障總數(shù):,其中: 是故障總數(shù),E,T,的估計(jì)值;,,植入錯(cuò)誤法人為植入的錯(cuò)誤與原有程序錯(cuò)誤可能性質(zhì)很不相同,發(fā)現(xiàn)它們的難度也不同,用此法估計(jì)的錯(cuò)誤數(shù)有時(shí)可能不太準(zhǔn)確。,,,2),分別測試法,,分別測試法隨機(jī)把程序中一部分原有錯(cuò)誤加上標(biāo)記,根據(jù)測試發(fā)現(xiàn)的有標(biāo)記和無標(biāo)記錯(cuò)誤的比例,估計(jì)程序錯(cuò)誤總數(shù)。,分別 59、測試法使用兩個(gè)測試員,獨(dú)立地測試同一個(gè)程序的兩個(gè)副本,由另一名分析員分析他們的測試結(jié)果,把其中一個(gè)測試員發(fā)現(xiàn)的故障作為有標(biāo)記的故障。用,τ,表示測試時(shí)間,假設(shè),,τ= 0,時(shí)故障總數(shù)為,B,0,(即,E,T,);,,τ=τ,1,時(shí)測試員甲發(fā)現(xiàn)的故障數(shù)為,B,1,;,,τ=τ,1,時(shí)測試員乙發(fā)現(xiàn)的故障數(shù)為,B,2,;,,τ=τ,1,時(shí)兩個(gè)測試員發(fā)現(xiàn)的相同故障數(shù)為,b,c,。,如果認(rèn)為測試員甲發(fā)現(xiàn)的故障是有標(biāo)記的,即程序中有標(biāo)記的故障總數(shù)為,B,1,,,那么測試員乙發(fā)現(xiàn)的,B,2,個(gè)故障中有,b,c,個(gè)是有標(biāo)記的。所以可以估計(jì)出測試前程序中的故障總數(shù)為:,其中, 是故障總數(shù),E,T,的估計(jì)值。 60、,,每隔一定時(shí)間,分析員分析兩名測試員的測試結(jié)果,來估計(jì)錯(cuò)誤總數(shù)。幾次估計(jì)結(jié)果差不多時(shí),用其平均值作為錯(cuò)誤總數(shù)的估計(jì)值。,一種預(yù)測軟件可靠性和衡量軟件質(zhì)量的方法。,,用測試完成率作為度量軟件質(zhì)量的標(biāo)準(zhǔn)。,7.10 日立預(yù)測法,,7.10.1 測試完成率模型,50%,100%,測試時(shí)間使用率,,,,第一階段,第二階段,第三階段,100%,測試用例完成率,測試用例完成率隨測試時(shí)間變化的情況,日立的經(jīng)驗(yàn)表明,完成軟件測試通常需要經(jīng)歷三個(gè)階段,第一階段故障多,測試完成慢,第二階段測試完成率提高快,第三階段錯(cuò)誤難改正,完成率提高不快。,,測試時(shí)間使用率=測試所用時(shí)間,/,測試允許使用時(shí)間。,50%, 61、100%,測試時(shí)間使用率,,,,第一階段,第二階段,第三階段,100%,測試用例完成率,測試用例完成率隨測試時(shí)間變化的情況,日立的經(jīng)驗(yàn)表明:,,1)第一個(gè)階段平均占總時(shí)間的22%;,,2)如果第一個(gè)階段占用的時(shí)間超過總時(shí)間的55%以上時(shí),該項(xiàng)工程必然失??;,3)成功的工程第一個(gè)階段占用的時(shí)間平均為總時(shí)間的15%,失敗的工程第一個(gè)階段占用的時(shí)間高達(dá)總時(shí)間的97%左右;,,4)成功的工程第二階段占總時(shí)間的57%左右,失敗的工程第二個(gè)階段只占總時(shí)間的29%左右。,50%,100%,測試時(shí)間使用率,,,,第一階段,第二階段,第三階段,100%,測試用例完成率,測試用例完成率隨測試時(shí)間變化的情況,錯(cuò)誤發(fā) 62、現(xiàn)率:單位時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤數(shù)。,,峰值時(shí)間,成功的工程,失敗的工程,極壞的工程,時(shí)間,錯(cuò)誤發(fā)現(xiàn)率,錯(cuò)誤發(fā)現(xiàn)率曲線,7.10.2 錯(cuò)誤發(fā)現(xiàn)率模型,經(jīng)驗(yàn)表明,失敗工程的錯(cuò)誤發(fā)現(xiàn)率曲線的斜率范圍是,-0.3,~,0,,成功的工程為,-1,~,-0.3,7.10.3 使用日立預(yù)測法的步驟,1)制訂測試計(jì)劃,設(shè)計(jì)測試方案,確定要完成的測試用例的總數(shù);,,2)從集成測試開始,記錄測試用例完成數(shù)和錯(cuò)誤發(fā)現(xiàn)數(shù),繪制用例完成率曲線和錯(cuò)誤發(fā)現(xiàn)率曲線;,,3)繪制曲線時(shí),實(shí)際的數(shù)據(jù)是一串離散的點(diǎn),如果工程不大周期不長的話,連接這些點(diǎn)得不到平滑的曲線時(shí),作平滑處理;,4)每周至少檢查一次繪制的曲線,以判斷處于哪個(gè) 63、階段,如果第二階段的到來比計(jì)劃時(shí)間推遲25%,就需要及時(shí)采取措施補(bǔ)救;,,5)嚴(yán)密注視錯(cuò)誤發(fā)現(xiàn)率變化情況以確定其峰值,在錯(cuò)誤發(fā)現(xiàn)率下降時(shí),計(jì)算其斜率,如果大于-0.3就產(chǎn)生了嚴(yán)重的問題;,,6)每周至少檢驗(yàn)一次,以修正上一周作出的階段性預(yù)測。,第7章小結(jié),◇,測試計(jì)劃,,,為做好集成測試和驗(yàn)收測試,需為如何組織測試制訂實(shí)施計(jì)劃。計(jì)劃應(yīng)包括測試的內(nèi)容、進(jìn)度、條件、人員、測試用例的選取原則、測試結(jié)果允許的偏差范圍等。,,◇,測試分析報(bào)告,,,測試工作完成以后,應(yīng)提交測試計(jì)劃執(zhí)行情況的說明,對測試結(jié)果加以分析,并提出測試的結(jié)論意見。,測試階段可能用到的軟件工具:,,,Bugfree,Bug,處理記錄 64、工具。,,,Wiki,,知識(shí)共享工具。,,,LoadRunner,,負(fù)荷(載)測試軟件,預(yù)測系統(tǒng)行為和性能的負(fù)載測試工具,通過模擬多至上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測的方式來查找和確認(rèn)問題。,練習(xí)題,填空題:,,1,、,大型軟件的測試應(yīng)該分階段地進(jìn)行,通常至少分為(,,)、(,,)和(,,)等,3,個(gè)基本階段。,,2,、,軟件測試的兩類基本方法是白盒測試和黑盒測試,通常在測試過程的早期階段主要使用(,,),而在后期階段主要使用(,,)。,,3,、,大型軟件系統(tǒng)的測試過程基本上由模塊測試、(,,)、系統(tǒng)測試、(,,)和平行運(yùn)行等。,,4,、,一般說來,軟件調(diào)試途徑主要有以下,3,種即(,,) 65、、(,,)和(,,)。,名詞解釋:,,1,、,軟件測試,,2,、,軟件可靠性,,3,、軟件可用性,,4,、,白盒測試,,5,、黑盒測試,,6,、,集成測試,,7,、,確認(rèn)測試,,8,、測試驅(qū)動(dòng)程序,,9,、測試存根程序,,,判斷題:,,1,、,軟件測試一般包括黑盒測試和白盒測試兩種方法,測試是為了竭力證明已經(jīng)建造好的軟件系統(tǒng)的正確性和適用性。(,,),,2,、,在軟件系統(tǒng)開發(fā)中,選擇程序設(shè)計(jì)語言的主要實(shí)用標(biāo)準(zhǔn)是依據(jù)程序員的知識(shí)。(,,),,3,、,代碼審查方法沒有計(jì)算機(jī)測試方法好。,,(,,),,4,、,編碼風(fēng)格由個(gè)人喜好決定,沒有固定格式。,(),,5,、,如果測試過程沒有發(fā)現(xiàn)任何錯(cuò)誤,則說 66、明軟件沒有錯(cuò)誤。,(),,6,、,軟件測試是對軟件規(guī)格說明、軟件設(shè)計(jì)和編碼的最全面也是最后的審查。,(),,7,、,測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和有關(guān)的分析報(bào)告一般不用長期保存。,(),,8,、,用窮舉測試是較現(xiàn)實(shí)的測試方法。,(),,9,、,程序中的注解越少越好,。(),10,、,不同程序設(shè)計(jì)語言在程序的效率上的差異不大。(),,11,、,編碼的依據(jù)是詳細(xì)設(shè)計(jì)說明書。,(),,12,、,程序文檔應(yīng)該包括代碼的功能、代碼的完成者等內(nèi)容。,(),,13,、,判定覆蓋必然滿足語句覆蓋。,(),,14,、,編程中應(yīng)采用統(tǒng)一的標(biāo)準(zhǔn)和約定,降低程序的復(fù)雜性。,(),,簡答題:,,1,、,軟件測試方法之黑盒測試力圖發(fā)現(xiàn)哪些類型的軟件錯(cuò)誤?,,2,、,什么叫測試方案?請簡述軟件測試的基本準(zhǔn)則,。,,3,、,簡述軟件測試的任務(wù)、目的與類型。,,4,、,什么是編碼風(fēng)格,?,為什么要強(qiáng)調(diào)編碼風(fēng)格,?,,5,、,為什么軟件測試不應(yīng)該由程序的編寫人員來做,?,,6,、簡述選擇程序設(shè)計(jì)語言的實(shí)用標(biāo)準(zhǔn)?,,7,、簡述軟件測試的步驟?,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會(huì)上和基層單位調(diào)研座談會(huì)上的發(fā)言材料
- 總工會(huì)關(guān)于2025年維護(hù)勞動(dòng)領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會(huì)上的講話發(fā)言材料
- 糧食和物資儲(chǔ)備學(xué)習(xí)教育工作部署會(huì)上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會(huì)議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動(dòng)員部署會(huì)上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會(huì)上的發(fā)言材料
- 國企黨委關(guān)于推動(dòng)基層黨建與生產(chǎn)經(jīng)營深度融合工作情況的報(bào)告材料
- 副書記在2025年工作務(wù)虛會(huì)上的發(fā)言材料2篇
相關(guān)資源
更多