專利名稱::一種測(cè)試用例聚類取樣方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于軟件測(cè)試領(lǐng)域,涉及軟件測(cè)試結(jié)果的驗(yàn)證,首先根據(jù)執(zhí)行路徑對(duì)測(cè)試用例進(jìn)行聚類,然后從各個(gè)類簇中抽取測(cè)試用例來(lái)讓人工檢查測(cè)試結(jié)果,通過(guò)約簡(jiǎn)需要人工檢查結(jié)果的測(cè)試用例集來(lái)節(jié)約人力。本發(fā)明主要應(yīng)用于測(cè)試輸入的產(chǎn)生和測(cè)試用例的執(zhí)行可以自動(dòng)完成,但測(cè)試結(jié)果需要人工比對(duì)的場(chǎng)景下,為一種測(cè)試用例聚類取樣方法。
背景技術(shù):
:傳統(tǒng)的軟件測(cè)試方法包括三個(gè)步驟1)創(chuàng)建測(cè)試輸入;2)執(zhí)行測(cè)試用例;3)檢查測(cè)試結(jié)果。軟件測(cè)試需要耗費(fèi)大量的時(shí)間和人力,但它是確保軟件質(zhì)量的重要手段。為了節(jié)約測(cè)試成本,研究人員設(shè)計(jì)出了一些自動(dòng)化的工具來(lái)幫助生成測(cè)試輸入,執(zhí)行測(cè)試用例和檢查測(cè)試結(jié)果。然而,在操作型測(cè)試(如beta測(cè)試,領(lǐng)域測(cè)試)中,測(cè)試結(jié)果多樣化,無(wú)法事先精確的描述清楚,因此需要人工去驗(yàn)證,從而耗費(fèi)大量的人力。針對(duì)這種測(cè)試輸入的產(chǎn)生和測(cè)試用例的執(zhí)行可以自動(dòng)完成,但測(cè)試結(jié)果需要人工驗(yàn)證的情況,DavidLeon等人提出了基于觀測(cè)的軟件測(cè)試技術(shù)(Observation-BasedTesting),包括三個(gè)步驟1)為所有測(cè)試用例創(chuàng)建好測(cè)試輸入;2)執(zhí)行所有的測(cè)試用例,并記錄下每個(gè)測(cè)試用例的執(zhí)行路徑;3)分析每個(gè)測(cè)試用例的執(zhí)行路徑信息,挑選測(cè)試用例來(lái)讓人工檢查其測(cè)試結(jié)果是否符合需求。因此,基于觀測(cè)的軟件測(cè)試技術(shù)是通過(guò)減少需要人工檢查的測(cè)試用例數(shù)來(lái)節(jié)約人力,但同時(shí)盡可能挑出最多的失敗用例以保持測(cè)試的有效性。2001年,WilliamDickinson等人用通過(guò)實(shí)驗(yàn)證明了聚類過(guò)濾技術(shù)是一種有效的基于觀測(cè)的軟件測(cè)試技術(shù),主要包括以下三個(gè)步驟1.運(yùn)行所有的測(cè)試用例,記錄下執(zhí)行路徑信息。2.根據(jù)測(cè)試用例的執(zhí)行路徑來(lái)聚類,這樣具有相似執(zhí)行路徑的測(cè)試用例就會(huì)被聚到同一個(gè)類簇中。3.從每個(gè)類簇中取樣,挑選出來(lái)的測(cè)試用例構(gòu)成了約簡(jiǎn)后的測(cè)試用例集。測(cè)試人員只需要對(duì)這些測(cè)試用例進(jìn)行驗(yàn)證即可。其中第3步的取樣方法會(huì)很大程度的影響測(cè)試用例集約簡(jiǎn)的效果。已經(jīng)有學(xué)者提出了以下幾種取樣方法1)從每個(gè)類簇中隨機(jī)挑選一個(gè)(One-per-clusterSampling)在最理想的情況下,相同程序錯(cuò)誤導(dǎo)致的失敗測(cè)試用例都聚在同一個(gè)類簇中。要找出所有的程序錯(cuò)誤,只需要從每個(gè)類簇中隨機(jī)挑選一個(gè)測(cè)試用例即可。但實(shí)際上聚類的效果不可能那么好,一個(gè)類簇中可能混雜了成功測(cè)試用例和不同的程序錯(cuò)誤導(dǎo)致的失敗測(cè)試用例。另外,僅根據(jù)該錯(cuò)誤導(dǎo)致的一個(gè)失敗測(cè)試用例,程序員很難進(jìn)行錯(cuò)誤定位。因此,取樣的目標(biāo)是盡可能找出最多的失敗測(cè)試用例。2)從每個(gè)類簇中隨機(jī)挑選多個(gè)(N-per-clusterSampling)該方法旨在通過(guò)挑選更多的測(cè)試用例來(lái)找出更多的失敗用例。但是該方法只是“從每個(gè)類簇中隨機(jī)挑選一個(gè)”的簡(jiǎn)單擴(kuò)展,它們本質(zhì)上都是簡(jiǎn)單的隨機(jī)抽樣,并沒(méi)有利用任何信息來(lái)指導(dǎo)抽樣。3)自適應(yīng)取樣(AdaptiveSampling)首先從每個(gè)類簇中隨機(jī)挑選一個(gè)測(cè)試用例,然后對(duì)所有這些測(cè)試用例的執(zhí)行結(jié)果進(jìn)行驗(yàn)證。如果一個(gè)測(cè)試用例失敗了,則它所在類簇中的所有剩余測(cè)試用例都會(huì)被挑選出來(lái)進(jìn)行驗(yàn)證;否則,該測(cè)試用例成功了,則它所在類簇中所有剩余測(cè)試用例都被過(guò)濾掉。WilliamDickinson等人通過(guò)實(shí)驗(yàn)證明,該自適應(yīng)挑選方法要比以上兩種簡(jiǎn)單隨機(jī)抽樣更有效。在約簡(jiǎn)集大小一樣的情況下,該方法能挑選出更多的失敗測(cè)試用例。然而,這種自適應(yīng)取樣技術(shù)的效果很大程度上依賴于第一次隨機(jī)挑選出的測(cè)試用例。如果從一個(gè)類簇中隨機(jī)挑選出的測(cè)試用例驗(yàn)證結(jié)果為失敗,那么整個(gè)類簇都會(huì)被選中,即使該類簇中成功測(cè)試用例占了大部分;同樣,如果從一個(gè)類簇中隨機(jī)挑選出的測(cè)試用例驗(yàn)證結(jié)果為成功,那么整個(gè)類簇都會(huì)被拋棄,即使該類簇中失敗測(cè)試用例占了大部分。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題是現(xiàn)有的基于觀測(cè)的軟件測(cè)試技術(shù)在測(cè)試結(jié)果檢查上不夠全面,需要改進(jìn)現(xiàn)有的“自適應(yīng)取樣”技術(shù),充分利用每個(gè)類簇中已被選中的測(cè)試用例的執(zhí)行頻譜信息來(lái)幫助挑選測(cè)試用例,并決定何時(shí)停止從該類簇中取樣。本發(fā)明的技術(shù)方案為一種測(cè)試用例聚類取樣方法,軟件測(cè)試的測(cè)試用例執(zhí)行后,根據(jù)測(cè)試用例的執(zhí)行路徑聚類得到多個(gè)類簇,在類簇中挑選測(cè)試用例進(jìn)行驗(yàn)證,根據(jù)被選中的測(cè)試用例的驗(yàn)證結(jié)果,計(jì)算其所執(zhí)行的語(yǔ)句的可信度,如果測(cè)試用例驗(yàn)證通過(guò),語(yǔ)句可信度增加,反之則減少;如果一個(gè)語(yǔ)句的可信度低于給定的閾值,則該語(yǔ)句為可疑語(yǔ)句,可疑語(yǔ)句構(gòu)成可疑語(yǔ)句集合;根據(jù)可疑語(yǔ)句集合計(jì)算該類簇中剩余的每個(gè)測(cè)試用例失敗的可能性,某測(cè)試用例執(zhí)行過(guò)越多可疑語(yǔ)句其失敗可能性越高,挑選失敗可能性最高的那個(gè)測(cè)試用例,然后根據(jù)該測(cè)試用例的驗(yàn)證結(jié)果重新計(jì)算各語(yǔ)句的可信度,更新可疑語(yǔ)句集合,并計(jì)算未驗(yàn)證的剩余測(cè)試用例失敗的可能性,挑選下一個(gè)失敗可能性最高的測(cè)試用例來(lái)驗(yàn)證其結(jié)果;整個(gè)取樣過(guò)程如此重復(fù)下去,直到該類簇中所有剩余測(cè)試用例的失敗可能性都為0,即剩余測(cè)試用例的所執(zhí)行語(yǔ)句均不在可疑語(yǔ)句集合中,取樣剩余的測(cè)試用例均不再驗(yàn)證其結(jié)果,實(shí)現(xiàn)測(cè)試用例的約簡(jiǎn)并確保被取樣的測(cè)試用例中失敗測(cè)試用例的比例。本發(fā)明具體步驟如下1)設(shè)聚類后得到m個(gè)類簇C1,C2...Cffl,j表示類簇編號(hào),初始化j=1;2)初始化所有語(yǔ)句的可信度為0;從類簇Ci中挑選執(zhí)行語(yǔ)句最多的測(cè)試用例t;3)驗(yàn)證測(cè)試用例測(cè)試人員驗(yàn)證測(cè)試用例t的執(zhí)行結(jié)果,獲取反饋信息該測(cè)試用例是失敗,還是成功;4)計(jì)算執(zhí)行語(yǔ)句可信度根據(jù)測(cè)試用例t的驗(yàn)證結(jié)果,計(jì)算語(yǔ)句的可信度,計(jì)算語(yǔ)句可信度的公式為confidence(s)=passed(s)-failed(s),即語(yǔ)句s的可信度等于執(zhí)行過(guò)S并且通過(guò)的測(cè)試用例的個(gè)數(shù),減去執(zhí)行過(guò)S并且失敗的測(cè)試用例個(gè)數(shù),也就是如果t驗(yàn)證失敗了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度減1;否則,t成功了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度加1;5)語(yǔ)句識(shí)別根據(jù)語(yǔ)句的可信度,將語(yǔ)句識(shí)別為可疑語(yǔ)句和可信語(yǔ)句兩種,設(shè)定一個(gè)閾值ConfidenceThreshold,簡(jiǎn)寫為CT,所有可信度小于CT的語(yǔ)句被識(shí)別為可疑語(yǔ)句,具體公式為suspicious(S)={seSIconfidence(s)<CT};所有可信度大于或等于CT的語(yǔ)句被識(shí)別為可信語(yǔ)句,具體公式為correct(S)={seS|confidence(s)>=CT};可疑語(yǔ)句集和可信語(yǔ)句集之間沒(méi)有交集胃ΠCW(S)=0.6)測(cè)試用例失敗可能性度量測(cè)試用例t執(zhí)行過(guò)的語(yǔ)句集表示為t(S)={seSltexecutess},測(cè)試用例t失敗的可能性為其執(zhí)行過(guò)的可疑語(yǔ)句的個(gè)數(shù),計(jì)算公式為failpossibiIity(t)=11(S)Πsuspicious(S)|;7)選取類簇剩余測(cè)試用例中失敗可能性最大的測(cè)試用例根據(jù)計(jì)算出來(lái)的剩余測(cè)試用例的失敗可能性,選取其中失敗可能性最大的測(cè)試用例t’;如果多個(gè)測(cè)試用例擁有最大失敗可能性,則采用隨機(jī)挑選的方法,從中挑選出一個(gè)測(cè)試用例t’;8)如果t’的失敗可能性值為0,則停止從類簇Cj中取樣,j=j+1,如果j<=m則返回步驟2),開(kāi)始從下一個(gè)類簇中取樣;如果j>m,即所有類簇都取樣完畢后,整個(gè)取樣過(guò)程結(jié)束;如果t’的失敗可能性值大于0,則返回步驟3),繼續(xù)從當(dāng)前類簇中取樣。本發(fā)明基于觀測(cè)的軟件測(cè)試技術(shù)中的聚類過(guò)濾技術(shù),為一種測(cè)試用例聚類取樣技術(shù)。本發(fā)明通過(guò)約簡(jiǎn)需要人工驗(yàn)證的測(cè)試用例數(shù)來(lái)節(jié)約人力,同時(shí)確保挑選出盡可能多的失敗測(cè)試用例。取樣驗(yàn)證軟件測(cè)試結(jié)果時(shí),本發(fā)明取樣剩余的測(cè)試用例均不再驗(yàn)證其結(jié)果,實(shí)現(xiàn)了測(cè)試用例的約簡(jiǎn),節(jié)約了人工驗(yàn)證測(cè)試結(jié)果的時(shí)間和精力,同時(shí)又確保被取樣的測(cè)試用例中失敗測(cè)試用例占很大比例,語(yǔ)句的可信度值可以用來(lái)幫助測(cè)試人員進(jìn)行錯(cuò)誤定位。圖1為本發(fā)明的流程示意圖。2(a)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序PrintTokens上的實(shí)驗(yàn)效果圖。圖2(b)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序PrintTokens2上的實(shí)驗(yàn)效果圖。2(c)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序Schedule上的實(shí)驗(yàn)效果圖。圖2(d)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序SChedule2上的實(shí)驗(yàn)效果圖。圖2(e)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序R印Iace上的實(shí)驗(yàn)效果圖。圖2(f)%3-per-clustersampling,adaptivesampling及本發(fā)明ESBS在實(shí)驗(yàn)程序Space上的實(shí)驗(yàn)效果圖。具體實(shí)施例方式本發(fā)明基于觀測(cè)的軟件測(cè)試技術(shù)中的聚類過(guò)濾技術(shù),在類簇中挑選測(cè)試用例進(jìn)行驗(yàn)證,根據(jù)被選中的測(cè)試用例的驗(yàn)證結(jié)果,計(jì)算其所執(zhí)行的語(yǔ)句的可信度,如果測(cè)試用例驗(yàn)證通過(guò),語(yǔ)句可信,反之則為可疑;根據(jù)語(yǔ)句可信度計(jì)算該類簇中剩余的每個(gè)測(cè)試用例失敗的可能性,某測(cè)試用例執(zhí)行過(guò)越多可疑語(yǔ)句其失敗可能性越高,挑選失敗可能性最高的那個(gè)測(cè)試用例,然后根據(jù)該測(cè)試用例的驗(yàn)證結(jié)果重新計(jì)算各語(yǔ)句的可信度,并計(jì)算未驗(yàn)證的剩余測(cè)試用例失敗的可能性,挑選下一個(gè)測(cè)試用例;整個(gè)取樣過(guò)程如此重復(fù)下去,直到該類簇中所有剩余測(cè)試用例的失敗可能性都為0,即剩余測(cè)試用例的所執(zhí)行語(yǔ)句均為可信,則經(jīng)過(guò)取樣驗(yàn)證的測(cè)試用例通過(guò)驗(yàn)證結(jié)果區(qū)分是成功測(cè)試用例還是失敗測(cè)試用例,取樣剩余的測(cè)試用例均為成功測(cè)試用例,實(shí)現(xiàn)該類簇測(cè)試用例的自動(dòng)取樣。通過(guò)或失敗的測(cè)試用例的語(yǔ)句執(zhí)行信息在錯(cuò)誤定位領(lǐng)域被稱為“執(zhí)行頻譜”,由于本發(fā)明是基于已被驗(yàn)證測(cè)試用例的執(zhí)行頻譜信息來(lái)挑選剩余測(cè)試用例的,所以可以稱為基于執(zhí)行頻譜的取樣方法ExecutionSpectraBasedSampling,后面簡(jiǎn)寫為ESBS。如圖1,本發(fā)明步驟如下1)設(shè)聚類后得到m個(gè)類簇C1,C2...Cffl,j表示類簇編號(hào),初始化j=1;2)初始化所有語(yǔ)句的可信度為0;從類簇中挑選執(zhí)行語(yǔ)句最多的測(cè)試用例t3)驗(yàn)證測(cè)試用例測(cè)試人員驗(yàn)證測(cè)試用例t的執(zhí)行結(jié)果,獲取反饋信息該測(cè)試用例是失敗,還是成功;4)計(jì)算執(zhí)行語(yǔ)句可信度根據(jù)測(cè)試用例t的驗(yàn)證結(jié)果,計(jì)算語(yǔ)句的可信度,計(jì)算語(yǔ)句可信度的公式為confidence(s)=passed(s)-failed(s),即語(yǔ)句s的可信度等于執(zhí)行過(guò)S并且通過(guò)的測(cè)試用例的個(gè)數(shù),減去執(zhí)行過(guò)S并且失敗的測(cè)試用例個(gè)數(shù),也就是如果t驗(yàn)證失敗了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度減1;否則,t成功了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度加1;5)語(yǔ)句識(shí)別根據(jù)語(yǔ)句的可信度,將語(yǔ)句識(shí)別為可疑語(yǔ)句和可信語(yǔ)句兩種,設(shè)定一個(gè)閾值ConfidenceThreshold,簡(jiǎn)寫為CT,所有可信度小于CT的語(yǔ)句被識(shí)別為可疑語(yǔ)句,具體公式為suspicious(S)={seSIconfidence(s)<CT};所有可信度大于或等于CT的語(yǔ)句被識(shí)別為可信語(yǔ)句,具體公式為correct(S)={seS|confidence(s)>=CT};可疑語(yǔ)句集和可信語(yǔ)句集之間沒(méi)有交集-AW⑶Π⑶“^⑷=0;6)測(cè)試用例失敗可能性度量測(cè)試用例t執(zhí)行過(guò)的語(yǔ)句集表示為t(S)={seS|texecutess},測(cè)試用例t失敗的可能性為其執(zhí)行過(guò)的可疑語(yǔ)句的個(gè)數(shù),計(jì)算公式為failpossibiIity(t)=11(S)Πsuspicious(S)|;7)選取類簇剩余測(cè)試用例中失敗可能性最大的測(cè)試用例根據(jù)計(jì)算出來(lái)的剩余測(cè)試用例的失敗可能性,選取其中失敗可能性最大的測(cè)試用例t’;如果多個(gè)測(cè)試用例擁有最大失敗可能性,則采用隨機(jī)挑選的方法,從中挑選出一個(gè)測(cè)試用例t’;8)如果t’的失敗可能性值為0,則停止從類簇Cj中取樣,j=j+1,如果j<=m則返回步驟2),開(kāi)始從下一個(gè)類簇中取樣;如果j>m,即所有類簇都取樣完畢后,整個(gè)取樣過(guò)程結(jié)束。如果t’的失敗可能性值大于0,則返回步驟3),繼續(xù)從當(dāng)前類簇中取樣。所有未被取樣出來(lái)的測(cè)試用例不用驗(yàn)證其結(jié)果,這樣就實(shí)現(xiàn)了節(jié)約人力的目的。同時(shí),語(yǔ)句的可信度值可以用來(lái)幫助程序員進(jìn)行錯(cuò)誤定位。下面將結(jié)合實(shí)際例子,說(shuō)明本發(fā)明的具體實(shí)施。假設(shè)一個(gè)類簇中有6個(gè)測(cè)試用例,它們執(zhí)行過(guò)的語(yǔ)句及將來(lái)的驗(yàn)證結(jié)果如表1所示,其中之所以叫“將來(lái)的驗(yàn)證結(jié)果”,是因?yàn)闇y(cè)試用例的驗(yàn)證結(jié)果只有挑選出來(lái)驗(yàn)證了才知道,但例子中為了說(shuō)明挑選出的失敗測(cè)試用例的百分比,在表1中列出了所有測(cè)試用例將來(lái)的驗(yàn)證結(jié)果?,F(xiàn)在我們要用本發(fā)明中的取樣方法從中挑選測(cè)試用例來(lái)讓測(cè)試人員驗(yàn)證。目標(biāo)是挑選出盡可能少的測(cè)試用例,但包含盡可能多的失敗測(cè)試用例。具體的挑選過(guò)程如表2所示。1)剛開(kāi)始,所有語(yǔ)句的可信度初始化為0。因?yàn)殚撝礐T=1,所有語(yǔ)句的可信度都小于CT,即所有語(yǔ)句都是可疑的。因此,t2被第一個(gè)挑選出來(lái),因?yàn)樗鼒?zhí)行了最多的可疑語(yǔ)句,其失敗的可能性值為5。如表2中次序?yàn)?的那行所示,t2驗(yàn)證后為通過(guò),因此t2執(zhí)行過(guò)的語(yǔ)句sl,s2,s4,s5,s6的可信度都加1,此時(shí),只有s3的可信度小于CT,s3是唯一的可疑語(yǔ)句。在剩余的5個(gè)測(cè)試用例中,只有t3和t5執(zhí)行了s3,因此它們擁有相同的失敗可能性值1。2)如表2中次序?yàn)?的那行所示,從t3和t5中隨機(jī)挑選一個(gè)測(cè)試用例,假設(shè)t3被選中,因?yàn)閠3被驗(yàn)證為失敗,t3執(zhí)行過(guò)的語(yǔ)句s2,s3的可信度減1,此時(shí)的可疑語(yǔ)句為s2和S3。在剩余的4個(gè)測(cè)試用例tl,t4,t5,t6中,t4執(zhí)行了s2,t5執(zhí)行了s3,因此它們具有相同的失敗可能性1。3)如表2中次序?yàn)?的那行所示,從t4和t5中隨機(jī)挑選一個(gè)測(cè)試用例,假設(shè)t4被選中,因?yàn)閠4被驗(yàn)證為失敗,t4執(zhí)行過(guò)的語(yǔ)句s2,s5的可信度減1,此時(shí)的可疑語(yǔ)句是s2,s3,s5,在剩余的測(cè)試用例tl,t5,t6中,只有t5執(zhí)行了可疑語(yǔ)句s3,tl和t6沒(méi)有執(zhí)行任何可疑語(yǔ)句。因此只有t5具有失敗可能性1。4)如表2中次序?yàn)?的那行所示,t5被選中,因?yàn)閠5被驗(yàn)證為通過(guò),t5執(zhí)行過(guò)的語(yǔ)句sl,s3,s4的可信度加1,此時(shí)的可疑語(yǔ)句為s2,s3,s5,剩余的測(cè)試用例tl,t6都沒(méi)有執(zhí)行任何可疑語(yǔ)句,即失敗可能性值都為0。該類簇取樣結(jié)束??偨Y(jié)該類簇中共有6個(gè)測(cè)試用例如表1,我們選出了其中四個(gè)測(cè)試用例t2,t3,t4,t5,見(jiàn)表2,讓測(cè)試人員驗(yàn)證其結(jié)果,另外兩個(gè)測(cè)試用例(tl,t6)并未驗(yàn)證其結(jié)果,這樣節(jié)約了測(cè)試人員驗(yàn)證測(cè)試結(jié)果的時(shí)間。表1中共有2個(gè)失敗的測(cè)試用例(t3,t4),在表2中這2個(gè)失敗的測(cè)試用例都被挑選出來(lái)了。也就是說(shuō),測(cè)試用例在只驗(yàn)證了4/6的測(cè)試用例的情況下,找到了100%的失敗的測(cè)試用例,既節(jié)約了時(shí)間,又不影響測(cè)試效果。表1六個(gè)測(cè)試用例及它們執(zhí)行過(guò)的語(yǔ)句和將來(lái)的驗(yàn)證結(jié)果測(cè)試用例執(zhí)行過(guò)的語(yǔ)句將來(lái)的驗(yàn)證結(jié)果~~tlsl,s4,s6MM~t2sl,s2,s4,s5,s6Witt3s2,s3WMt4s2,s5WMt5sl,s3,s4通過(guò)““t6sl,s6MM表2基于表1測(cè)試用例的具體挑選過(guò)程<table>tableseeoriginaldocumentpage8</column></row><table>如圖2(a)-(d),我們將現(xiàn)有的兩種聚類取樣技術(shù)3-per-clustersampling(每個(gè)簇中隨機(jī)取3個(gè)樣本)和adaptivesampling(自適應(yīng)取樣)及本發(fā)明ESBS(基于執(zhí)行頻譜的聚類取樣技術(shù))運(yùn)行在6個(gè)經(jīng)典的西門子實(shí)驗(yàn)程序上。每個(gè)圖中,橫坐標(biāo)代表被挑選出來(lái)驗(yàn)證的測(cè)試用例數(shù)占原有測(cè)試用例數(shù)的百分比(%testsselected),縱坐標(biāo)代表被挑選出的失敗測(cè)試用例數(shù)占原有失敗測(cè)試用例數(shù)的百分比(%failuresfound)。在被挑選出來(lái)的測(cè)試用例數(shù)相同的情況下,找到的失敗測(cè)試用例數(shù)越多,說(shuō)明該取樣技術(shù)效果越好。即在橫坐標(biāo)值相同的情況下,縱坐表值越大,該取樣技術(shù)越好。從圖中可以看出,本發(fā)明ESBS方法在Printtokens,Printtokens,Schedule2,Replace,Space在5個(gè)實(shí)驗(yàn)程序上的效果者剛顯好于3-per-clustersampling禾口adaptivesampling,只有在Schedule上的效果不及adaptivesampling。查找原因后發(fā)現(xiàn),本發(fā)明ESBS的效果很大程度上依賴于錯(cuò)誤定位的效果,而Schedule程序中的錯(cuò)誤不容易定位,從而影響了測(cè)試用例挑選的效果。權(quán)利要求一種測(cè)試用例聚類取樣方法,軟件測(cè)試的測(cè)試用例執(zhí)行后,根據(jù)測(cè)試用例的執(zhí)行路徑聚類得到多個(gè)類簇,其特征是在類簇中挑選測(cè)試用例進(jìn)行驗(yàn)證,根據(jù)被選中的測(cè)試用例的驗(yàn)證結(jié)果,計(jì)算其所執(zhí)行的語(yǔ)句的可信度,如果測(cè)試用例驗(yàn)證通過(guò),語(yǔ)句可信度增加,反之則減少;如果一個(gè)語(yǔ)句的可信度低于給定的閾值,則該語(yǔ)句為可疑語(yǔ)句,可疑語(yǔ)句構(gòu)成可疑語(yǔ)句集合;根據(jù)可疑語(yǔ)句集合計(jì)算該類簇中剩余的每個(gè)測(cè)試用例失敗的可能性,某測(cè)試用例執(zhí)行過(guò)越多可疑語(yǔ)句其失敗可能性越高,挑選失敗可能性最高的那個(gè)測(cè)試用例,然后根據(jù)該測(cè)試用例的驗(yàn)證結(jié)果重新計(jì)算各語(yǔ)句的可信度,更新可疑語(yǔ)句集合,并計(jì)算未驗(yàn)證的剩余測(cè)試用例失敗的可能性,挑選下一個(gè)失敗可能性最高的測(cè)試用例來(lái)驗(yàn)證其結(jié)果;整個(gè)取樣過(guò)程如此重復(fù)下去,直到該類簇中所有剩余測(cè)試用例的失敗可能性都為0,即剩余測(cè)試用例的所執(zhí)行語(yǔ)句均不在可疑語(yǔ)句集合中,取樣剩余的測(cè)試用例均不再驗(yàn)證其結(jié)果,實(shí)現(xiàn)測(cè)試用例的約簡(jiǎn)并確保被取樣的測(cè)試用例中失敗測(cè)試用例的比例。2.根據(jù)權(quán)利要求1所述的一種測(cè)試用例聚類取樣方法,其特征是具體步驟如下1)設(shè)聚類后得到m個(gè)類簇C1,C2...Cffl,j表示類簇編號(hào),初始化j=1;2)初始化所有語(yǔ)句的可信度為0;從類簇Cj中挑選執(zhí)行語(yǔ)句最多的測(cè)試用例t;3)驗(yàn)證測(cè)試用例測(cè)試人員驗(yàn)證測(cè)試用例t的執(zhí)行結(jié)果,獲取反饋信息該測(cè)試用例是失敗,還是成功;4)計(jì)算執(zhí)行語(yǔ)句可信度根據(jù)測(cè)試用例t的驗(yàn)證結(jié)果,計(jì)算語(yǔ)句的可信度,計(jì)算語(yǔ)句可信度的公式為confidence(s)=passed(s)-failed(s),即語(yǔ)句s的可信度等于執(zhí)行過(guò)s并且通過(guò)的測(cè)試用例的個(gè)數(shù),減去執(zhí)行過(guò)s并且失敗的測(cè)試用例個(gè)數(shù),也就是如果t驗(yàn)證失敗了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度減1;否則,t成功了,則t執(zhí)行過(guò)的所有語(yǔ)句的可信度加1;5)語(yǔ)句識(shí)別根據(jù)語(yǔ)句的可信度,將語(yǔ)句識(shí)別為可疑語(yǔ)句和可信語(yǔ)句兩種,設(shè)定一個(gè)閾值ConfidenceThreshold,簡(jiǎn)寫為CT,所有可信度小于CT的語(yǔ)句被識(shí)別為可疑語(yǔ)句,具體公式為suspicious(S)={seSIconfidence(s)<CT};所有可信度大于或等于CT的語(yǔ)句被識(shí)別為可信語(yǔ)句,具體公式為correct(S)={seS|confidence(s)>=CT};可疑語(yǔ)句集和可信語(yǔ)句集之間沒(méi)有交集ΠMn^(S)=0;6)測(cè)試用例失敗可能性度量測(cè)試用例t執(zhí)行過(guò)的語(yǔ)句集表示為t(S)={seS|texecutess},測(cè)試用例t失敗的可能性為其執(zhí)行過(guò)的可疑語(yǔ)句的個(gè)數(shù),計(jì)算公式為failpossibiIity(t)=11(S)Πsuspicious(S)|;7)選取類簇剩余測(cè)試用例中失敗可能性最大的測(cè)試用例根據(jù)計(jì)算出來(lái)的剩余測(cè)試用例的失敗可能性,選取其中失敗可能性最大的測(cè)試用例t’;如果多個(gè)測(cè)試用例擁有最大失敗可能性,則采用隨機(jī)挑選的方法,從中挑選出一個(gè)測(cè)試用例t’;8)如果t’的失敗可能性值為0,則停止從類簇Cj中取樣,j=j+1,如果j<=m則返回步驟2),開(kāi)始從下一個(gè)類簇中取樣;如果j>m,即所有類簇都取樣完畢后,整個(gè)取樣過(guò)程結(jié)束;如果t’的失敗可能性值大于0,則返回步驟3),繼續(xù)從當(dāng)前類簇中取樣。全文摘要一種測(cè)試用例聚類取樣方法,基于觀測(cè)的軟件測(cè)試技術(shù)中的聚類過(guò)濾技術(shù),在類簇中挑選測(cè)試用例進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果計(jì)算其所執(zhí)行的語(yǔ)句的可信度,判斷是否可疑語(yǔ)句,可疑語(yǔ)句構(gòu)成可疑語(yǔ)句集合;根據(jù)可疑語(yǔ)句集合計(jì)算該類簇中剩余測(cè)試用例失敗的可能性,挑選失敗可能性最高的測(cè)試用例,驗(yàn)證結(jié)果并重新計(jì)算各語(yǔ)句的可信度,更新可疑語(yǔ)句集合,對(duì)未驗(yàn)證的測(cè)試用例重復(fù)取樣過(guò)程,直到該類簇中所有剩余測(cè)試用例的失敗可能性都為0。本發(fā)明取樣剩余的測(cè)試用例均不再驗(yàn)證其結(jié)果,實(shí)現(xiàn)了測(cè)試用例的約簡(jiǎn),節(jié)約了人工驗(yàn)證測(cè)試結(jié)果的時(shí)間和精力,同時(shí)確保被取樣的測(cè)試用例中失敗測(cè)試用例占很大比例,語(yǔ)句的可信度值可以用來(lái)幫助測(cè)試人員進(jìn)行錯(cuò)誤定位。文檔編號(hào)G06F11/36GK101814055SQ201010139848公開(kāi)日2010年8月25日申請(qǐng)日期2010年4月6日優(yōu)先權(quán)日2010年4月6日發(fā)明者嚴(yán)莎莉,章宸,趙志宏,陳振宇申請(qǐng)人:南京大學(xué)