0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鑒源論壇 · 觀模丨基于搜索的測試生成

上??匕?/a> ? 來源:上??匕?/span> ? 作者:上??匕?/span> ? 2022-12-02 16:25 ? 次閱讀

作者 |孫海英華東師范大學(xué)軟件工程學(xué)院講師

蘇亭 華東師范大學(xué)軟件工程學(xué)院教授

版塊 |鑒源論壇 · 觀模

測試用例自動生成,簡稱測試生成(Test Generation),是指針對給定的被測對象,例如代碼單元、接口、系統(tǒng)等,使用相關(guān)算法計(jì)算測試用例集合的方法。測試生成的本質(zhì)是測試設(shè)計(jì)自動化,無需研發(fā)人員參與測試,全部由計(jì)算機(jī)替代人類完成。測試生成方法與當(dāng)前在產(chǎn)業(yè)界中廣泛應(yīng)用的基于測試框架的自動化測試技術(shù)有著本質(zhì)的差別。后者是測試執(zhí)行的自動化,還需要依靠研發(fā)人員設(shè)計(jì)測試用例。

從對測試生成問題進(jìn)行數(shù)學(xué)建模的角度看,當(dāng)前主流的測試生成方法可分為基于隨機(jī)的測試生成、基于符號執(zhí)行的測試生成、基于搜索的測試生成和基于模型檢測的測試生成?;谒阉鞯臏y試生成將測試生成問題建模為最優(yōu)化問題,其核心思想是針對期望達(dá)到的測試目標(biāo),以相關(guān)目標(biāo)(成本)函數(shù)為指引,使用搜索算法在輸入域中尋找最優(yōu)解作為測試用例。

01概述


基于搜索的測試生成(Search-Based Software Testing, SBST)產(chǎn)生于1976年[1],由于當(dāng)時(shí)測試生成領(lǐng)域關(guān)注于基于符號執(zhí)行的解決方案,因此,在其提出后的十幾年里,SBST并未得到重視和發(fā)展。直到1990年,研究人員Korel在其發(fā)表的論文中,提出SBST可以有效解決當(dāng)時(shí)在符號執(zhí)行方法中難于處理的復(fù)雜數(shù)據(jù)結(jié)構(gòu)符號化運(yùn)算的問題[2],SBST才被關(guān)注并得以深入研究,應(yīng)用于各種測試活動中。


02方法說明


結(jié)構(gòu)測試是面向代碼的測試方法之一,被廣泛應(yīng)用于工業(yè)實(shí)踐。其中,分支覆蓋是結(jié)構(gòu)測試中最為知名的測試覆蓋準(zhǔn)則之一。結(jié)構(gòu)測試是最早應(yīng)用SBST的測試活動,也是產(chǎn)生SBST這一方法的源起點(diǎn)。因其奠基性地位,我們以Korel的SBST方法為切入點(diǎn),說明SBST的核心思想。

2.1 分支函數(shù)

Korel方法以滿足分支覆蓋為測試生成目標(biāo)。注意到,代碼中產(chǎn)生分支的循環(huán)判斷條件和選擇判斷條件等分支謂詞可以被轉(zhuǎn)換為符合其邏輯關(guān)系的一系列簡單的關(guān)系表達(dá)式:

poYBAGOJrpWAFEmOAAAEWmbwlOM211.png

其中,E1和E2是算術(shù)表達(dá)式。我們將簡單的關(guān)系表達(dá)式稱為分支表達(dá)式。為了覆蓋分支,可以采用最優(yōu)化方法計(jì)算使得分支表示式判定結(jié)果為真時(shí)的輸入數(shù)據(jù)。具體地說,結(jié)合最優(yōu)化理論中成本函數(shù)的含義可知,以分支覆蓋為目標(biāo)的成本函數(shù)如果構(gòu)造為能夠衡量候選輸入與期望覆蓋分支之間的遠(yuǎn)近,那么,其中距離最近的輸入即為分支表達(dá)式的解?;诖?,Korel定義了分支函數(shù):

