chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

螞蟻測試用例智能生成技術(shù)架構(gòu)與實踐

vliwulianw ? 來源:軟件質(zhì)量報道 ? 作者:軟件質(zhì)量報道 ? 2022-10-27 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今年開始,我們看到了越來越多的人開始關(guān)注測試用例自動生成這個領(lǐng)域,包括一些Devops產(chǎn)品也在做用例自動生成方面的工作。這里我主要和大家來介紹下測試用例自動生成這個領(lǐng)域的背景、相關(guān)研究方向、研究難點,以及在螞蟻我們是怎么來做測試用例自動生成這件事情的。

1

背景

首先我們來看測試用例自動生成這件事情的背景。隨著業(yè)務(wù)的不斷積累和發(fā)展,工業(yè)界中可以看到大型復(fù)雜系統(tǒng)的數(shù)量是持續(xù)在積累和增長的。在這個過程中,我們對這些復(fù)雜系統(tǒng)的測試和維護(hù)成本是不斷在增加的。不管是開發(fā)同學(xué)還是測試同學(xué),都需要投入大量的時間在測試用例編寫環(huán)節(jié)。我們也經(jīng)常會收到一些同學(xué)的反饋,比如在一次功能迭代過程中,開發(fā)業(yè)務(wù)代碼所需要的時間和開發(fā)測試用例所需要的時間可能會達(dá)到1 : 1。從這里我們可以看出,開發(fā)測試用例環(huán)節(jié)是存在非常大的提效空間的。

在整個快速迭代的背景之下,我們希望能夠通過智能化的手段來解決測試時間的投入,其中單測首當(dāng)其沖。

PART

單測是質(zhì)量保障流程中的第一環(huán),單測階段攔截問題后解決成本最低

d1ee49ce-5588-11ed-a3b6-dac502259ad0.png



圖1 問題修復(fù)成本

從圖1可以看出,在迭代環(huán)節(jié)逐步推進(jìn)的過程中,環(huán)節(jié)越靠后時問題修復(fù)成本越高,因此我們希望把發(fā)現(xiàn)問題的環(huán)節(jié)盡可能提前,單測就是最早的這個階段。在單測階段攔截問題,解決問題的成本是最低的。

PART

單測具備Fast 、 Stable、QuickDiagnosis特性,更適合集成至Devops流水線中進(jìn)行持續(xù)回歸

d210f5f0-5588-11ed-a3b6-dac502259ad0.png

圖2 Google測試金字塔

大家應(yīng)該對Google的測試金字塔比較熟悉,Google測試金字塔中占比最高的是單測用例,達(dá)到了80%,再往上才是集成測試、端到端測試。為什么單測能夠作為大底座這樣的存在呢?主要原因在于單測具備Fast 、 Stable、QuickDiagnosis特性,這些特性使得單測更適合于集成到Devops流水線里面去做持續(xù)回歸,在我們的項目里面更多比例的測用例也應(yīng)該是單元測試用例。

PART

實際研發(fā)流程中單測比例低,面臨開發(fā)成本高、運維難等問題

然而,在實際研發(fā)流程中,我們看到更多的并不是一個正金字塔,反而是一個倒金字塔。實際項目中單測用例占比往往很低,更多的測試被推到了集成測試、甚至是聯(lián)調(diào)測試階段。我們發(fā)現(xiàn)造成這種現(xiàn)象的主要原因是單測的開發(fā)成本、運維成本普遍很高。如何能夠智能化地提升單測環(huán)節(jié)的效能呢?關(guān)鍵的技術(shù)方向就是去做測試用例的自動生成。

2

相關(guān)研究

測試用例自動生成其實在學(xué)術(shù)界一直是比較熱門的研究方向,這里和大家一起分享下目前學(xué)術(shù)界已有的研究方向和相關(guān)成果。

d246acf4-5588-11ed-a3b6-dac502259ad0.png

圖3 測試用例自動生成相關(guān)研究

PART

模糊測試Fuzzing

Fuzzing的主要思路是通過構(gòu)造大量的測試輸入來去發(fā)現(xiàn)軟件里面存在的問題。2013年AFL工具發(fā)布,AFL首次在Fuzzing里使用了通過插裝獲取代碼覆蓋,從而來引導(dǎo)Fuzzing的方式。隨后以覆蓋率為引導(dǎo)的Fuzzing也被使用到了測試用例自動生成領(lǐng)域。

PART

符號執(zhí)行

符號執(zhí)行是一個程序分析非常經(jīng)典的概念,主要是通過解析程序的執(zhí)行路徑,用符號模擬輸入并獲得輸出。很多研究者也在嘗試通過使用符號執(zhí)行的結(jié)果來進(jìn)行測試用例自動生成。

