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

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

完善資料讓更多小伙伴認識你,還能領(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è)界中可以看到大型復雜系統(tǒng)的數(shù)量是持續(xù)在積累和增長的。在這個過程中,我們對這些復雜系統(tǒng)的測試和維護成本是不斷在增加的。不管是開發(fā)同學還是測試同學,都需要投入大量的時間在測試用例編寫環(huán)節(jié)。我們也經(jīng)常會收到一些同學的反饋,比如在一次功能迭代過程中,開發(fā)業(yè)務(wù)代碼所需要的時間和開發(fā)測試用例所需要的時間可能會達到1 : 1。從這里我們可以看出,開發(fā)測試用例環(huán)節(jié)是存在非常大的提效空間的。

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

PART

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

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



圖1 問題修復成本

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

PART

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

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

圖2 Google測試金字塔

大家應(yīng)該對Google的測試金字塔比較熟悉,Google測試金字塔中占比最高的是單測用例,達到了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)研究

測試用例自動生成其實在學術(shù)界一直是比較熱門的研究方向,這里和大家一起分享下目前學術(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里使用了通過插裝獲取代碼覆蓋,從而來引導Fuzzing的方式。隨后以覆蓋率為引導的Fuzzing也被使用到了測試用例自動生成領(lǐng)域。

PART

符號執(zhí)行

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

PART

基于搜索 Search Based Software Testing

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

3

難點和挑戰(zhàn)

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

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



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

PART

測試用例生成

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

PART

測試用例執(zhí)行

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

PART

測試用例運維

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

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ā)同學寫完代碼后,直接在本地就可以生成用例,進行單測驗證。

PART

IDEA插件

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

PART

DevOps組件

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

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



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

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

PART

用例覆蓋率

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

PART

用例有效性

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

PART

用例精簡性

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

PART

用例生成效率

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

PART

用例執(zhí)行效率

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

02

自動生成用例示例

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

用例注釋:直觀的告訴大家這個用例在測那些被測代碼、使用什么樣的入?yún)?、校驗什么樣的返回值?/p>

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

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

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

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



圖7 SmartUnit自動生成用例示意

03

核心算法和技術(shù)

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

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



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

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

PART

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

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

PART

種子用例生成

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

PART

單測用例迭代

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

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

PART

用例語句生成

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

04

落地效果

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