pYYBAGOJrs-AP94xAAADfFMbMDo666.png

不同形式的分支表達(dá)式有不同形式的分支函數(shù),如表1所示。分支函數(shù)具有如下特性:

1)當(dāng)分支函數(shù)的值為正值(0如果rel是<)時(shí),分支表達(dá)式不成立,該分支的取值為假;

2)當(dāng)分支函數(shù)的值為負(fù)值(0如果rel是<=)時(shí),分支表達(dá)式成立,該分支的取值為真。

因此,滿足分支覆蓋的測試生成問題就轉(zhuǎn)為找到使得分支函數(shù)值為負(fù)值的輸入。

表1 Korel定義的分支函數(shù)

pYYBAGOJryOACoLTAABnN9KS5sM937.png

2.2 測試生成過程

以分支覆蓋為測試目標(biāo)的SBST就是在分支函數(shù)指導(dǎo)下,搜索距離期望分支最近的輸入數(shù)據(jù)的過程,基本的搜索過程包含以下步驟:

1)生成被測代碼的控制流圖;

2)計(jì)算滿足分支覆蓋的路徑集合;

3)任選一條期望覆蓋的路徑;

4)隨機(jī)生成一組輸入數(shù)據(jù)并執(zhí)行,記錄該輸入執(zhí)行時(shí)的路徑信息,將路徑信息與期望覆蓋的路徑進(jìn)行比對,找到兩者之間發(fā)生偏差的分支,為該分支構(gòu)造分支表達(dá)式;

5)逐一改變輸入變量的值進(jìn)行嘗試, 直至找到使得分支表達(dá)式的值為負(fù)(0如果rel是<=)時(shí)的輸入,即為所需的測試輸入數(shù)據(jù);

6)重復(fù)3)-5),直到2)中所有路徑都被覆蓋。

為了說明SBST的主要思想,圖1給出了能夠覆蓋示例代碼中某條路徑(10-11-12-13)的測試輸入的搜索計(jì)算過程。需要說明的是,為了清晰簡便,示例采用了最基本的直接搜索算法,不包含對搜索過程的優(yōu)化方法,也不包含計(jì)算測試預(yù)期結(jié)果(Test Oracle)的方法?,F(xiàn)代的SBST方法采用的搜索優(yōu)化算法和成本函數(shù)遠(yuǎn)先進(jìn)和復(fù)雜于示例中的方法。

pYYBAGOJsAWACg0CAAFsXHiYmrA402.png

圖1 計(jì)算覆蓋期望路徑的測試輸入數(shù)據(jù)示例

03主流方法


搜索最優(yōu)解的算法和成本函數(shù)的構(gòu)造是SBST的核心技術(shù)。常用的搜索最優(yōu)解的算法有爬山算法、模擬退火算法和遺傳算法。爬山算法、模擬退火屬于局部搜索策略,因?yàn)檫@兩種方法每次只考慮一個(gè)答案,且只在答案的受限毗鄰區(qū)附近移動,遺傳算法則屬于全局搜索,同時(shí)考察搜索域中多個(gè)樣本點(diǎn),是當(dāng)前SBST的主流。圖3給出了基于遺傳算法的SBST的主要流程。

pYYBAGOJso2ATzBpAABVoJZI4fs500.png

圖2 基于遺傳算法的SBST主要流程

基于遺傳算法的SBST首先使用隨機(jī)方法產(chǎn)生第一代群體,接著對該群體中的個(gè)體進(jìn)行適應(yīng)性評估,根據(jù)選擇策略從中挑選出優(yōu)質(zhì)個(gè)體集合作為親代用以產(chǎn)生下一代群體。隨后,在對親代進(jìn)行交叉、變異和重新組合后產(chǎn)生了繼承親代優(yōu)良基因的子代。之后,子代進(jìn)入適應(yīng)性評估,重復(fù)上述行為,直至找到最優(yōu)解或者資源耗盡。在該過程中,用于評估候選者,引導(dǎo)搜索進(jìn)入有前景的搜索域的適應(yīng)度函數(shù)(fitness function)是關(guān)鍵技術(shù)。