PART

基于搜索 Search Based Software Testing

Search Based Software Testing的思路是從問題解空間出發(fā),通過一些啟發(fā)式的搜索算法來去解決測試用例生成的問題。SBST的可擴(kuò)展性很高,在整體的算法框架之下,可以隨意切換搜索算法,比如遺傳算法、爬山算法、多目標(biāo)搜索算法等等,都可以很好的融入到這個框架里面來去做這個用例生成。

3

難點和挑戰(zhàn)

當(dāng)我們將已有研究成果去落地到實際系統(tǒng)時,會遇到什么樣的難點和挑戰(zhàn)呢?這里列出了三大類挑戰(zhàn),涵蓋了測試用例自動生成、執(zhí)行、運維的整個生命周期。

d2bbc700-5588-11ed-a3b6-dac502259ad0.png



圖4 測試用例自動生成的難點和挑戰(zhàn)

PART

測試用例生成

測試用例生成是最基礎(chǔ)、最核心的環(huán)節(jié)。在實際系統(tǒng)中進(jìn)行測試用例生成通常會面臨復(fù)雜數(shù)據(jù)類型、復(fù)雜語言特性的情況。對于復(fù)雜情況的處理能力決定了生成用例的覆蓋率效果。除了復(fù)雜語法外,斷言生成也是測試用例生成的難點之一。我們的測試用例之所以能夠有效地發(fā)現(xiàn)問題,是因為用例中包含斷言,因此測試用例自動生成需要能夠包括斷言的生成能力。

PART

測試用例執(zhí)行

測試用例生成后,就來到了執(zhí)行這個環(huán)節(jié)。執(zhí)行環(huán)節(jié)最重要的是有一個穩(wěn)定的運行環(huán)境。相信大家肯定都會遇到這種場景,測試用例跑不通或者多次運行結(jié)果不一致,本質(zhì)都是用例不穩(wěn)定。為了保證用例能夠穩(wěn)定運行,是需要去做很多Mock的。比如代碼獲取了當(dāng)前機器的IP,需要通過對IP的mock來確保無論測試用例跑在哪臺機器上都能夠得到穩(wěn)定的返回值。用例運行穩(wěn)定之后,要考慮運行效率和運行穩(wěn)定性。系統(tǒng)越復(fù)雜,對應(yīng)測試用例的量級也越高。大規(guī)模單元測試用例的運行過程中,需要保證運行效率和穩(wěn)定性,才能融入DevOps流水線進(jìn)行持續(xù)回歸。

PART

測試用例運維

最后是測試用例的運維。測試用例的運維包括了:1)存量用例汰換。被測代碼變更后,部分舊的測試用例會失效。比如,被測代碼的某個方法在變更過程中被刪除了,那么涉及到這個方法的測試用例都會失效。對于失效用例,我們需要能夠把它們汰換掉。2)增量用例生成。迭代變更時會有新的代碼進(jìn)來,對于新增的代碼需要能夠觸發(fā)用例生成,將增量用例補充進(jìn)來。3)回歸分析。在歷史存量用例的回歸過程中,會出現(xiàn)用例失敗報錯的情況。針對這些失敗的情況,我們需要進(jìn)行降噪處理過濾掉無效失敗,從而去發(fā)現(xiàn)真正的代碼變更導(dǎo)致的問題。

4

測試用例智能生成SmartUnit

上面講了測試用例自動生成這項技術(shù)在實際系統(tǒng)中落地會遇到的很多難點和挑戰(zhàn),在這部分就來介紹我們在螞蟻所做的測試用例智能生成產(chǎn)品SmartUnit。

01

產(chǎn)品能力介紹

SmartUnit是智能單元測試用例生成產(chǎn)品,致力于解決單元測試環(huán)節(jié)里測試用例的自動生成執(zhí)行態(tài)化和管理,SmartUnit的產(chǎn)品能力包括了快速提升覆蓋率和智能探測異常。

d319e16e-5588-11ed-a3b6-dac502259ad0.png



圖5 SmartUnit能力大圖

SmartUnit產(chǎn)品提供了三種使用方式,涵蓋Local測試和回歸測試階段:

PART

本地命令行

提供核心能力Jar包,用戶可以通過本地java -jar來執(zhí)行jar包做用例生成。這種使用方式適用于Local測試階段,在開發(fā)同學(xué)寫完代碼后,直接在本地就可以生成用例,進(jìn)行單測驗證。

PART

IDEA插件

