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

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

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

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

上??匕?/a> ? 來(lái)源:上海控安 ? 作者:上??匕?/span> ? 2022-12-02 16:25 ? 次閱讀

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

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

版塊 |鑒源論壇 · 觀模

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

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

01概述


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


02方法說(shuō)明


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

2.1 分支函數(shù)

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

poYBAGOJrpWAFEmOAAAEWmbwlOM211.png

其中,E1和E2是算術(shù)表達(dá)式。我們將簡(jiǎn)單的關(guān)系表達(dá)式稱為分支表達(dá)式。為了覆蓋分支,可以采用最優(yōu)化方法計(jì)算使得分支表示式判定結(jié)果為真時(shí)的輸入數(shù)據(jù)。具體地說(shuō),結(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á)式成立,該分支的取值為真。

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

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

pYYBAGOJryOACoLTAABnN9KS5sM937.png

2.2 測(cè)試生成過(guò)程

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

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

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

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

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

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

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

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

pYYBAGOJsAWACg0CAAFsXHiYmrA402.png

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

03主流方法


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

pYYBAGOJso2ATzBpAABVoJZI4fs500.png

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

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

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

04主要挑戰(zhàn)


環(huán)境交互問(wèn)題是面向代碼的SBST面臨的主要困難之一[3][7]。該問(wèn)題涉及代碼中包含與操作系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)的相關(guān)交互。環(huán)境交互問(wèn)題通常采用測(cè)試替身的方案[8][9]。但是,由于代碼重構(gòu)和使用測(cè)試替身后會(huì)存在測(cè)試代碼執(zhí)行了被測(cè)代碼實(shí)際不可能執(zhí)行的路徑等情況,因而會(huì)產(chǎn)生誤報(bào)。對(duì)于誤報(bào)目前并沒(méi)有徹底的解決方案,只存在緩解的方法,一是規(guī)避導(dǎo)致誤報(bào)的原因,二是只在必要的時(shí)候使用測(cè)試替身技術(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    5308

    瀏覽量

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

    關(guān)注

    30

    文章

    4790

    瀏覽量

    68654
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    形式化方法為軟件開(kāi)發(fā)過(guò)程提供了一種較為透徹的思維方式,該方式可以用于工程化系統(tǒng)設(shè)計(jì),并且可以很好地幫助工程人員建立系統(tǒng)抽象模型,從而進(jìn)行系統(tǒng)精化和驗(yàn)證。
    的頭像 發(fā)表于 11-09 11:25 ?493次閱讀
    <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ī)高手打造之旅題記:操千曲而后曉聲,千劍而后識(shí)器。獨(dú)學(xué)而無(wú)友,則孤陋而寡聞。歡迎大家參加
    發(fā)表于 05-24 09:46

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

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

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

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

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

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

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

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

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

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

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

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

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

    隨機(jī)測(cè)試是一種使用隨機(jī)、相互獨(dú)立的程序輸入來(lái)對(duì)計(jì)算機(jī)程序進(jìn)行測(cè)試的黑盒軟件測(cè)試(在完全忽略程序內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的情況下進(jìn)行測(cè)試)技術(shù)。在處理完隨機(jī)且獨(dú)立的程序輸入后,程序輸出的結(jié)果將會(huì)和軟
    的頭像 發(fā)表于 11-18 10:14 ?1540次閱讀
    <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'>測(cè)試</b>

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

    本文針對(duì)AUTOSAR的TTCAN協(xié)議進(jìn)行研究,并用Timed CSP(Timed Communication Sequential Processes)形式化語(yǔ)言對(duì)其進(jìn)行建模,通過(guò)LTL(linear temporal logic)及斷言(Assertion)對(duì)TTCAN模型需要滿足的性質(zhì)進(jìn)行描述,運(yùn)用模型檢驗(yàn)工具PAT完成了對(duì)模型的驗(yàn)證。
    的頭像 發(fā)表于 01-04 16:12 ?1171次閱讀
    <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)村論壇在北京成功舉辦。君科技董事長(zhǎng)陳超受邀出席。本屆展覽以“開(kāi)放合作·共享未來(lái)”為主題,圍繞論壇會(huì)議、展覽展示、成果發(fā)布、前沿大賽、技術(shù)交易、活動(dòng)配套等,
    的頭像 發(fā)表于 06-12 11:32 ?612次閱讀
    君<b class='flag-5'>鑒</b>科技受邀參加2023中關(guān)村<b class='flag-5'>論壇</b>

    和差對(duì)EMC測(cè)試的影響

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

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

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

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

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

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

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