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