Ch軟件測(cè)試方法軟件測(cè)試方法和技術(shù)朱少民_第1頁(yè)
Ch軟件測(cè)試方法軟件測(cè)試方法和技術(shù)朱少民_第2頁(yè)
Ch軟件測(cè)試方法軟件測(cè)試方法和技術(shù)朱少民_第3頁(yè)
Ch軟件測(cè)試方法軟件測(cè)試方法和技術(shù)朱少民_第4頁(yè)
Ch軟件測(cè)試方法軟件測(cè)試方法和技術(shù)朱少民_第5頁(yè)
已閱讀5頁(yè),還剩109頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 軟件測(cè)試方法和技術(shù)軟件測(cè)試方法和技術(shù)第第3章章 軟件測(cè)試的方法軟件測(cè)試的方法朱少民 K http:/ 第2章 回顧p軟件缺陷是軟件質(zhì)量的對(duì)立面p軟件缺陷(Bug)是什么p驗(yàn)證和確認(rèn)p軟件測(cè)試的分類p靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試p主動(dòng)測(cè)試與被動(dòng)測(cè)試p黑盒測(cè)試與白盒測(cè)試p測(cè)試級(jí)別:?jiǎn)卧?、集成、系統(tǒng)和驗(yàn)收p軟件測(cè)試計(jì)劃與用例p專業(yè)測(cè)試人員的責(zé)任和要求第3章 軟件測(cè)試的方法3.1 基于直覺和經(jīng)驗(yàn)的方法3.2 基于輸入域的方法3.3 基于組合及其優(yōu)化的技術(shù)3.4 基于邏輯覆蓋的方法3.5 基于故障模式的測(cè)試方法3.6 基于模型的測(cè)試方法3.7 形式化方法方法論和具體方法p從方法論看,更多體現(xiàn)了一種哲學(xué)的思想從方

2、法論看,更多體現(xiàn)了一種哲學(xué)的思想,例如辯證統(tǒng)一的方法,在測(cè)試中有許多對(duì)立統(tǒng)一體,如靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試、白盒測(cè)試和黑盒測(cè)試、自動(dòng)化測(cè)試和手工測(cè)試等。p軟件測(cè)試的方法論來源于軟件工程的方法論,例如有面向?qū)ο蟮拈_發(fā)方法,就有面向?qū)ο蟮臏y(cè)試方法;有敏捷方法,就有和敏捷方法對(duì)應(yīng)的敏捷測(cè)試。測(cè)試領(lǐng)域Domains under TestApplied toDNF: Disjunctive Normal Form(析取范式) FSM: Finite Status Machine測(cè)試方法 SWEBOK 3.06具體方法或技術(shù)7等價(jià)類、邊界值、兩兩組合等價(jià)類、邊界值、兩兩組合(pairwisepairwise)、

3、隨機(jī)測(cè)試)、隨機(jī)測(cè)試黑盒測(cè)試黑盒測(cè)試基于控制流的標(biāo)準(zhǔn)、基于數(shù)據(jù)流的標(biāo)準(zhǔn)、CBT參考模型白盒測(cè)試故障模型、錯(cuò)誤猜測(cè)法、變異測(cè)試操作配置(operational profile)、用戶觀察啟發(fā)黑盒測(cè)試決策表、有限狀態(tài)機(jī)、形式化驗(yàn)證、TTCN3、工作流模型OOS、web、real-time、SOA、embedded、safe-critical應(yīng)用領(lǐng)域過去常提“黑盒和白盒”方法8黑盒方法白盒方法其它方法 world93.1 基于直覺和經(jīng)驗(yàn)的方法Ad-hoc測(cè)試方法和ALAC測(cè)試 錯(cuò)誤推測(cè)法 3.1.1 ALAC測(cè)試和隨機(jī)測(cè)試ALAC,是Act-like-a-customer(象客戶那樣做)的簡(jiǎn)寫,AL

4、AC測(cè)試方法是一種基于客戶使用產(chǎn)品的知識(shí)開發(fā)出來的測(cè)試方法,它的出發(fā)點(diǎn)是著名的Pareto 80/20規(guī)律3.1.2 錯(cuò)誤猜測(cè)法錯(cuò)誤推測(cè)法是測(cè)試者根據(jù)經(jīng)驗(yàn)、知識(shí)和直覺來發(fā)現(xiàn)軟件錯(cuò)誤,來推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性的進(jìn)行測(cè)試。 單元測(cè)試中發(fā)現(xiàn)的模塊錯(cuò)誤;單元測(cè)試中發(fā)現(xiàn)的模塊錯(cuò)誤; 產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤; 輸入數(shù)據(jù)為輸入數(shù)據(jù)為0 0或字符為空;或字符為空; 當(dāng)軟件要求輸入時(shí)當(dāng)軟件要求輸入時(shí)( (比如在文本框中比如在文本框中),),不是沒有輸入正確的信不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了息,而是根本沒有輸入任何內(nèi)容,單單按了E