適應(yīng)度函數(shù)具有問題相關(guān)性。不同的問題需要定義不同的適應(yīng)度函數(shù)。例如,在最壞執(zhí)行時(shí)間測試時(shí),適應(yīng)度函數(shù)被定義為系統(tǒng)執(zhí)行時(shí)間;在自動泊車控制系統(tǒng)中,適應(yīng)度函數(shù)定義為泊車期間,車輛與某個(gè)碰撞點(diǎn)之間的最短距離。在結(jié)構(gòu)測試時(shí),適應(yīng)度函數(shù)常被定義為滿足期望的覆蓋準(zhǔn)則,例如分支覆蓋[3]。當(dāng)前被廣泛使用的以滿足分支覆蓋為目的的適應(yīng)度函數(shù)由研究人員Wegener提出[4]。該適應(yīng)度函數(shù)有兩個(gè)數(shù)值指標(biāo),一是接近層級(Approach Level),另一個(gè)是分支距離(Branch Distance)。接近層級是指沒有被給出的輸入執(zhí)行路徑覆蓋的與目標(biāo)點(diǎn)相關(guān)的控制節(jié)點(diǎn)數(shù)量。與目標(biāo)點(diǎn)越接近,接近層級越低。分支距離用于衡量輸入執(zhí)行期望分支的鄰近程度,采用了改進(jìn)的分支函數(shù)定義[5]。最終的適應(yīng)度值是將分支距離歸一化并加上接近層級的結(jié)果。分支距離的歸一化方法有多種,研究人員Arcuri評估和討論了這些方法對搜索算法的影響[6]。

04主要挑戰(zhàn)


環(huán)境交互問題是面向代碼的SBST面臨的主要困難之一[3][7]。該問題涉及代碼中包含與操作系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、數(shù)據(jù)庫系統(tǒng)的相關(guān)交互。環(huán)境交互問題通常采用測試替身的方案[8][9]。但是,由于代碼重構(gòu)和使用測試替身后會存在測試代碼執(zhí)行了被測代碼實(shí)際不可能執(zhí)行的路徑等情況,因而會產(chǎn)生誤報(bào)。對于誤報(bào)目前并沒有徹底的解決方案,只存在緩解的方法,一是規(guī)避導(dǎo)致誤報(bào)的原因,二是只在必要的時(shí)候使用測試替身技術(shù)[9]。

參考文獻(xiàn):

[1] W. Miller and D. Spooner, “Automatic generation of floatingpoint test data,” IEEE Transactions on Software Engineering, vol. 2, no. 3, pp. 223–226, 1976.

[2] B. Korel, “Automated software test data generation,” IEEE Transactions on Software Engineering, vol. 16, no. 8, pp. 870–879, 1990.

[3] Phil McMinn. Search-Based Software Testing: Past, Present and Future. Proceedings - 4th IEEE International Conference on Software Testing, Verification, and Validation Workshops, 153 – 163, 2011.

[4] J. Wegener, A. Baresel, and H. Sthamer, “Evolutionary test environment for automatic structural testing,” Information and Software Technology, vol. 43, no. 14, pp. 841–854, 2001.

[5] N. Tracey, J. Clark, K. Mander, and J. McDermid, “An automated framework for structural test-data generation,” in Proceedings of the International Conference on Automated Software Engineering. Hawaii, USA: IEEE Computer Society Press, 1998, pp. 285–288.

[6] A. Arcuri, “It does matter how you normalise the branch distance in search based software testing,” in Proceedings of the International Conference on Software Testing, Verification and Validation. IEEE, to appear, 2010.

[7] A. Panichella, "Beyond Unit-Testing in Search-Based Test Case Generation: Challenges and Opportunities," 2019 IEEE/ACM 12th International Workshop on Search-Based Software Testing (SBST), pp. 7-8, 2019.[

8] A. Arcuri, G. Fraser, and J. P. Galeotti. Automated unit test generation for classes with environment dependencies. In IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 79–90, 2014.

