張喻平



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