5、nterEnter鍵;鍵; 3.2 基于輸入域的測(cè)試方法3.2.1 等價(jià)類劃分方法設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受異常數(shù)據(jù)的考驗(yàn)。經(jīng)過正反的測(cè)試才能確保軟件具有更高的可靠性。all inputsi1i4i2i3確定等價(jià)類的方法in rangegreater than rangeless than rangevaluegreater than valueless than value在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無

6、效等價(jià)類確定等價(jià)類的方法(2)not member of setmember of setBooleanNon-Boolean確定等價(jià)類的方式 (3)有什么具體案例?等價(jià)類測(cè)試用例-Example等價(jià)類1: Integer等價(jià)類2: Decimal fraction等價(jià)類3: Negative等價(jià)類4: Invalid input根據(jù)等價(jià)類創(chuàng)建測(cè)試用例的步驟a) 建立等價(jià)類表,列出所有劃分出的等價(jià)類:b) 為每個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào);c) 設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價(jià)類d) 重復(fù)c),最后使得所有有效等價(jià)類均被測(cè)試用例所覆蓋;e) 設(shè)計(jì)一個(gè)新的測(cè)試用例,使其只

7、覆蓋一個(gè)無效等價(jià)類。f) 重復(fù)e)使所有無效等價(jià)類均被覆蓋。輸入條件有效等價(jià)類無效等價(jià)類3.2.2 邊界值分析方法 確定邊界情況(輸入或輸出等價(jià)類的邊界) 選取正好等于、剛剛大于或小于邊界值作為測(cè)試數(shù)據(jù)確定邊界值的方法如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最小個(gè)數(shù)少一、比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù)。a ab ba ab b確定邊界值的方法(2)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例。如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)

8、結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例。n Test cases for ABS(x) :class x = 0, arbitrary value x = 100classes x = 0, on boundary :x = 0classes x = 0, below and above: x = -1, x = 1正常值(有效類)正常值(有效類): X1 = 123123邊界值邊界值: X2 = 12345邊界值邊界值: X3 = 1234567邊界值邊界值: X4 = 1邊界值邊界值: X5 = 0無效類的值無效類的值: X6 = -123123無效類的值無效類的值: X

9、7 = asdasd其它其它?BVA 示例2 測(cè)試測(cè)試 限制性用戶輸入:限制性用戶輸入:6位正整數(shù)位正整數(shù) 無效值無效值: X8 = 000123 X9 = asd123 X10 = EmptyBVA 示例3Test cases :任意的正常值: 隨機(jī)選擇幾個(gè)選項(xiàng) 邊界值: 選擇所有選項(xiàng) 邊界值: 一個(gè)都不選邊界值: 選擇一個(gè)選項(xiàng)二進(jìn)制Term 取值范圍取值范圍BitNibbleByteWordKiloMegaGigaTera0 or 10-15 0-2550-65535 or 0-42949672951024104857610737418241099511627776ASCII TableC

10、haracterASCII ValueCharacter ASCII ValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123字符編輯域一些特殊的邊界值First-1/Last+1Min-1/max+1Start-1/Finish+1Less than empty/ more than fulljust Over/Just Under有什么具體案例?3.3 基于組合技術(shù)和組合優(yōu)化的方法3.3.1 判定表方法判定表元素判定表方法步驟條件樁動(dòng)作樁規(guī)則判定表 示例1IDID項(xiàng)目名稱項(xiàng)目名稱R1R1R2R2R3R3R4

11、R4R5R5條件項(xiàng)C1此商品在經(jīng)營(yíng)范圍NYYYYC2此商品可以發(fā)貨YYNNC3此客戶沒有拖欠過付款YNYN動(dòng)作項(xiàng)A1貨到后允許客戶轉(zhuǎn)賬1A2貨到客戶必須立即付款1A3重新組織貨源11A4電話通知1A5書面通知11判定表示例判定表示例23.3.2 因果圖法 分析軟件規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)示符。 找出原因與結(jié)果,原因與原因之間的對(duì)應(yīng)關(guān)系,劃出因果圖 在因果圖上標(biāo)上哪些不可能發(fā)生的因果關(guān)系,表明約束或限制條件 根據(jù)因果圖,創(chuàng)建判定表,將復(fù)雜的邏輯關(guān)系和多種條件組合很具體明確的表示出來 把判定表的每一行作為依據(jù)設(shè)計(jì)測(cè)試用例。ijij