[9] A. Arcuri, G. Fraser and R. Just, "Private API Access and Functional Mocking in Automated Unit Test Generation," 2017 IEEE International Conference on Software Testing, Verification and Validation (ICST), pp. 126-137, 2017.

審核編輯黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 測試
    +關(guān)注

    關(guān)注

    8

    文章

    4939

    瀏覽量

    125972
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4673

    瀏覽量

    67786
收藏 人收藏

    評論

    相關(guān)推薦

    論壇 · 形式化驗(yàn)證——以操作系統(tǒng)任務(wù)調(diào)度算法驗(yàn)證為案例

    形式化方法為軟件開發(fā)過程提供了一種較為透徹的思維方式,該方式可以用于工程化系統(tǒng)設(shè)計(jì),并且可以很好地幫助工程人員建立系統(tǒng)抽象模型,從而進(jìn)行系統(tǒng)精化和驗(yàn)證。
    的頭像 發(fā)表于 11-09 11:25 ?322次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>論壇</b> · <b class='flag-5'>觀</b><b class='flag-5'>模</b><b class='flag-5'>丨</b>形式化驗(yàn)證——以操作系統(tǒng)任務(wù)調(diào)度算法驗(yàn)證為案例

    鷹電子仿真設(shè)計(jì)大賽——單片機(jī)高手打造之旅

    本帖最后由 吳鷹 于 2014-5-24 09:47 編輯 鷹電子仿真設(shè)計(jì)大賽——單片機(jī)高手打造之旅題記:操千曲而后曉聲,千劍而后識器。獨(dú)學(xué)而無友,則孤陋而寡聞。歡迎大家參加
    發(fā)表于 05-24 09:46

    汽車材料汽車輕量化2018上海國際汽車輕質(zhì)技術(shù)展覽會

    膠接焊接粘合技術(shù)其他模型、原型和模型制造:車身、底盤組件動力組成部件電池、電機(jī)車身
    發(fā)表于 01-18 17:00

    汽車材料汽車輕量化2018上海國際汽車輕質(zhì)技術(shù)展覽會

    焊接粘合技術(shù)其他模型、原型和模型制造:車身、底盤組件動力組成部件電池、電機(jī)車身
    發(fā)表于 02-27 11:10

    基于混沌和遺傳算法的優(yōu)化測試生成算法

    基于組合電路測試生成的Hopfield 神經(jīng)網(wǎng)絡(luò)模型,討論分析了利用混沌神經(jīng)網(wǎng)絡(luò)的全局搜索能力進(jìn)行測試生成的有效算法和基于遺傳算法的自適應(yīng)
    發(fā)表于 09-01 08:22 ?7次下載

    基于混沌搜索的數(shù)字電路多故障測試生成

    針對數(shù)字電路中多故障測試生成較難的問題,本文提出了基于混沌搜索的數(shù)字電路多故障測試生成算法。該算法先把多故障轉(zhuǎn)換成為單故障,再用神經(jīng)網(wǎng)絡(luò)的方
    發(fā)表于 02-21 10:38 ?13次下載

    助推在線教育技術(shù)創(chuàng)新 VIPKID宏恩技術(shù)分享論壇面世

    上周末,VIPKID首期在線教育技術(shù)分享論壇——宏恩技術(shù)論壇在北京古色古香的胡同里舉行,來自人工智能、云計(jì)算、教育等領(lǐng)域的近百位技術(shù)及產(chǎn)品研發(fā)人員圍繞“如何搭建在線教育高效高可用架構(gòu)”,探討如何將
    發(fā)表于 01-18 12:23 ?278次閱讀

    基于組合測試的Web應(yīng)用程序搜索功能

    為了方便用戶查詢感興趣的資源,許多Web應(yīng)用程序會提供搜索功能。如果搜索功能存在欯障,將會導(dǎo)致Web應(yīng)用程序的功能異常,甚至?xí)l(fā)安全問題,因而需要對其進(jìn)行充分的測試??梢允褂媒M合測試
    發(fā)表于 06-08 11:47 ?11次下載

    論壇 · 淺談隨機(jī)測試

    隨機(jī)測試是一種使用隨機(jī)、相互獨(dú)立的程序輸入來對計(jì)算機(jī)程序進(jìn)行測試的黑盒軟件測試(在完全忽略程序內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的情況下進(jìn)行測試)技術(shù)。在處理完隨機(jī)且獨(dú)立的程序輸入后,程序輸出的結(jié)果將會和軟
    的頭像 發(fā)表于 11-18 10:14 ?1289次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>論壇</b> · <b class='flag-5'>觀</b><b class='flag-5'>模</b><b class='flag-5'>丨</b>淺談隨機(jī)<b class='flag-5'>測試</b>

    論壇 · 基于AUTOSAR的TTCAN通信協(xié)議的形式化建模與分析

    本文針對AUTOSAR的TTCAN協(xié)議進(jìn)行研究,并用Timed CSP(Timed Communication Sequential Processes)形式化語言對其進(jìn)行建模,通過LTL(linear temporal logic)及斷言(Assertion)對TTCAN模型需要滿足的性質(zhì)進(jìn)行描述,運(yùn)用模型檢驗(yàn)工具PAT完成了對模型的驗(yàn)證。
    的頭像 發(fā)表于 01-04 16:12 ?1013次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>論壇</b> · <b class='flag-5'>觀</b><b class='flag-5'>模</b><b class='flag-5'>丨</b>基于AUTOSAR的TTCAN通信協(xié)議的形式化建模與分析

    科技受邀參加2023中關(guān)村論壇

    中關(guān)村論壇近日,2023中關(guān)村論壇在北京成功舉辦。君科技董事長陳超受邀出席。本屆展覽以“開放合作·共享未來”為主題,圍繞論壇會議、展覽展示、成果發(fā)布、前沿大賽、技術(shù)交易、活動配套等,
    的頭像 發(fā)表于 06-12 11:32 ?539次閱讀
    君<b class='flag-5'>鑒</b>科技受邀參加2023中關(guān)村<b class='flag-5'>論壇</b>

    和差對EMC測試的影響

    摘要:共和差對EMC測試的影響 對于EMC測試: 共輻射比差輻射的影響要大100-1
    的頭像 發(fā)表于 07-12 09:01 ?763次閱讀

    實(shí)驗(yàn)室智能網(wǎng)聯(lián)汽車協(xié)議模糊測試技術(shù)概述

    作者 |?喬琪?上??匕部尚跑浖?chuàng)新研究院工控網(wǎng)絡(luò)安全組 來源 |?實(shí)驗(yàn)室 社群 |?添加微信號“TICPShanghai”加入“上??匕?1fusa安全社區(qū)” 摘要:隨著智能網(wǎng)聯(lián)汽車的快速發(fā)展
    的頭像 發(fā)表于 04-17 13:39 ?498次閱讀

    論壇軌交軟件測試技術(shù)詳述

    作者 |劉艷青 上??匕舶踩珳y評部測試經(jīng)理 版塊 |論壇 · 通 社群 |添加微信號“TICPShanghai”加入“上??匕?1fu
    的頭像 發(fā)表于 05-14 16:38 ?252次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>論壇</b><b class='flag-5'>丨</b>軌交軟件<b class='flag-5'>測試</b>技術(shù)詳述

    實(shí)驗(yàn)室·ISO 26262中測試用例的得出方法-等價(jià)類的生成和分析

    作者 | 李偉 上海控安安全測評部總監(jiān) 來源 | ?實(shí)驗(yàn)室 社群 | 添加微信號“ TICPShanghai ”加入“上??匕?1fusa安全社區(qū)” ? 在ISO 26262-6-2018
    的頭像 發(fā)表于 07-30 15:37 ?283次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b>實(shí)驗(yàn)室·ISO 26262中<b class='flag-5'>測試</b>用例的得出方法-等價(jià)類的<b class='flag-5'>生成</b>和分析