版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件質(zhì)量保證與測試4.7程序變異測試第4章白盒測試SoftwareQualityAssuranceandTesting導言變異測試,好奇怪的名字!什么是變異測試?為什么要有變異測試?變異測試新檢查儀器沒病做一個類比
醫(yī)院新儀器設備;對一批疑似病人進行了檢查;檢查結果是這些疑似病人都沒有患病;此時,無法斷定是這些人確實沒有病,還是這臺儀器有問題。測試中類似問題
軟件測試中也有類似情況。假設在對某個軟件進行測試時,我們設計并執(zhí)行了大量測試數(shù)據(jù),但沒有發(fā)現(xiàn)程序有什么問題,執(zhí)行結果都是正確的。這時有兩種可能:
測試程序測試數(shù)據(jù)測試通過測試數(shù)據(jù)質(zhì)量差程序質(zhì)量高?那么到底是哪種情況呢?新檢查儀器沒病提問:醫(yī)院如何解決類似問題
被檢查的人確實沒有病還是這臺儀器有問題?軟件測試中類似的辦法
人為的按照某種規(guī)則把程序修改一下,讓它有錯誤,然后再去執(zhí)行前面的測試數(shù)據(jù)。
程序被人為改錯測試數(shù)據(jù)
測試?若發(fā)現(xiàn)了植入的錯誤,說明測試數(shù)據(jù)質(zhì)量還是可以的。若沒有發(fā)現(xiàn),則說明先前設計的測試數(shù)據(jù)質(zhì)量確實不高。引入主題——變異測試
醫(yī)院用確實有病的人來檢驗診斷儀器是否有效,這個例子可以幫助我們理解什么是變異測試,它有什么作用。
簡單地說,人為地把程序修改得有錯誤,以檢驗測試用例是否有效,這就是變異測試。
當然這只是變異測試的一種情況,變異測試的作用也不止這一種。學習目標本知識單元我們就來學習變異測試,通過學習,我們應當實現(xiàn)的教學目標為:掌握程序變異和變異測試的基本概念;理解變異測試產(chǎn)生的原因和作用;具備對程序進行變異并進行變異測試的能力;學會通過變異測試來改進測試用例設計;理解變異測試的優(yōu)缺點,并能合理運用變異測試技術。如何變異目標:修改程序讓它有錯以檢驗測試數(shù)據(jù)是否有效。問題:什么樣的修改最有現(xiàn)實意義?對檢驗測試數(shù)據(jù)有效性、對提高測試的質(zhì)量是較為有現(xiàn)實作用?做法:要檢查驗證測試數(shù)據(jù)的有效性,首先應當模擬常見的錯誤和疏漏來修改程序。如果連這些都發(fā)現(xiàn)不了,那測試數(shù)據(jù)的質(zhì)量肯定是有問題的,需要進一步完善。概念:程序變異
變異測試中的程序變異是指:基于良好定義的變異操作,對程序進行修改,得到源程序的變異程序。而良好定義的變異操作可以是模擬典型的應用錯誤。例如:模擬操作符使用錯誤,把大于等于寫成小于等于,或者是強制出現(xiàn)特定數(shù)據(jù),以便對特定的代碼或者特定的情況進行有效地測試,例如使得每個表達式都等于0,以測試某種特殊情況。用“>”來替換“>=”程序變異通常只是一種輕微改變程序的操作。例如,有程序段P1,可以用“>”來替換程序中的“>=”,產(chǎn)生變異程序P2。程序變異程序段P1if(x>=60)y=“合格”;elsey=“不合格”;程序段P2if(x>60)y=“合格”;elsey=“不合格”;請同學們也模擬程序編寫當中的典型錯誤和疏漏,提出一項自己的程序變異方案。程序變異程序段P1if(x>=60)y=“合格”;elsey=“不合格”;?變異測試
先對程序進行變異,然后再來執(zhí)行測試,以檢驗測試數(shù)據(jù)集是否有效,或者達到某種特定目的的測試方法叫做變異測試。變異測試有時也叫做“變異分析”,是一種對測試數(shù)據(jù)集的有效性、充分性進行評估的技術,以便指導我們創(chuàng)建更有效的測試數(shù)據(jù)集。產(chǎn)生于20世紀70年代最初是為了揭示軟件測試中的不足如果一個已知的修改甚至是錯誤被植入到程序中,而測試結果不受影響。則說明:測試不充分或者測試無效變異測試
事先被良好定義的變異操作可以稱為變異算子。變異算子變異算子描述運算符變異對關系運算符“<”、“<=”、“>”、“>=”進行替換,如將“<”替換為“<=”對自增運算符“++”或自減運算符“--”進行替換,如將“++”替換為“--”對與數(shù)值運算的二元算術運算符進行替換,如將“+”替換為“-”將程序中的條件運算符替換為相反運算符,如將“==”替換為“!=”數(shù)值變異對程序中整數(shù)類型、浮點數(shù)類型的變量取相反數(shù),如將“i”替換為“-i”方法返回值變異刪除程序中返回值類型為void的方法對程序中方法的返回值進行修改,如將“true”修改為“false”
程序:P測試數(shù)據(jù)集:T變異算子:F()F(P)Mi(i=1,2,3...)Test(P,T)andTest(Mi,T)
IfTest(P,T)<>Test(Mi,T)//(i=x)
Mi
isKilledelseMi
isaliveEndifIfMi_alive
<>PImprove(T)變異測試存在變異程序與原程序等價的特殊情形!!!Mi_alive
==P程序段P1if(x>=60)y=“合格”;elsey=“不合格”;程序段P’if(x<60)y=“不合格”;elsey=“合格”;
針對程序段P1,前面我們已經(jīng)用“>”來替換“>=”,產(chǎn)生了下面的變異程序P2。變異測試實例用“>”來替換“>=”程序段P1if(x>=60)y=“合格”;elsey=“不合格”;程序段P2if(x>60)y=“合格”;elsey=“不合格”;
除了這種變異之外,還可以用“=”來替換“>=”,產(chǎn)生下面的變異程序P3如下:變異測試實例用“=”來替換“>=”程序段P1if(x>=60)y=“合格”;elsey=“不合格”;程序段P3if(x=60)y=“合格”;elsey=“不合格”;兩個測試數(shù)據(jù)都能得到正確結果,還需要增加測試用例,例如x=60變異測試實例測試員A
程序段P1if(x>=60)y=“合格”;elsey=“不合格”;測試數(shù)據(jù)集T1x=70x=50針對設計測試程序段P2if(x>60)y=“合格”;elsey=“不合格”;兩個測試數(shù)據(jù)也都得到正確結果,還需要增加測試用例?。?!變異測試實例測試員B
程序段P1if(x>=60)y=“合格”;elsey=“不合格”;測試數(shù)據(jù)集T2x=60x=50針對設計測試程序段P3if(x=60)y=“合格”;elsey=“不合格”;
那么請大家思考一下,還需要增加一個什么樣測試用例,才能殺死變異程序P3,并給出自己的答案。參與式學習?變異程序P3變異測試的特點
程序變異測試方法是一種錯誤驅(qū)動測試。該方法通常是針對某類特定的程序錯誤。
關系運算符使用錯誤方法返回值錯誤數(shù)據(jù)類型錯誤變異測試的優(yōu)缺點優(yōu)點缺點
幫助發(fā)現(xiàn)測試工作中的不足,提高測試數(shù)據(jù)集的覆蓋度和有效性,改進和優(yōu)化測試數(shù)據(jù)集,可用于在細節(jié)方面改進程序源代碼。
如果要讓變異測試針對各種情況,則必須引入大量的變異,這將導致測試成本過大,變異測試一般并不能單獨使用,而需要與傳統(tǒng)的其它測試方法技術相結合。練習與測驗給定程序段P如下:If(cj1<0orcj1>100)Return“平時成績超出范圍”If(cj2<0orcj2>100)Return“期末成績超出范圍”Print“成績輸入符合要求”請按照某種測試設計方法,為該程序段設計一組測試數(shù)據(jù)T模擬某種常見的錯誤和疏漏,定義變異算子F()用F()對程序P進行變異,得到變異程序PX檢查T能否殺死PX
如果T不能殺死PX,改進T,直到能殺死為止應用拓展1.科研應用:算法優(yōu)化
某智能算法F有參數(shù)C,根據(jù)已有研究,在某領域應用此算法時,參數(shù)取C=c0時,算法給出的結果最好?,F(xiàn)將此算法應用于另一領域,參數(shù)取C=c0時,算法給出的結果難以令人滿意,問如何改進?應用拓展1.科研應用:算法優(yōu)化
改進的常用方法之一,就是嘗試參數(shù)C取不同的值,然后通過比較算法執(zhí)行結果的優(yōu)劣,來確定C的最佳取值。
讓C取不同的值,得到的不同的程序,可以看成是對源程序的變異,通過對變異程序的測試,可以嘗試尋找算法參數(shù)的最優(yōu)配置,從而實現(xiàn)算法優(yōu)化。
類似于這樣的變異測試,廣泛應用于科學研究。應用拓展2.學科競賽:全國大學生軟件測試大賽
某次賽題:給定Java源代碼RedBlackTree,要求寫出測試腳本實現(xiàn)分支覆蓋,并能殺死與源代碼不等價的變異程序。
實現(xiàn)對代碼的測試覆蓋是測試時應當達到的目標之一,但僅此還不夠。應用拓展2.學科競賽:全國大學生軟件測試大賽
測試覆蓋,只是說明測試到了所有要測試的位置,但并不意味著一定能發(fā)現(xiàn)可能存在的缺陷。這就類似于班干部檢查衛(wèi)生時查了所有的寢室,但并不一定能保證沒有任何衛(wèi)生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026湖南岳陽汨羅市第三人民醫(yī)院面向社會招聘編外勞務派遣制專業(yè)技術人員7人備考題庫附答案
- 2026福建廈門市湖里區(qū)國有資產(chǎn)投資集團有限公司招聘1人參考題庫附答案
- 2026福建省標準化研究院下屬國有企業(yè)第一批人員招聘5人備考題庫附答案
- 2026福建省順昌人力資源服務有限公司( 就業(yè)見習崗位)招聘1人參考題庫附答案
- 2026西北工業(yè)大學材料學院輻射探測材料與器件團隊招聘1人(陜西)參考題庫附答案
- 公共交通車輛購置管理制度
- 三臺縣2025年縣級事業(yè)單位面向縣內(nèi)鄉(xiāng)鎮(zhèn)公開選調(diào)工作人員(16人)參考題庫附答案
- 豐城市2025年機關事業(yè)單位公開選調(diào)工作人員【48人】考試備考題庫附答案
- 山東高速集團有限公司2025年下半年校園招聘(管培生和戰(zhàn)略產(chǎn)業(yè)人才招聘)(60人) 考試備考題庫附答案
- 招130人!海北州公安局2025年度面向社會公開招聘警務輔助人員(第二批)參考題庫附答案
- 2025 年度VC PE 市場數(shù)據(jù)報告 投中嘉川
- 2025年網(wǎng)約車司機收入分成合同
- 2026年海南財金銀河私募基金管理有限公司招聘備考題庫參考答案詳解
- 2026年GRE數(shù)學部分測試及答案
- 癌癥疼痛與心理護理的綜合治療
- 浙江省寧波市鎮(zhèn)海中學2026屆高二上數(shù)學期末教學質(zhì)量檢測模擬試題含解析
- (2025年)電力交易員練習試題附答案
- 2026年咨詢工程師現(xiàn)代咨詢方法與實務模擬測試含答案
- 2026屆湖北省黃岡市重點名校數(shù)學高一上期末質(zhì)量檢測試題含解析
- 甘肅省酒泉市2025-2026學年高一上學期期末語文試題(解析版)
- 2026年滬教版初一歷史上冊期末考試題目及答案
評論
0/150
提交評論