12、因果圖的基本符合n或或- -關(guān)系:關(guān)系:如果因 i1 或或因 i2 或或因 in 存在時(shí),結(jié)果 j 才出現(xiàn)。n與與- -關(guān)系:關(guān)系:只有當(dāng)因 i1 與與因 i2 與與因 in 同時(shí)存在時(shí),結(jié)果 j 才出現(xiàn)。j i1i2inj i1i2in因果圖法示例(1)有效等價(jià)類有效等價(jià)類:輸入條件有效類 .abs(N) N 0, N 0maxint k maxint, k maxint測(cè)試用例測(cè)試用例:maxintNresult maxint Nresult55105510000 5410error100-11 56105510011 000給定maxint 和 N ,如果結(jié)果 0 and b 0) th

13、en4. c = c / a5.end if6.if (a 1 or c 1) then7. c = c + 18.end if9.c = b + c程序控制流圖示例:語(yǔ)句覆蓋可發(fā)現(xiàn)的問題(a, b ,c)= (1, 1, 2)3689IFIFENDIFENDIFfeicbad457jh程序源代碼1.dim a, b as integer2.dim c as double3.if (a 0 or b 0) then4. c = c / a5.end if6.if (a 1 and c 1) then7. c = c + 18.end if9.c = b + c程序控制流圖示例:語(yǔ)句覆蓋不能發(fā)現(xiàn)

14、的問題(a, b ,c)= (1, 1, 2)andor3.4.1 判定覆蓋p判定覆蓋法的基本思想是設(shè)計(jì)若干用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。p一個(gè)判定代表著程序的一個(gè)分支, 所以判定覆蓋也被稱為分支覆蓋。示例:繪制控制圖示例:設(shè)計(jì)測(cè)試用例(a, b ,c)= (1, 1, 2)(a, b ,c)= (-1, 1, 0)3.4.2 條件覆蓋p條件覆蓋的基本思想是設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后,要使每個(gè)判斷中每個(gè)條件的可能取值至少滿足一次。(a0 and b0) a0b0 示例:列出所有條件判定條件判定條件M:條件a0: 取.T.

15、時(shí)為T1取.F.時(shí)為F1條件b0: 取.T.時(shí)為T2取.F.時(shí)為F2;判定條件判定條件N:條件a1: 取.T.時(shí)為T3取.F.時(shí)為F3條件c1: 取.T.時(shí)為T4取.F.時(shí)為F4示例:覆蓋所有條件(a, b ,c)= (2, -1, 0)(a, b ,c)= (-1, 1, 2)T1, F2, T3, F4F1, T2, F3, T4但有什么問題嗎?但有什么問題嗎?3.4.3 判定條件覆蓋p判定-條件覆蓋是判定和條件覆蓋設(shè)計(jì)方法的交集,即設(shè)計(jì)足夠的測(cè)試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時(shí),所有判斷的可能結(jié)果至少執(zhí)行一次條件條件取值條件取值條件分支分支判定條件判定條件a0,

16、b0, a1,c1T1,T2,T3,T4a0 AND b0M=.T.N=.T.a=0, b=0, a=1, c1 OR c1M=.F.N=.F.示例:覆蓋判定/條件(a, b ,c)= (2, 1, 2)(a, b ,c)= (-1, 0, 1)T1, T2, T3, T4F1, F2, F3, F43.4.4 條件組合測(cè)試p條件組合覆蓋的基本思想是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能至少出現(xiàn)一次,并且每個(gè)判斷本身的判定結(jié)果也至少出現(xiàn)一次。p它與條件覆蓋的差別是它不是簡(jiǎn)單地要求每個(gè)條件都出現(xiàn)“真”與“假”兩種結(jié)果,而是要求讓這些結(jié)果的所所有可能組合都至少出現(xiàn)一次有可能組合都至少出現(xiàn)

17、一次示例 (1)組合編號(hào) 覆蓋條件取值判定 條 件 取值判定-條件組合1T1,T2M=.T.a0,b0,M取真2T1,F(xiàn)2M=.F.a0,b=0,M取假3F1,T2M=.F.a0,M取假4F1,F(xiàn)2M=.F.a=0,b1,c1,N取真6T3,F(xiàn)4N=.T.a1,c=1,N取真7F3,T4N=.T.a1,N取真8F3,F(xiàn)4N=.F.a=1,c= n+1 test cases for a decision with n inputs. 示例組合編號(hào) 覆蓋條件取值判定條件取值1T1,T2M=.T.2T1,F(xiàn)2M=.F.3F1,T2M=.F.4F1,F(xiàn)2M=.F.5T3,T4N=.T.6T3,F(xiàn)4N=

