版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 軟件測試方法和技術(shù)軟件測試方法和技術(shù)第第3章章 軟件測試的方法軟件測試的方法朱少民 K http:/ 第2章 回顧p軟件缺陷是軟件質(zhì)量的對立面p軟件缺陷(Bug)是什么p驗證和確認p軟件測試的分類p靜態(tài)測試與動態(tài)測試p主動測試與被動測試p黑盒測試與白盒測試p測試級別:單元、集成、系統(tǒng)和驗收p軟件測試計劃與用例p專業(yè)測試人員的責任和要求第3章 軟件測試的方法3.1 基于直覺和經(jīng)驗的方法3.2 基于輸入域的方法3.3 基于組合及其優(yōu)化的技術(shù)3.4 基于邏輯覆蓋的方法3.5 基于故障模式的測試方法3.6 基于模型的測試方法3.7 形式化方法方法論和具體方法p從方法論看,更多體現(xiàn)了一種哲學的思想從方
2、法論看,更多體現(xiàn)了一種哲學的思想,例如辯證統(tǒng)一的方法,在測試中有許多對立統(tǒng)一體,如靜態(tài)測試和動態(tài)測試、白盒測試和黑盒測試、自動化測試和手工測試等。p軟件測試的方法論來源于軟件工程的方法論,例如有面向?qū)ο蟮拈_發(fā)方法,就有面向?qū)ο蟮臏y試方法;有敏捷方法,就有和敏捷方法對應的敏捷測試。測試領(lǐng)域Domains under TestApplied toDNF: Disjunctive Normal Form(析取范式) FSM: Finite Status Machine測試方法 SWEBOK 3.06具體方法或技術(shù)7等價類、邊界值、兩兩組合等價類、邊界值、兩兩組合(pairwisepairwise)、
3、隨機測試)、隨機測試黑盒測試黑盒測試基于控制流的標準、基于數(shù)據(jù)流的標準、CBT參考模型白盒測試故障模型、錯誤猜測法、變異測試操作配置(operational profile)、用戶觀察啟發(fā)黑盒測試決策表、有限狀態(tài)機、形式化驗證、TTCN3、工作流模型OOS、web、real-time、SOA、embedded、safe-critical應用領(lǐng)域過去常提“黑盒和白盒”方法8黑盒方法白盒方法其它方法 world93.1 基于直覺和經(jīng)驗的方法Ad-hoc測試方法和ALAC測試 錯誤推測法 3.1.1 ALAC測試和隨機測試ALAC,是Act-like-a-customer(象客戶那樣做)的簡寫,AL
4、AC測試方法是一種基于客戶使用產(chǎn)品的知識開發(fā)出來的測試方法,它的出發(fā)點是著名的Pareto 80/20規(guī)律3.1.2 錯誤猜測法錯誤推測法是測試者根據(jù)經(jīng)驗、知識和直覺來發(fā)現(xiàn)軟件錯誤,來推測程序中可能存在的各種錯誤,從而有針對性的進行測試。 單元測試中發(fā)現(xiàn)的模塊錯誤;單元測試中發(fā)現(xiàn)的模塊錯誤; 產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯誤; 輸入數(shù)據(jù)為輸入數(shù)據(jù)為0 0或字符為空;或字符為空; 當軟件要求輸入時當軟件要求輸入時( (比如在文本框中比如在文本框中),),不是沒有輸入正確的信不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了息,而是根本沒有輸入任何內(nèi)容,單單按了E
5、nterEnter鍵;鍵; 3.2 基于輸入域的測試方法3.2.1 等價類劃分方法設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受異常數(shù)據(jù)的考驗。經(jīng)過正反的測試才能確保軟件具有更高的可靠性。all inputsi1i4i2i3確定等價類的方法in rangegreater than rangeless than rangevaluegreater than valueless than value在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無
6、效等價類確定等價類的方法(2)not member of setmember of setBooleanNon-Boolean確定等價類的方式 (3)有什么具體案例?等價類測試用例-Example等價類1: Integer等價類2: Decimal fraction等價類3: Negative等價類4: Invalid input根據(jù)等價類創(chuàng)建測試用例的步驟a) 建立等價類表,列出所有劃分出的等價類:b) 為每個等價類規(guī)定一個唯一的編號;c) 設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類d) 重復c),最后使得所有有效等價類均被測試用例所覆蓋;e) 設(shè)計一個新的測試用例,使其只
7、覆蓋一個無效等價類。f) 重復e)使所有無效等價類均被覆蓋。輸入條件有效等價類無效等價類3.2.2 邊界值分析方法 確定邊界情況(輸入或輸出等價類的邊界) 選取正好等于、剛剛大于或小于邊界值作為測試數(shù)據(jù)確定邊界值的方法如果輸入條件規(guī)定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。a ab ba ab b確定邊界值的方法(2)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。如果程序中使用了一個內(nèi)部數(shù)據(jù)
8、結(jié)構(gòu),則應當選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。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 測試測試 限制性用戶輸入:限制性用戶輸入:6位正整數(shù)位正整數(shù) 無效值無效值: X8 = 000123 X9 = asd123 X10 = EmptyBVA 示例3Test cases :任意的正常值: 隨機選擇幾個選項 邊界值: 選擇所有選項 邊界值: 一個都不選邊界值: 選擇一個選項二進制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 判定表方法判定表元素判定表方法步驟條件樁動作樁規(guī)則判定表 示例1IDID項目名稱項目名稱R1R1R2R2R3R3R4
11、R4R5R5條件項C1此商品在經(jīng)營范圍NYYYYC2此商品可以發(fā)貨YYNNC3此客戶沒有拖欠過付款YNYN動作項A1貨到后允許客戶轉(zhuǎn)賬1A2貨到客戶必須立即付款1A3重新組織貨源11A4電話通知1A5書面通知11判定表示例判定表示例23.3.2 因果圖法 分析軟件規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),給每個原因和結(jié)果賦予一個標示符。 找出原因與結(jié)果,原因與原因之間的對應關(guān)系,劃出因果圖 在因果圖上標上哪些不可能發(fā)生的因果關(guān)系,表明約束或限制條件 根據(jù)因果圖,創(chuàng)建判定表,將復雜的邏輯關(guān)系和多種條件組合很具體明確的表示出來 把判定表的每一行作為依據(jù)設(shè)計測試用例。ijij
12、因果圖的基本符合n或或- -關(guān)系:關(guān)系:如果因 i1 或或因 i2 或或因 in 存在時,結(jié)果 j 才出現(xiàn)。n與與- -關(guān)系:關(guān)系:只有當因 i1 與與因 i2 與與因 in 同時存在時,結(jié)果 j 才出現(xiàn)。j i1i2inj i1i2in因果圖法示例(1)有效等價類有效等價類:輸入條件有效類 .abs(N) N 0, N 0maxint k maxint, k maxint測試用例測試用例: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程序控制流圖示例:語句覆蓋可發(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程序控制流圖示例:語句覆蓋不能發(fā)現(xiàn)
14、的問題(a, b ,c)= (1, 1, 2)andor3.4.1 判定覆蓋p判定覆蓋法的基本思想是設(shè)計若干用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。p一個判定代表著程序的一個分支, 所以判定覆蓋也被稱為分支覆蓋。示例:繪制控制圖示例:設(shè)計測試用例(a, b ,c)= (1, 1, 2)(a, b ,c)= (-1, 1, 0)3.4.2 條件覆蓋p條件覆蓋的基本思想是設(shè)計若干測試用例,執(zhí)行被測程序以后,要使每個判斷中每個條件的可能取值至少滿足一次。(a0 and b0) a0b0 示例:列出所有條件判定條件判定條件M:條件a0: 取.T.
15、時為T1取.F.時為F1條件b0: 取.T.時為T2取.F.時為F2;判定條件判定條件N:條件a1: 取.T.時為T3取.F.時為F3條件c1: 取.T.時為T4取.F.時為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è)計方法的交集,即設(shè)計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時,所有判斷的可能結(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 條件組合測試p條件組合覆蓋的基本思想是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能至少出現(xiàn)一次,并且每個判斷本身的判定結(jié)果也至少出現(xiàn)一次。p它與條件覆蓋的差別是它不是簡單地要求每個條件都出現(xiàn)“真”與“假”兩種結(jié)果,而是要求讓這些結(jié)果的所所有可能組合都至少出現(xiàn)一次有可能組合都至少出現(xiàn)
17、一次示例 (1)組合編號 覆蓋條件取值判定 條 件 取值判定-條件組合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. 示例組合編號 覆蓋條件取值判定條件取值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è)計所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑。測試用例覆蓋路徑覆蓋條件覆蓋組合輸入: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è)計過程1.依據(jù)代碼繪制流程圖2.確定流程圖的圈復雜度(cyclomatic complexity )3.確定線性獨立路徑的基本集合( basis set )4.設(shè)計測試用例覆蓋每條基本路徑示例 源代碼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基本路徑測試:流程圖簡化12,387694,51011流程圖的圈復雜度 V(G) = 區(qū)域數(shù)量(由節(jié)點、連線包圍的區(qū)域,包括圖形外部區(qū)域) V(G) = 連線數(shù)量 - 節(jié)點數(shù)量 + 2 V(G) = 簡單可預測節(jié)點數(shù)量 + 1圈復雜度(圈復雜度(Cyclomatic complexity):代碼邏輯復雜度的 度量,提供了被測代碼的路徑數(shù)量。復雜度越高,出錯的
21、概率越大V(G)modules流程圖復雜度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4確定線性獨立的路徑集合p Path1: 1-2-3-6-7-9-10-1-11示例:基本路徑測試用例 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-111910112458736測試用例覆蓋集合中每條路徑基本路徑測試并不是測試所有路徑的組合,僅僅保證每條基本路徑被執(zhí)行一次 不需要活動圖, 但最好繪制程序流程圖 計算每個邏輯測試,也就是布爾操作符數(shù)加1 最好每個單元都進行基
22、本路徑測試,對關(guān)鍵組件則是必要的小結(jié)語句覆蓋判定覆蓋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ù)代碼 + 選擇一覆蓋率工具 完成三種覆蓋率的測試小結(jié):方法的靈活運用代碼中循環(huán)結(jié)構(gòu)如何測試?從數(shù)據(jù)輸入和結(jié)構(gòu)兩方面來考慮n目標目標: 在循環(huán)內(nèi)部及邊界上執(zhí)行測試在循環(huán)內(nèi)部及邊界上執(zhí)行測試循環(huán)測試 11.簡單循環(huá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)化樹生成測試用例EFSM工具 - FSME補充:基于用戶場景的測試w也稱作基于用戶場景測試(user scenario
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度安全風險評估責任書協(xié)議預防事故發(fā)生3篇
- 2024紙箱購銷合同書
- 2025年度電力工程車輛司機聘用協(xié)議書及安全要求3篇
- 2025年度餐飲服務業(yè)個人臨時雇傭合同范本4篇
- 2025年校企合作產(chǎn)學研合作創(chuàng)新基地建設(shè)合同3篇
- 2025年度個人合伙餐飲連鎖經(jīng)營合作協(xié)議書4篇
- 2025個人工傷賠償協(xié)議書范本5篇
- 2025年江西贛州稀土集團有限公司招聘筆試參考題庫含答案解析
- 2025年蓄水池建筑工程施工質(zhì)量保修服務合同3篇
- 2025年遼寧朝陽水務集團有限公司招聘筆試參考題庫含答案解析
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 英語 含答案
- 電力工程施工安全風險評估與防控
- 醫(yī)學教程 常見體表腫瘤與腫塊課件
- 內(nèi)分泌系統(tǒng)異常與虛勞病關(guān)系
- 智聯(lián)招聘在線測評題
- DB3418T 008-2019 宣紙潤墨性感官評判方法
- 【魔鏡洞察】2024藥食同源保健品滋補品行業(yè)分析報告
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題及答案
- 鋼筋桁架樓承板施工方案
- 2024年駐村第一書記工作總結(jié)干貨3篇
- 教室裝修施工計劃
評論
0/150
提交評論