張喻平
摘要:為了保證程序代碼在黑盒測(cè)試環(huán)境下能夠更好地運(yùn)行,需要對(duì)執(zhí)行測(cè)試用例優(yōu)先級(jí)方法進(jìn)行改進(jìn)調(diào)整。該文對(duì)比分析了用于黑盒測(cè)試中的測(cè)試用例優(yōu)先級(jí)算法和改進(jìn)算法,將錯(cuò)誤檢測(cè)率作為目標(biāo),結(jié)合不同情況下優(yōu)先級(jí)調(diào)整策略,對(duì)現(xiàn)有方法進(jìn)行改進(jìn)分析。研究結(jié)果表明,改進(jìn)后的算法具有一定的可行性,可以更好地提高測(cè)試用例的錯(cuò)誤檢測(cè)率。
關(guān)鍵詞:黑盒測(cè)試;測(cè)試用例;優(yōu)先級(jí);改進(jìn)算法;錯(cuò)誤檢測(cè)率
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)02-0091-02
軟件產(chǎn)業(yè)的迅速發(fā)展促使各類軟件層出不窮,軟件產(chǎn)品的質(zhì)量亟待提高。當(dāng)軟件項(xiàng)目的需求確定后,軟件測(cè)試工作就應(yīng)該開(kāi)始著手進(jìn)行了。由于軟件測(cè)試貫穿軟件生命周期全過(guò)程,所以軟件測(cè)試所消耗的時(shí)間成本較高。但是,國(guó)內(nèi)現(xiàn)在有很多公司一般都是在軟件初步完成后,在集成測(cè)試階段才將測(cè)試工作交給軟件測(cè)試人員進(jìn)行測(cè)試。在測(cè)試的過(guò)程中如果發(fā)現(xiàn)存在缺陷,測(cè)試人員需要選擇合適的測(cè)試用例對(duì)系統(tǒng)進(jìn)行回歸測(cè)試?;貧w測(cè)試在整個(gè)軟件開(kāi)發(fā)過(guò)程中的各個(gè)階段都可能存在,因此消耗的成本也較大。此時(shí)就需要測(cè)試人員在選擇測(cè)試用例時(shí),能夠按照一定的策略進(jìn)行排序,從而達(dá)到降低成本的目的。針對(duì)以上問(wèn)題,提出一種適用于黑盒測(cè)試中的測(cè)試用例優(yōu)先級(jí)方法,有針對(duì)性進(jìn)行改進(jìn),從而可以更好地提高測(cè)試集的錯(cuò)誤檢測(cè)率。
1 測(cè)試用例優(yōu)先級(jí)技術(shù)
1.1 典型測(cè)試用例優(yōu)先級(jí)技術(shù)
測(cè)試用例優(yōu)先級(jí)技術(shù)實(shí)際上就是通過(guò)排序的方式對(duì)測(cè)試用例進(jìn)行優(yōu)先級(jí)排序,從而使高等級(jí)的測(cè)試用例比低等級(jí)的測(cè)試用例更具有優(yōu)勢(shì),可以更先一步的執(zhí)行[1]。測(cè)試人員需要按照一定的方式對(duì)測(cè)試用例進(jìn)行排序,其設(shè)定的目標(biāo)可以不同。在黑盒測(cè)試中,可以采用適當(dāng)?shù)臏y(cè)試用例排序技術(shù)進(jìn)行排序,使保證的關(guān)鍵功能在設(shè)定的時(shí)間里能夠得到排序與測(cè)試,能夠提高測(cè)試用例的檢錯(cuò)率,能夠提高測(cè)試用例覆蓋的速度。
有相關(guān)研究者對(duì)測(cè)試用例優(yōu)先級(jí)技術(shù)進(jìn)行了方案整改,其中最基本的優(yōu)先級(jí)技術(shù)為優(yōu)先級(jí)排序技術(shù)與源代碼技術(shù)。很多技術(shù)都比較適用于白盒測(cè)試,但是有一些專用的技術(shù)是針對(duì)黑盒測(cè)試的[2]。對(duì)于有需求的測(cè)試用例優(yōu)先級(jí)技術(shù),可以將軟件產(chǎn)品中的各種測(cè)試要求作為排序根據(jù),從不同的角度出發(fā),綜合考慮用戶的優(yōu)先級(jí)順序。進(jìn)行黑盒測(cè)試的人員,需求是測(cè)試用例的第一根據(jù);歷史信息作為回歸測(cè)試后的重要排序準(zhǔn)則,與普通的測(cè)試相比,存在一些沖突,歷史信息記錄中存在缺陷檢測(cè)問(wèn)題,這些信息可以幫助測(cè)試人員更好地進(jìn)行回歸測(cè)試,提高檢測(cè)效率;基于反饋的測(cè)試用例,需要與其它的技術(shù)相結(jié)合,利用執(zhí)行測(cè)試用例中的反饋信息,對(duì)測(cè)試用例的優(yōu)先級(jí)進(jìn)行調(diào)整。采用反饋技術(shù),對(duì)測(cè)試用例執(zhí)行的結(jié)果進(jìn)行反饋,從而動(dòng)態(tài)的調(diào)整測(cè)試用例的優(yōu)先級(jí)順序[3]。
1.2 測(cè)試用例排序算法
目前,解決測(cè)試用例排序問(wèn)題最常見(jiàn)的一種方式是根據(jù)反饋機(jī)制,采取Total策略,對(duì)其進(jìn)行驗(yàn)證和比較。
Total策略就是對(duì)每一個(gè)測(cè)試用例需要的數(shù)目進(jìn)行測(cè)試,再將測(cè)試用例根據(jù)大小進(jìn)行排序,算法形式為:
totalAlgorithm()
Tselected=?;? ? ? ? ? ? ? //測(cè)試用例集合
Tcandidate=Statistics(TestCases);? ? ?//覆蓋情況
While(Teandidate.size()>0)
Ttemp=random(maxValue(Teamdidate))? ? ?//覆蓋最多的測(cè)試用例
2 黑盒測(cè)試中的測(cè)試用例優(yōu)先級(jí)改進(jìn)算法
2.1 測(cè)試用例優(yōu)先級(jí)方法
測(cè)試用例優(yōu)先級(jí)方法主要用于黑盒環(huán)境的測(cè)試,根據(jù)測(cè)試用例可能會(huì)存在的錯(cuò)誤類型建立一個(gè)關(guān)系矩陣,將其設(shè)置為R,根據(jù)這個(gè)關(guān)系矩陣,測(cè)試用例會(huì)將可能出現(xiàn)的錯(cuò)誤類型進(jìn)行分組。采用Escalate和Deescalate兩種優(yōu)先級(jí)調(diào)整方法,這兩種方法是根據(jù)關(guān)系矩陣對(duì)測(cè)試用例的順序進(jìn)行設(shè)置,使其更好的執(zhí)行,這樣可以提高錯(cuò)誤檢測(cè)率。在此方法中,為了保證同一組測(cè)試用例中的優(yōu)先級(jí)保持不變,需要輸入?yún)?shù)調(diào)整優(yōu)先級(jí)的執(zhí)行順序。同時(shí),為了更好地將測(cè)試用例優(yōu)先級(jí)貫穿于整個(gè)軟件,首先通過(guò)調(diào)用關(guān)系矩陣,然后根據(jù)當(dāng)前的實(shí)際運(yùn)行情況對(duì)算法進(jìn)行調(diào)整。
2.2 測(cè)試用例優(yōu)先級(jí)改進(jìn)方法
2.2.1 優(yōu)先級(jí)調(diào)整算法
由于在現(xiàn)有的優(yōu)先級(jí)算法中沒(méi)有對(duì)Escalate方法和Deescalate方法進(jìn)行詳細(xì)的講解,雖然在BBR1和BBR2方法[4]中對(duì)兩種優(yōu)先級(jí)調(diào)整方法進(jìn)行了說(shuō)明,但是并沒(méi)有真正的實(shí)行。在BBR1中,由于事先預(yù)測(cè)的實(shí)施方法與執(zhí)行失敗的測(cè)試用例之間存在一定的聯(lián)系,并且其他的測(cè)試用例很可能會(huì)導(dǎo)致執(zhí)行失敗,所以對(duì)于執(zhí)行失敗的測(cè)試用例,需要調(diào)用其他的方法進(jìn)行設(shè)置??梢酝ㄟ^(guò)Escalate方法提高測(cè)試用例的優(yōu)先等級(jí),從而使測(cè)試用例可以更早的被執(zhí)行。在BBR2中,由于可以預(yù)測(cè)成功的多個(gè)測(cè)試用例之間是存在關(guān)聯(lián)關(guān)系的,并且在執(zhí)行過(guò)程中測(cè)試成功的概率較大,所以對(duì)于一些可以執(zhí)行成功的測(cè)試用例,通過(guò)Deescalate方法可以降低測(cè)試用例的優(yōu)先等級(jí),推遲測(cè)試用例的執(zhí)行時(shí)機(jī)[5]。在以上兩種方法的實(shí)驗(yàn)過(guò)程中,都驗(yàn)證了其有效性,并且兩種測(cè)試也是完全可信的。實(shí)際上,在測(cè)試執(zhí)行的過(guò)程中,完全可以將Escalate方法和Deescalate方法進(jìn)行融合,使測(cè)試用例可以更好地執(zhí)行,讓容易暴露的測(cè)試用例優(yōu)先級(jí)提高的同時(shí),降低其他測(cè)試用例的執(zhí)行概率。通過(guò)改進(jìn)后的算法,其測(cè)試執(zhí)行結(jié)果需要進(jìn)行更進(jìn)一步的考察,根據(jù)考察的結(jié)果選擇合適的調(diào)整算法。執(zhí)行結(jié)果的成功與失敗,都與選擇的算法息息相關(guān)。改進(jìn)后的算法可以將其設(shè)置為BBR3,具體的描述方法為:檢驗(yàn)當(dāng)前測(cè)試資源是否耗竭、對(duì)當(dāng)前優(yōu)先級(jí)等級(jí)最高的測(cè)試用例進(jìn)行設(shè)置、調(diào)用Escalate和Deescalate兩種不同的算法,這些都對(duì)測(cè)試用例的優(yōu)先級(jí)調(diào)整具有一定的幫助。
2.2.2 優(yōu)先級(jí)步調(diào)調(diào)整值
在現(xiàn)有的方法中,需要在測(cè)試用例中輸入一個(gè)參數(shù),用來(lái)對(duì)測(cè)試用例的優(yōu)先級(jí)進(jìn)行調(diào)整。同一組內(nèi)的測(cè)試用例不會(huì)發(fā)生改變,但是這種固定的方式是相對(duì)而言的,不適用于所有的測(cè)試用例使用,如果使用同一種方法進(jìn)行測(cè)試,很有可能暴露其他的測(cè)試用例,需要加大調(diào)整力度;對(duì)于那些不易暴露的測(cè)試用例,可適當(dāng)降低力度調(diào)整的幅度。因此,在改進(jìn)的方法中,不需要對(duì)所有的測(cè)試用例提供調(diào)整值,僅僅需要從關(guān)系矩陣中獲取同一測(cè)試用例,以維護(hù)相互之間的關(guān)系,根據(jù)測(cè)試用例所得到的結(jié)果,對(duì)其它的測(cè)試用例進(jìn)行適當(dāng)?shù)恼{(diào)整,如果調(diào)整用例是一個(gè)錯(cuò)誤的關(guān)聯(lián),可以采用初次測(cè)試的信息進(jìn)行調(diào)整。通過(guò)對(duì)BBR1進(jìn)行改進(jìn),將測(cè)試用例初始化后的值存儲(chǔ)在range中,當(dāng)測(cè)試用例執(zhí)行完成后,會(huì)增加錯(cuò)誤暴露的概率。因此,在range中,對(duì)步調(diào)值進(jìn)行適當(dāng)?shù)恼{(diào)整可以達(dá)到更好的效果。在當(dāng)前所執(zhí)行的測(cè)試用例中,出現(xiàn)錯(cuò)誤暴露的概率逐漸減少,在range中找到所在組的步調(diào)調(diào)整值,當(dāng)步調(diào)調(diào)整值為正時(shí),調(diào)用已有算法,為沒(méi)有執(zhí)行的測(cè)試用例進(jìn)行優(yōu)先級(jí)調(diào)整。利用同樣的方法,對(duì)BBR1和BBR2進(jìn)行改進(jìn)[6]。
1) 算法BBR1。創(chuàng)建0向量,為每一種錯(cuò)誤類型的調(diào)整步調(diào)值進(jìn)行記錄;檢查資源輸出;執(zhí)行當(dāng)前優(yōu)先級(jí)別最高的測(cè)試用例;提高/降低測(cè)試用例的步調(diào)調(diào)整值;
2) 算法BBR2。與BBR1創(chuàng)建方法相同。唯一區(qū)別是調(diào)用算法不同。
3 仿真測(cè)試
在進(jìn)行實(shí)驗(yàn)時(shí),不需要對(duì)測(cè)試用例執(zhí)行的時(shí)間加以關(guān)心,采用M1的計(jì)算方法對(duì)經(jīng)過(guò)優(yōu)先級(jí)調(diào)整的測(cè)試用例集的錯(cuò)誤檢測(cè)率進(jìn)行計(jì)算,公式為[7]:
[M1=12in2n-2i+1*fin*infi*100%]
其中,n表示測(cè)試用例個(gè)數(shù);fi表示當(dāng)?shù)趇個(gè)執(zhí)行用例失敗,f為1;若執(zhí)行成功,f為0。
在matlab7.0下對(duì)以上三種算法進(jìn)行模擬實(shí)驗(yàn),根據(jù)輸入?yún)?shù)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行隨機(jī)生成,如表1所示。
在實(shí)驗(yàn)過(guò)程中,列舉了三種不同的算法,不同的改進(jìn)算法表示的錯(cuò)誤檢測(cè)率有所差異。通過(guò)對(duì)BBR1、BBR2和BBR3的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析,可以得出改進(jìn)后的算法都能夠更好地表現(xiàn)出改進(jìn)效果。如圖1所示,將算法應(yīng)用在不同規(guī)模的測(cè)試集中,可以獲取較為穩(wěn)定的錯(cuò)誤檢測(cè)率。為了更加準(zhǔn)確地對(duì)改進(jìn)后的算法進(jìn)行比較,本次試驗(yàn)統(tǒng)計(jì)了不同算法經(jīng)過(guò)處理后的M1值,如表2所示[8]。
4 結(jié)束語(yǔ)
該文對(duì)黑盒測(cè)試中的測(cè)試用例優(yōu)先級(jí)算法進(jìn)行了改進(jìn)分析,根據(jù)測(cè)試用例的運(yùn)行結(jié)果,對(duì)測(cè)試用例的優(yōu)先級(jí)進(jìn)行調(diào)整算法計(jì)算。通過(guò)matlab仿真實(shí)驗(yàn),模擬根據(jù)測(cè)試用例的運(yùn)行結(jié)果對(duì)測(cè)試用例進(jìn)行維護(hù)和調(diào)整步調(diào)值,并在恰當(dāng)?shù)臅r(shí)機(jī)對(duì)當(dāng)前測(cè)試用例進(jìn)行優(yōu)先級(jí)調(diào)整算法計(jì)算。對(duì)改進(jìn)前后的算法進(jìn)行對(duì)比實(shí)驗(yàn),得出改進(jìn)后的算法比原有算法能夠得到更高、更好的錯(cuò)誤檢測(cè)率。
參考文獻(xiàn):
[1]? 曾平紅. 基于改進(jìn)LDA算法的測(cè)試用例優(yōu)先級(jí)排序研究[J]. 佳木斯大學(xué)學(xué)報(bào):自然科學(xué)版, 2018, 36(5):693-695.
[2]? SCC50壓縮機(jī)數(shù)傳單元自動(dòng)化測(cè)試方法與系統(tǒng)實(shí)現(xiàn)[D]. 大連:大連海事大學(xué), 2017.
[3]? 齊名軍. 粒子群優(yōu)化算法在黑盒測(cè)試中的應(yīng)用[J]. 世界家苑,2014(8).
[4]? 戴如昕,顧春華.用于黑盒測(cè)試的測(cè)試用例優(yōu)先級(jí)改進(jìn)算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(20):4343-4346.
[5]? 郭麗, 曲寅生, 張佑飛. 淺談黑盒測(cè)試中批量程序邏輯分支覆蓋完整性分析方法[J]. 中國(guó)金融電腦, 2014(9):47-50.
[6]? 任麗霞. 計(jì)算機(jī)聯(lián)鎖軟件的黑盒測(cè)試過(guò)程分析與實(shí)現(xiàn)[J]. 鐵路計(jì)算機(jī)應(yīng)用, 2018, 27(2):39-43.
[7]? 佘鳳. 黑盒測(cè)試技術(shù)綜合策略的探討[J]. 福建電腦, 2013, 29(9):100-101.
[8]? 何遠(yuǎn), 張玉清, 張光華. 基于黑盒遺傳算法的Android驅(qū)動(dòng)漏洞挖掘[J]. 計(jì)算機(jī)學(xué)報(bào), 2017, 40(5):1031-1043.
【通聯(lián)編輯:光文玲】