18、.T.7F3,T4N=.T.8F3,F(xiàn)4N=.F.3.4.5 基本路徑覆蓋p顧名思義,路徑覆蓋就是設(shè)計(jì)所有的測(cè)試用例,來覆蓋程序中的所有可能的執(zhí)行路徑。測(cè)試用例覆蓋路徑覆蓋條件覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5輸入:a=1,b=1,c=-3輸出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F(xiàn)3,F(xiàn)41,8輸入:a=2,b=-1,c=-2輸出:a=2,b=-1,c=-2P3(1-3-4)T1,F(xiàn)2,T3,F(xiàn)42,6輸入:a=-1,b=2,c=3 輸出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F(xiàn)3,

19、T43,7輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5P4(1-3-5)F1,F(xiàn)2,F(xiàn)3,F(xiàn)44,8基本路徑覆蓋的設(shè)計(jì)過程1.依據(jù)代碼繪制流程圖2.確定流程圖的圈復(fù)雜度(cyclomatic complexity )3.確定線性獨(dú)立路徑的基本集合( basis set )4.設(shè)計(jì)測(cè)試用例覆蓋每條基本路徑示例 源代碼Procedure: process records1.Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter

20、;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11. End DoEnd示例 流程圖1910112457836基本路徑測(cè)試:流程圖簡(jiǎn)化12,387694,51011流程圖的圈復(fù)雜度 V(G) = 區(qū)域數(shù)量(由節(jié)點(diǎn)、連線包圍的區(qū)域,包括圖形外部區(qū)域) V(G) = 連線數(shù)量 - 節(jié)點(diǎn)數(shù)量 + 2 V(G) = 簡(jiǎn)單可預(yù)測(cè)節(jié)點(diǎn)數(shù)量 + 1圈復(fù)雜度(圈復(fù)雜度(Cyclomatic complexity):代碼邏輯復(fù)雜度的 度量,提供了被測(cè)代碼的路徑數(shù)量。復(fù)雜度越高,出錯(cuò)的

21、概率越大V(G)modules流程圖復(fù)雜度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4確定線性獨(dú)立的路徑集合p Path1: 1-2-3-6-7-9-10-1-11示例:基本路徑測(cè)試用例 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-111910112458736測(cè)試用例覆蓋集合中每條路徑基本路徑測(cè)試并不是測(cè)試所有路徑的組合,僅僅保證每條基本路徑被執(zhí)行一次 不需要活動(dòng)圖, 但最好繪制程序流程圖 計(jì)算每個(gè)邏輯測(cè)試,也就是布爾操作符數(shù)加1 最好每個(gè)單元都進(jìn)行基

22、本路徑測(cè)試,對(duì)關(guān)鍵組件則是必要的小結(jié)語(yǔ)句覆蓋判定覆蓋DC條件覆蓋CC判定/條件覆蓋DC/CC條件組合覆蓋MCC基本路徑覆蓋BPCl Condition Coverage (CC)l Decision Coverage (DC)l Multiple Condition Coverage (MCC)l Modified Condition/Decision Coverage (MC/DC)MC/DC作業(yè)DC/CCBPCMC/DC1. Testwell CTC+2. CoverageMeter3. BullseyeCoverage4. GCT5. CppUnit6. Dynamic Code Cov

23、erage7. TCAT C/C+8. COVTOOL9. gocv10. xCover+找一合適的函數(shù)代碼 + 選擇一覆蓋率工具 完成三種覆蓋率的測(cè)試小結(jié):方法的靈活運(yùn)用代碼中循環(huán)結(jié)構(gòu)如何測(cè)試?從數(shù)據(jù)輸入和結(jié)構(gòu)兩方面來考慮n目標(biāo)目標(biāo): 在循環(huán)內(nèi)部及邊界上執(zhí)行測(cè)試在循環(huán)內(nèi)部及邊界上執(zhí)行測(cè)試循環(huán)測(cè)試 11.簡(jiǎn)單循環(huán)簡(jiǎn)單循環(huán)(迭代次數(shù)n) 完全跳過循環(huán) 只經(jīng)過循環(huán)一次 經(jīng)過循環(huán)兩次 經(jīng)過循環(huán)m( m 1push height max-1toptop說明push *示例:狀態(tài)圖 輸入輸入狀態(tài)狀態(tài)initpushpopdeletetopinitialemptyemptyfillederrordelet

24、ederrorfilledfilled(1)full(2)empty(3)filled(4)errorfilledfullfullfillederrorfulldeleted(1)-push height 1狀態(tài)表initpush initialempty empty deleted filled filled filledfullfullfilledfulldeletepushpushpoptoptoppush *poppop ERRORpop ERRORtop ERRORdelete filled ERRORdelete狀態(tài)轉(zhuǎn)化樹生成測(cè)試用例EFSM工具 - FSME補(bǔ)充:基于用戶場(chǎng)景的測(cè)試w也稱作基于用戶場(chǎng)景測(cè)試(user scenario

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論