用例覆蓋率維度上,SmartUnit自動生成用例可以達到60%+的效果,結(jié)合歷史存量用例后平均覆蓋率達到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)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 智能化
    +關(guān)注

    關(guān)注

    15

    文章

    5242

    瀏覽量

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

    關(guān)注

    30

    文章

    4971

    瀏覽量

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

    關(guān)注

    0

    文章

    237

    瀏覽量

    14198

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    嵌入式AI開發(fā)必看:杜絕幻覺,才是工業(yè)級IDE的核心底氣

    。 3、海量自動化測試用筑牢安全防線 沉淀十余年工業(yè)項目實踐經(jīng)驗,構(gòu)建覆蓋數(shù)字電源、軍工、新能源等尖端領(lǐng)域的百萬級自動化測試用庫,涵蓋不
    發(fā)表于 03-18 13:49

    半導體嵌入式單元測試的核心技術(shù)、工具選型與落地全流程

    要求不斷提高的背景下,單元測試已經(jīng)成為確保軟件質(zhì)量和可靠性的不可或缺的環(huán)節(jié)。winAMS作為一款專業(yè)的半導體嵌入式軟件單元測試工具,通過目標代碼級測試、硬件行為仿真、智能
    發(fā)表于 03-06 14:55

    軟件測試工具深度解析?

    、可認證的嵌入式軟件。以下是其各功能模塊的全面解析。 ?一、單元測試自動化引擎? 此模塊通過高度自動化技術(shù),將工程師從繁瑣的測試用編寫與數(shù)據(jù)管理中解放出來,專注于
    的頭像 發(fā)表于 01-26 14:23 ?162次閱讀

    汽車軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標準的單元測試體系重構(gòu)與中日實踐深度對比(2026學術(shù)研究報告)

    為“競爭力護城河”。中國車企需正視三點: 工具非萬能 :winAMS的效能依賴流程重構(gòu)(如測試左移)。 文化先于技術(shù) :管理者認知偏差是最大瓶頸,需制度性矯正。 數(shù)據(jù)驅(qū)動決策 :覆蓋率必須量化并綁定企業(yè)KPI。 未來研究可探索AI輔助
    發(fā)表于 01-05 14:58

    新品首發(fā)·東方中科智能座艙測試系統(tǒng)

    域協(xié)同測試的全流程閉環(huán)自動化測試。該系統(tǒng)搭載自研的HMI自動化測試軟件,提供圖形化編輯界面,用戶無需編程即可快速構(gòu)建測試序列,輕松實現(xiàn)測試用
    的頭像 發(fā)表于 11-28 10:33 ?582次閱讀
    新品首發(fā)·東方中科<b class='flag-5'>智能</b>座艙<b class='flag-5'>測試</b>系統(tǒng)

    Iverilog仿真e203_hbirdv2跑RISC-V指令測試用

    環(huán)境:Ubuntu20.04、Iverilog12.0、gtkwave3.3.103 內(nèi)容:Iverilog仿真e203_hbirdv2跑RISC-V指令測試用 要點: 下載安裝
    發(fā)表于 10-27 08:24

    分布式光伏環(huán)境監(jiān)測站的技術(shù)架構(gòu)與應(yīng)用實踐

    分布式光伏環(huán)境監(jiān)測站的技術(shù)架構(gòu)與應(yīng)用實踐 柏峰【BF-GFQX】一、系統(tǒng)技術(shù)架構(gòu)解析 分布式光伏環(huán)境監(jiān)測站采用“感知層-傳輸層-應(yīng)用層”三層
    的頭像 發(fā)表于 10-13 10:05 ?623次閱讀
    分布式光伏環(huán)境監(jiān)測站的<b class='flag-5'>技術(shù)</b><b class='flag-5'>架構(gòu)</b>與應(yīng)用<b class='flag-5'>實踐</b>

    如何讓大模型生成你想要的測試用

    應(yīng)用大模型生成測試用,常見的知識庫,測試大模型,微調(diào),RAG等技術(shù)門檻都不低,甚至很難,因此對于應(yīng)用者而言,最快的方式就是應(yīng)用好提示詞,調(diào)
    的頭像 發(fā)表于 09-26 10:01 ?984次閱讀
    如何讓大模型<b class='flag-5'>生成</b>你想要的<b class='flag-5'>測試用</b><b class='flag-5'>例</b>?

    芯片硬件測試用

    是項目開始的關(guān)鍵,利用白盒和黑盒覆蓋,保證產(chǎn)品質(zhì)量。根據(jù)芯片功能,目標市場,進行測試立項:依據(jù)BRD/MRD/PRD;計劃:測試需求分析、人力資源時間線;測試用
    的頭像 發(fā)表于 09-05 10:04 ?1039次閱讀
    芯片硬件<b class='flag-5'>測試用</b><b class='flag-5'>例</b>

    上海控安:基于模型的測試用生成

    在當今復雜多變的軟件開發(fā)環(huán)境中,軟件系統(tǒng)的規(guī)模和復雜度不斷攀升,傳統(tǒng)測試方法面臨著諸多挑戰(zhàn)。如何高效、準確地生成測試用,以確保軟件系統(tǒng)的質(zhì)量和可靠性,成為軟件
    的頭像 發(fā)表于 08-28 14:30 ?895次閱讀
    上??匕玻夯谀P偷?b class='flag-5'>測試用</b><b class='flag-5'>例</b><b class='flag-5'>生成</b>

    HarmonyOSAI編程單元測試用

    根據(jù)選中的ArkTS方法名稱,CodeGenie支持自動生成對應(yīng)單元測試用,提升測試覆蓋率。 在ArkTS文檔中,光標放置于方法名稱上或框選完整的待
    發(fā)表于 08-27 14:33

    生成式 AI 重塑自動駕駛仿真:4D 場景生成技術(shù)的突破與實踐

    生成式AI驅(qū)動的4D場景技術(shù)正解決傳統(tǒng)方法效率低、覆蓋不足等痛點,如何通過NeRF、3D高斯?jié)姙R等技術(shù)實現(xiàn)高保真動態(tài)建模?高效生成極端天氣等長尾場景?本文為您系統(tǒng)梳理AI驅(qū)動的4D場景
    的頭像 發(fā)表于 08-06 11:20 ?5209次閱讀
    <b class='flag-5'>生成</b>式 AI 重塑自動駕駛仿真:4D 場景<b class='flag-5'>生成</b><b class='flag-5'>技術(shù)</b>的突破與<b class='flag-5'>實踐</b>

    AI生成測試用真的靠譜嗎?

    軟件測試正經(jīng)歷一場深刻的技術(shù)革命。AI,尤其是以GPT、通義千問、文心一言、Claude等為代表的大語言模型(LLM),開始廣泛介入測試流程:從需求分析、測試用
    的頭像 發(fā)表于 08-01 10:02 ?1793次閱讀
    AI<b class='flag-5'>生成</b>的<b class='flag-5'>測試用</b><b class='flag-5'>例</b>真的靠譜嗎?

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

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗
    的頭像 發(fā)表于 05-27 08:05 ?1033次閱讀
    【評<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