IDEA插件與本地命令行一樣,也適用于Local測試。相比于本地命令行,IDEA插件給用戶帶來了操作方式上的便捷。不需要執(zhí)行多條命令,而是僅僅右鍵單擊被測類,即可一鍵生成測試用例。

PART

DevOps組件

為減輕用例運維成本,我們提供了DevOps組件。通過DevOps組件,可以跟隨每一次的變更,每一次的PR或者M(jìn)R來去自動觸發(fā)這個組件,自動去做這個用例生成與汰換。下圖展示了我們與螞蟻Devops融合后的流水線全生命周期管理示例。

d3607c82-5588-11ed-a3b6-dac502259ad0.png



圖6 SmartUnit與螞蟻Devops流水線融合

對于SmartUnit這類測試用例自動生成產(chǎn)品,我們認(rèn)為核心評價指標(biāo)應(yīng)該包括五個:

PART

用例覆蓋率

我們不管去怎么做測試這個環(huán)節(jié),最終希望的都是都能夠?qū)Υa有更深度的覆蓋,對代碼有更完整的測試。目前SmartUnit自動生成用例的覆蓋率超過60%,在部分系統(tǒng)上可達(dá)到80%。

PART

用例有效性

用例有效性用于度量用例到底有沒有作用,會不會在代碼變更的情況下出現(xiàn)執(zhí)行失敗。我們度量有效性的方式是基于源碼攻擊,對于源碼進(jìn)行模擬變更,測試用例是否能夠發(fā)現(xiàn)變更。目前SmartUnit自動生成用例的有效性超過60%,高于人工手寫的測試用例。

PART

用例精簡性

單元測試用例一般是精簡的,甚至于是可讀的。只有精簡的用例才能夠合并到代碼庫中持續(xù)進(jìn)行維護(hù)。因此用例的精簡性也是非常重要的指標(biāo)。目前SmartUnit對生成的用例會進(jìn)行以行覆蓋/分支覆蓋為指標(biāo)的精簡,確保保留下來的用例都是對覆蓋率有正向影響的。

PART

用例生成效率

用例生成效率用來評價自動用例生成產(chǎn)品的提效能力,通過自動生成的效率提升,從而提升單測環(huán)節(jié)的效能。

PART

用例執(zhí)行效率

單元測試用例的量級相對會比較大,針對大規(guī)模的單測用例,需要保障用例執(zhí)行效率才不會阻塞CI流水線。面對2~3萬的測試用例量級,SmartUnit可以在30min內(nèi)執(zhí)行完。

02

自動生成用例示例

我們說了這么久用例自動生成,這里直觀看一下SmartUnit自動生成用例的樣子。SmartUnit用例包含以下四大部分:

用例注釋:直觀的告訴大家這個用例在測那些被測代碼、使用什么樣的入?yún)ⅰ⑿r炇裁礃拥姆祷刂担?/p>

Mock數(shù)據(jù):單測用例里最為基本的一部分,也是占比最大的一部分。SmartUnit會通過Mock的方式屏蔽掉依賴;

方法調(diào)用:請求被測方法,獲取返回值;

結(jié)果校驗:對方法返回值進(jìn)行Assert。

d3bf22aa-5588-11ed-a3b6-dac502259ad0.png



圖7 SmartUnit自動生成用例示意

03

核心算法和技術(shù)

為了達(dá)成我們在產(chǎn)品能力上的目標(biāo),SmartUnit底層具備完整的核心算法架構(gòu)來確保自動生成用例的覆蓋率、有效性等指標(biāo)水位。下圖是SmartUnit從0到1進(jìn)行用例生成的算法架構(gòu)。

d3e7a4a0-5588-11ed-a3b6-dac502259ad0.png



圖8 SmartUnit算法架構(gòu)

SmartUnit使用動態(tài)多目標(biāo)搜索作為主體算法框架,結(jié)合程序分析、符號執(zhí)行等技術(shù)共同完成從0到1進(jìn)行用例生成。從整體框架上包含環(huán)境構(gòu)建、種子用例生成、單測用例迭代、用例語句生成。

PART

環(huán)境構(gòu)建

通過加載被測類和被測類的依賴,從而構(gòu)建出一套可運行環(huán)境。后續(xù)的算法迭代強依賴于環(huán)境構(gòu)建是否成功。

PART

種子用例生成

有了可運行環(huán)境后,會進(jìn)行種子用例的生成。種子用例一般比較簡單,只包含一些初始化的對象和調(diào)用。

PART

單測用例迭代

種子用例作為單測迭代的初始狀態(tài)被傳入到真正的用例迭代流程中,在用例迭代流程中對種子不斷地修改、優(yōu)化、迭代,最終產(chǎn)出我們需要的測試用例集。在用例迭代過程中,通過Mock動態(tài)生成算法、最優(yōu)用例數(shù)據(jù)生成算法、最優(yōu)調(diào)用序列算法來對用例的完整性進(jìn)行填充,包括Mock語句和方法調(diào)用語句。最終,需要執(zhí)行用例來確定它的覆蓋效果,根據(jù)覆蓋率效果進(jìn)行最優(yōu)用例選擇。選擇出來的用例作為下一次迭代的種子,一代一代地迭代下去。

整個迭代過程有兩個終止條件。第一個是覆蓋率達(dá)到了預(yù)期的值,第二個是達(dá)到了設(shè)置的時間域值。

PART

用例語句生成

與整個單測用例迭代過程相配合的,是用例語句生成。用例語句生成包括Mock語句、Method調(diào)用語句、Assert語句。其中值得一提的是Assert語句自動生成,在SmartUnit中使用基于Mutate的斷言自動生成算法,這也是目前在學(xué)術(shù)界比較廣泛認(rèn)可的斷言生成方式。

04

落地效果

最后介紹在螞蟻SmartUnit的落地效果。目前SmartUnit已經(jīng)在螞蟻多個BU中使用,接入系統(tǒng)數(shù)據(jù)1000+。

用例覆蓋率維度上,SmartUnit自動生成用例可以達(dá)到60%+的效果,結(jié)合歷史存量用例后平均覆蓋率達(dá)到80%+;

用例有效性維度上,SmartUnit作為底層能力支持了螞蟻內(nèi)部編程活動。針對活動中提交的PR,67%的PR發(fā)現(xiàn)了問題,共發(fā)現(xiàn)34個問題,包括7個有效BUG和27個健壯性問題。

d45728f2-5588-11ed-a3b6-dac502259ad0.png



圖9 SmartUnit落地效果

05

總結(jié)與展望

d46cfcb8-5588-11ed-a3b6-dac502259ad0.png



圖10 總結(jié)與展望

面向未來發(fā)展,SmartUnit的發(fā)力方向包括:算法持續(xù)優(yōu)化、豐富產(chǎn)品形態(tài)、開源共建、SaaS服務(wù)。

審核編輯 :李倩

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

    關(guān)注

    15

    文章

    5128

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70768
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    13898

原文標(biāo)題:螞蟻測試用例智能生成技術(shù)架構(gòu)與實踐

文章出處:【微信號:軟件質(zhì)量報道,微信公眾號:軟件質(zhì)量報道】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS AI輔助編程工具(CodeGenie)代碼測試

    本功能從DevEco Studio 5.1.0 Release版本開始支持。 根據(jù)選中的ArkTS方法名稱,CodeGenie支持自動生成對應(yīng)單元測試用,提升測試覆蓋率。 在ArkT
    發(fā)表于 07-14 17:33

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗
    的頭像 發(fā)表于 05-27 08:05 ?233次閱讀
    【評<b class='flag-5'>測試用</b>】合眾HZ-T536開發(fā)板免費<b class='flag-5'>試用</b>體驗

    新能源車軟件單元測試深度解析:自動駕駛系統(tǒng)視角

    的系統(tǒng)工程(MBSE)通過SysML模型自動生成測試用。例如,Polarsys Capella工具可將系統(tǒng)架構(gòu)圖中的狀態(tài)機直接轉(zhuǎn)換為單元測試
    發(fā)表于 05-12 15:59

    直流充電測試負(fù)載關(guān)鍵技術(shù)解析

    、數(shù)字孿生測試平臺 集成BMS通訊協(xié)議的數(shù)字化測試系統(tǒng),支持GB/T 27930等主流協(xié)議棧的深度解析。測試場景庫內(nèi)置2000+標(biāo)準(zhǔn)化測試用
    發(fā)表于 03-05 16:18

    是德科技攜手Alea成功驗證3GPP EUTRA任務(wù)關(guān)鍵型測試用

    是德科技與 Alea S.r.l 近日在全球認(rèn)證論壇(GCF)一致性協(xié)議組(CAG)會議上,成功率先完成對基于 3GPP 演進(jìn)通用陸地?zé)o線接入(EUTRA)模型的關(guān)鍵任務(wù)一鍵通(MCPTT)測試用的驗證。該驗證采用是德科技 S8704A 協(xié)議一致性
    的頭像 發(fā)表于 02-26 16:18 ?719次閱讀

    通用自動化測試軟件 - TAE

    INTEWORK-TAE(Test Automation Executor) 是一款通用的測試用自動化執(zhí)行框架,用于汽車電子自動化測試,可支持仿真( MIL/SIL/HIL)、故障注入、 故障診斷、測量標(biāo)定等
    的頭像 發(fā)表于 01-02 13:42 ?740次閱讀
    通用自動化<b class='flag-5'>測試</b>軟件 - TAE

    螞蟻集團(tuán)宣布新一輪組織架構(gòu)調(diào)整

    螞蟻集團(tuán)近期迎來了新一輪的組織架構(gòu)調(diào)整,此次調(diào)整由螞蟻集團(tuán)總裁韓歆毅親自宣布,并通過郵件形式向全體員工傳達(dá)。 韓歆毅在郵件中透露,他將于2025年3月1日正式接任螞蟻集團(tuán)首席執(zhí)行官(C
    的頭像 發(fā)表于 12-24 09:35 ?720次閱讀

    是德科技助力三星電子驗證FiRa 2.0安全測距測試用

    是德科技(Keysight Technologies,Inc.)成功助力三星電子,在其Exynos Connect U100芯片組上驗證了FiRa 2.0安全測試用。此次驗證得益于是德科技提供的超寬帶 (UWB)測試解決方案,
    的頭像 發(fā)表于 11-18 10:08 ?606次閱讀

    邊緣計算架構(gòu)設(shè)計最佳實踐

    邊緣計算架構(gòu)設(shè)計最佳實踐涉及多個方面,以下是一些關(guān)鍵要素和最佳實踐建議: 一、核心組件與架構(gòu)設(shè)計 邊緣設(shè)備與網(wǎng)關(guān) 邊緣設(shè)備 :包括各種嵌入式設(shè)備、傳感器、
    的頭像 發(fā)表于 10-24 14:17 ?1109次閱讀

    端到端測試用怎么寫

    編寫端到端測試用是確保軟件系統(tǒng)從頭到尾能夠正常工作的關(guān)鍵步驟。以下是一個詳細(xì)的指南,介紹如何編寫端到端測試用: 一、理解端到端測試 端到
    的頭像 發(fā)表于 09-20 10:29 ?978次閱讀

    TSMaster 測試報告生成器操作指南

    用戶在基于TSMaster軟件開發(fā)測試用時,或需要使用TSMaster生成HTML報告時,需要使用TSMaster測試報告生成器。1Tes
    的頭像 發(fā)表于 08-03 08:21 ?1046次閱讀
    TSMaster <b class='flag-5'>測試</b>報告<b class='flag-5'>生成</b>器操作指南

    是德科技獲得5G NR FR1 1024-QAM解調(diào)測試用認(rèn)證,推動5G技術(shù)新飛躍

    1024-QAM解調(diào)測試用認(rèn)證。這一里程碑式的成就,標(biāo)志著是德科技在5G測試解決方案領(lǐng)域的持續(xù)創(chuàng)新與卓越實力,為全球5G網(wǎng)絡(luò)的快速部署與性能優(yōu)化注入了強大動力。
    的頭像 發(fā)表于 08-02 16:10 ?855次閱讀

    是德科技獲得5G NR FR1 1024-QAM 解調(diào)測試用的認(rèn)證

    是德科技(Keysight Technologies,Inc.)日前宣布獲得了基于3GPP TS 38.521-4測試規(guī)范的 5G NR FR1 1024-QAM 解調(diào)測試用的認(rèn)證。這些測試
    的頭像 發(fā)表于 07-31 16:46 ?1278次閱讀

    鑒源實驗室·ISO 26262中測試用的得出方法-等價類的生成和分析

    標(biāo)準(zhǔn)規(guī)范中給出了單元、集成、系統(tǒng)測試各階段的建議測試使用方法,設(shè)計生成測試用的建議方法包括需求分析、等價類的
    的頭像 發(fā)表于 07-30 15:37 ?966次閱讀
    鑒源實驗室·ISO 26262中<b class='flag-5'>測試用</b><b class='flag-5'>例</b>的得出方法-等價類的<b class='flag-5'>生成</b>和分析

    是德科技獲得窄帶非地面網(wǎng)絡(luò)標(biāo)準(zhǔn)的新測試用驗證

    是德科技(Keysight Technologies,Inc.)日前宣布,該公司針對3GPP Rel-17標(biāo)準(zhǔn)中關(guān)于NB-IoT NTN技術(shù)的新一致性測試用獲得驗證通過。這些測試用
    的頭像 發(fā)表于 07-26 14:13 ?1039次閱讀