一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于軟件性質(zhì)的自動(dòng)化測(cè)試技術(shù)

上海控安 ? 來源:上??匕?/span> ? 作者:上??匕?/span> ? 2023-10-09 16:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 |熊一衡華東師范大學(xué)軟件工程學(xué)院博士

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

版塊 |鑒源論壇 · 觀模

社群 |添加微信號(hào)TICPShanghai”加入“上??匕?1fusa安全社區(qū)”

在軟件開發(fā)的生命周期中,測(cè)試是至關(guān)重要的一環(huán)。為了確保軟件產(chǎn)品的質(zhì)量,開發(fā)團(tuán)隊(duì)需要進(jìn)行全面的測(cè)試,以發(fā)現(xiàn)和修復(fù)軟件中潛在的缺陷和問題。傳統(tǒng)的人工測(cè)試雖然有效,但卻耗時(shí)耗力,且成本較高。為了提高測(cè)試效率和準(zhǔn)確性,自動(dòng)化測(cè)試已經(jīng)成為一個(gè)重要的研究領(lǐng)域。

wKgZomUjuSWAGoorAAKUoKYDP1Y516.png

圖1 自動(dòng)化測(cè)試技術(shù)

圖1介紹了現(xiàn)有的幾種自動(dòng)化測(cè)試方法 [1]。X軸表示Feature compliance,即測(cè)試是否覆蓋測(cè)試人員想要測(cè)試的功能,而Y軸表示 Input scope covered, 表示測(cè)試輸入的覆蓋程度。可以看出,在圖的右上角缺了一塊,即同時(shí)滿足high feature compliance和full input scope covered 的測(cè)試技術(shù)。這個(gè)技術(shù)就是接下來要介紹的基于性質(zhì)的測(cè)試技術(shù)(property-based testing)。

01

什么是基于軟件性質(zhì)的自動(dòng)化測(cè)試技術(shù)

基于軟件性質(zhì)的測(cè)試(property-based testing)是一種很受歡迎的自動(dòng)化測(cè)試技術(shù),其原理是測(cè)試人員編寫適用于待測(cè)軟件的真實(shí)邏輯語句(即性質(zhì)),然后使用自動(dòng)化測(cè)試工具生成大量的測(cè)試輸入,以充分測(cè)試待測(cè)軟件,并驗(yàn)證測(cè)試人員編寫的性質(zhì)是否得以滿足 [2]。如果性質(zhì)被違反,則表明軟件可能存在錯(cuò)誤(bug)。例如,下圖是一個(gè)待測(cè)程序`my_sort()`,其功能是對(duì)輸入的序列進(jìn)行排序,并返回排序后的序列。

wKgaomUjuU-AU6GoAAAUwtiQVa0937.png

圖2 待測(cè)程序

為了測(cè)試`my_sort()`, 通常測(cè)試人員會(huì)編寫單元測(cè)試用例。編寫傳統(tǒng)的單元測(cè)試需要人工指定測(cè)試輸入和預(yù)期輸出。如下圖所示,有6個(gè)測(cè)試用例來測(cè)試待測(cè)程序。然而,這種方法的缺點(diǎn)在于它非常耗人力,因?yàn)閷?duì)于每一個(gè)測(cè)試輸入,我們都需要手動(dòng)去指定相應(yīng)的測(cè)試輸出。此外,測(cè)試的輸入有限,依賴于測(cè)試人員的知識(shí),因此難以充分測(cè)試待測(cè)程序。

wKgaomUjuVyAbrcGAAClm10PBBw400.png

圖3 單元測(cè)試用例

然而,如果使用property-based testing,我們僅僅編寫一個(gè)測(cè)試方法就可以覆蓋所有的測(cè)試輸入。一開始,我們根據(jù)待測(cè)程序的理解,給出待測(cè)程序應(yīng)該有的性質(zhì)(property)。比如,my_sort()應(yīng)該滿足的一個(gè)性質(zhì)為:返回list中的每一個(gè)元素都不應(yīng)該大于它們之后的一個(gè)元素。根據(jù)這個(gè)性質(zhì),我們就可以編寫出一個(gè)測(cè)試用例。注:我們以面向python語言的property-based testing 框架hypothesis為例來編寫。

wKgZomUjuWyAHLxWAABDFaKNQWA376.png

圖4 Property-based testing測(cè)試用例

如上圖所示,代碼的第一行 `@given(st.lists(st.integers())` 是一個(gè)裝飾器,表示一旦測(cè)試開始,Hypothesis 將生成大量隨機(jī)的list作為`test_prop_ordered()`函數(shù)的輸入。每一個(gè)生成的list都將作為參數(shù)xs傳遞給`test_prop_ordered()`函數(shù),并執(zhí)行函數(shù)體,然后驗(yàn)證assert 語句是否為真。這樣,我們就可以自動(dòng)化生成足夠多的list來驗(yàn)證待測(cè)程序是否滿足我們?cè)O(shè)定的性質(zhì),而不用人為地去指定具體的測(cè)試輸入和輸出數(shù)據(jù),大大提高了測(cè)試效率。

02

如何進(jìn)行基于軟件性質(zhì)的自動(dòng)化測(cè)試

上節(jié)介紹了Property-based testing的概念,這節(jié)介紹如何進(jìn)行基于軟件性質(zhì)的自動(dòng)化測(cè)試。我們用一個(gè)通用的模板來解釋如何進(jìn)行property-based testing:

wKgaomUjuYWAMRkUAABHdxmEhQI295.png

圖5 property-based testing模板

第一步:確定你想要測(cè)試的程序性質(zhì)。如圖5中第三行所示,測(cè)試人員通過對(duì)待測(cè)程序的理解來確定想要測(cè)試的程序性質(zhì)。例如,在圖4中,該測(cè)試用例旨在驗(yàn)證以下程序性質(zhì):排好序的list中每一個(gè)元素都不應(yīng)該大于其后的元素。如果在測(cè)試過程中違反了這個(gè)性質(zhì),那么表明待測(cè)程序可能出現(xiàn)了一個(gè)Bug。

第二步:確定測(cè)試輸入類型及范圍。在完成第一步后,測(cè)試人員應(yīng)該確定將要傳遞給待測(cè)程序的測(cè)試輸入的類型和范圍,如圖5中第一,二行所示。例如,在圖4中,由于待測(cè)程序的功能是對(duì)list中的元素的大小進(jìn)行排序,那么測(cè)試輸入應(yīng)該是list。同時(shí),由于排序涉及到元素的大小比較,因此列表中的元素應(yīng)該是數(shù)字。在這里,我們選擇了整數(shù)(integer)作為元素類型。

第三步:編寫并運(yùn)行測(cè)試用例。目前,針對(duì)不同的軟件或者程序語言,開發(fā)人員已經(jīng)開發(fā)出了多種基于性質(zhì)的測(cè)試框架(Java: QuickTheories, Python: Hypothesis, C++: RapidCheck, Scala: ScalaCheck, JavaScipt: fast-check, Ruby: Rantly, Swift: Swiftcheck等等)[3-9]。一旦選擇了適合的測(cè)試框架,我們就可以利用測(cè)試框架編寫出相應(yīng)的測(cè)試用例并且運(yùn)行它們。

03

如何選擇合適的軟件性質(zhì)

前兩節(jié)介紹了property-based testing的概念以及如何進(jìn)行property-basedtesting,我們可以看出property-based testing是一個(gè)非常高效的測(cè)試技術(shù)。然而,當(dāng)測(cè)試人員真正開始編寫測(cè)試用例的時(shí)候,他們經(jīng)常會(huì)碰見一個(gè)問題:應(yīng)該選擇什么樣的性質(zhì)來進(jìn)行測(cè)試?因此,在本節(jié)中,我們將介紹一下比較通用的性質(zhì) [10],希望可以啟發(fā)到測(cè)試人員如何選擇合適的軟件性質(zhì)。

性質(zhì)1:對(duì)稱性(Symmetry)。如下圖所示。如果能夠?qū)⒛承┲缔D(zhuǎn)換成其他值,然后再轉(zhuǎn)換回來,那么它應(yīng)該和原值保持一致。例如,序列化(Serialization)就是一個(gè)典型的例子。將文本轉(zhuǎn)化成一個(gè)對(duì)象,然后將該對(duì)象轉(zhuǎn)換回來,則文本應(yīng)該保持不變。

wKgaomUjuZaAORzkAADeLKYA_ls667.png

圖 6 對(duì)稱性

性質(zhì)2:交換性(Commutativity)。該性質(zhì)指的是改變執(zhí)行操作的順序,但是最終結(jié)果不會(huì)變化。例如,如下圖所示,將一個(gè)list頭部加入一個(gè)元素,再將其尾部加入一個(gè)元素,如果將這兩個(gè)操作的順序交換,最終得到的list應(yīng)該是相同的。

wKgaomUjuaeAKCobAAAemNZEly4838.png

圖 7 交換性

性質(zhì)3:不變性(Invariants)。該性質(zhì)指的是執(zhí)行某些操作后,并不會(huì)改變測(cè)試對(duì)象的某些性質(zhì)。例如,如下圖所示,將一個(gè)數(shù)組排序后,該數(shù)組的長度應(yīng)該保持不變。

wKgaomUjubaATzQ5AAAMb5ZJBrk629.png

圖 8 不變性

性質(zhì)4:冪等性(Idempotence)。該性質(zhì)一般指多次執(zhí)行某種操作和執(zhí)行一次某種操作帶來的效果應(yīng)該是一樣的。例如,如下圖所示,對(duì)于一個(gè)列表,對(duì)其進(jìn)行一次排序和多次排序,最終結(jié)果應(yīng)該是相同的。

wKgZomUjucWABdMnAABFhQK62CU626.png

圖 9 冪等性

性質(zhì)5:推導(dǎo)性(induction)。該性質(zhì)通常指的是,如果一個(gè)大的對(duì)象可以分成更小的對(duì)象,并且對(duì)于某些性質(zhì)來說在這些小的對(duì)象上成立,那么可以證明這些性質(zhì)在大的對(duì)象上也成立。例如,如下圖所示。如果黑色集合中含有某個(gè)元素,那么紅色、藍(lán)色、綠色、黑色的大集合中也應(yīng)該有某個(gè)元素。

wKgaomUjudOAUO06AAAL5CmtWoM932.png

圖 10 推導(dǎo)性

04

總結(jié)

基于性質(zhì)的測(cè)試在近些年已經(jīng)成為了一個(gè)非常受歡迎的測(cè)試技術(shù),并且開發(fā)者們已經(jīng)開發(fā)出了多種基于性質(zhì)的測(cè)試框架。這種技術(shù)有非常多的優(yōu)點(diǎn),例如,理論上它可以覆蓋所有的可能的測(cè)試輸入,更充分地測(cè)試用戶關(guān)心的功能,以及降低測(cè)試成本。然而,由于其特性,也存在一些挑戰(zhàn)。例如,由于其只關(guān)心想要測(cè)試的性質(zhì),那么就導(dǎo)致對(duì)于某個(gè)性質(zhì)測(cè)試得很充分,對(duì)于其他性質(zhì)就根本沒有測(cè)試到。此外,測(cè)試人員需要足夠了解待測(cè)軟件,以抽象出應(yīng)該保持的性質(zhì),這對(duì)測(cè)試人員的要求比較高。另外,開發(fā)一個(gè)高效的基于性質(zhì)的測(cè)試框架對(duì)于開發(fā)人員來說也是一個(gè)大的挑戰(zhàn)。開發(fā)人員需要思考如何使測(cè)試人員更輕松地編寫性質(zhì),以及如何才能開發(fā)出更好的數(shù)據(jù)生成器等。最重要的是,基于性質(zhì)的自動(dòng)化測(cè)試技術(shù)并不意味著取代其他測(cè)試技術(shù)(例如,單元測(cè)試),而是可以與其他測(cè)試技術(shù)共存。測(cè)試人員應(yīng)該根據(jù)測(cè)試的需求,選擇合適的測(cè)試技術(shù),使其更好地服務(wù)于軟件測(cè)試。

審核編輯 黃宇

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    車機(jī)交互測(cè)試自動(dòng)化實(shí)現(xiàn)路徑與案例分析

    測(cè)試設(shè)備是車機(jī)交互測(cè)試自動(dòng)化實(shí)現(xiàn)的核心支撐,通過合理選型、部署和應(yīng)用北京沃華慧通測(cè)控技術(shù)有限公司汽車測(cè)試設(shè)備,結(jié)合科學(xué)的實(shí)現(xiàn)路徑和豐富的案例
    的頭像 發(fā)表于 07-10 09:24 ?485次閱讀
    車機(jī)交互<b class='flag-5'>測(cè)試</b><b class='flag-5'>自動(dòng)化</b>實(shí)現(xiàn)路徑與案例分析

    UTP系統(tǒng)通過ModBus協(xié)議對(duì)溫度傳感器的自動(dòng)化測(cè)試介紹

    、4G/5G)、顯示識(shí)別(設(shè)備屏幕、按鈕、LED等)、設(shè)備操控、軟件功能等各方面進(jìn)行自動(dòng)化測(cè)試,能夠進(jìn)行各種復(fù)雜時(shí)序的自動(dòng)化測(cè)試。 接下來,
    的頭像 發(fā)表于 06-07 15:12 ?197次閱讀
    UTP系統(tǒng)通過ModBus協(xié)議對(duì)溫度傳感器的<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>介紹

    APP自動(dòng)化測(cè)試框架

    APP自動(dòng)化測(cè)試框架是一套結(jié)合工具鏈、設(shè)計(jì)模式和技術(shù)規(guī)范的集成解決方案。以下是基于主流技術(shù)實(shí)踐的核心要點(diǎn)總結(jié): 一、核心模塊構(gòu)成 環(huán)境管理? 支持物理機(jī)/虛擬機(jī)/容器
    的頭像 發(fā)表于 05-07 07:35 ?143次閱讀
    APP<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>框架

    TH2822系列LCR測(cè)試儀的自動(dòng)化測(cè)試

    推出的TH2822系列LCR測(cè)試儀,憑借其高精度測(cè)量、多功能接口及智能設(shè)計(jì),為自動(dòng)化測(cè)試提供了完善的解決方案。本文將深入探討TH2822系列在自動(dòng)
    的頭像 發(fā)表于 04-23 16:38 ?261次閱讀
    TH2822系列LCR<b class='flag-5'>測(cè)試</b>儀的<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>

    矢量信號(hào)發(fā)生器在工業(yè)自動(dòng)化測(cè)試中的應(yīng)用場(chǎng)景

    隨著工業(yè)自動(dòng)化技術(shù)的飛速發(fā)展,對(duì)測(cè)試設(shè)備的要求也日益提高。矢量信號(hào)發(fā)生器作為一種先進(jìn)的測(cè)試設(shè)備,憑借其強(qiáng)大的信號(hào)調(diào)制能力和廣泛的頻率覆蓋范圍,在工業(yè)
    的頭像 發(fā)表于 03-26 14:10 ?345次閱讀

    PCI Express Gen5自動(dòng)化多通道測(cè)試方案

    挑戰(zhàn)。引入RF開關(guān)矩陣允許多通道測(cè)試中的物理連接切換,并實(shí)現(xiàn)自動(dòng)化軟件測(cè)試。本文介紹了如何使用來自Mini-Circuits的RF開關(guān)擴(kuò)展測(cè)試
    的頭像 發(fā)表于 01-16 10:21 ?1035次閱讀
    PCI Express Gen5<b class='flag-5'>自動(dòng)化</b>多通道<b class='flag-5'>測(cè)試</b>方案

    基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署

    優(yōu)化,為 Docker 容器應(yīng)用與 Jenkins 自動(dòng)化流水線提供了理想的運(yùn)行環(huán)境。無論是快速構(gòu)建、測(cè)試還是部署,F(xiàn)lexus X 都能確保流程順暢無阻,大幅提升軟件開發(fā)與交付效率
    的頭像 發(fā)表于 01-07 17:25 ?528次閱讀
    基于 Docker 與 Jenkins 實(shí)現(xiàn)<b class='flag-5'>自動(dòng)化</b>部署

    通用自動(dòng)化測(cè)試軟件 - TAE

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

    串口屏自動(dòng)化測(cè)試

    嚴(yán)謹(jǐn)而高效的自動(dòng)化測(cè)試方案顯得尤為重要。以下是對(duì)串口屏自動(dòng)化測(cè)試策略的深度解析,旨在通過高質(zhì)量的測(cè)試設(shè)計(jì),嚴(yán)格控制產(chǎn)品設(shè)計(jì)質(zhì)量,推動(dòng)產(chǎn)業(yè)升級(jí)
    的頭像 發(fā)表于 12-27 17:17 ?1473次閱讀

    潤和軟件榮獲IDC測(cè)試自動(dòng)化領(lǐng)域唯一推薦廠商

    近日,國際知名市場(chǎng)研究機(jī)構(gòu)IDC發(fā)布《中國生成式人工智能技術(shù)與品牌推薦》報(bào)告,推薦了人工智能領(lǐng)域中表現(xiàn)突出的廠商。江蘇潤和軟件股份有限公司(簡稱“潤和軟件”)憑借在AI技術(shù)和金融
    的頭像 發(fā)表于 12-24 10:47 ?651次閱讀

    探索Playwright:前端自動(dòng)化測(cè)試的新紀(jì)元

    作者:京東保險(xiǎn) 張新磊 背景 在前端開發(fā)中,自動(dòng)化測(cè)試是確保軟件質(zhì)量和用戶體驗(yàn)的關(guān)鍵環(huán)節(jié)。隨著Web應(yīng)用的復(fù)雜性不斷增加,手動(dòng)測(cè)試已經(jīng)無法滿足快速迭代和持續(xù)交付的需求。
    的頭像 發(fā)表于 10-22 14:27 ?707次閱讀

    開關(guān)電源自動(dòng)化測(cè)試設(shè)備:如何實(shí)現(xiàn)自動(dòng)化測(cè)試?

    開關(guān)電源自動(dòng)化測(cè)試設(shè)備是將測(cè)試軟件測(cè)試硬件集成在一個(gè)電源測(cè)試柜中的ate
    的頭像 發(fā)表于 08-30 18:19 ?1823次閱讀
    開關(guān)電源<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>設(shè)備:如何實(shí)現(xiàn)<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>?

    射頻系統(tǒng)軟件功能推動(dòng)濾波器、功分器等射頻模塊的自動(dòng)化測(cè)試

    射頻測(cè)試系統(tǒng)軟件是用來檢測(cè)射頻模塊和射頻元器件可靠性和穩(wěn)定性的自動(dòng)化測(cè)試設(shè)備。系統(tǒng)是基于ATECLOUD智能云測(cè)試平臺(tái)開發(fā)而成,包括
    的頭像 發(fā)表于 08-28 17:06 ?766次閱讀
    射頻系統(tǒng)<b class='flag-5'>軟件</b>功能推動(dòng)濾波器、功分器等射頻模塊的<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>

    合肥某公司無源器件S參數(shù)與互調(diào)自動(dòng)化測(cè)試案例分享

    針對(duì)客戶面臨的測(cè)試難題、產(chǎn)品特性及測(cè)試需求,納米軟件精心打造了一套定制的多工位自動(dòng)化測(cè)試系統(tǒng),
    的頭像 發(fā)表于 08-20 18:23 ?918次閱讀
    合肥某公司無源器件S參數(shù)與互調(diào)<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>案例分享

    XLT高速線纜自動(dòng)化測(cè)試系統(tǒng)

    高速線纜自動(dòng)化測(cè)試系統(tǒng) 隨著高速通信的快速發(fā)展,對(duì)于高速數(shù)據(jù)通信線纜性能要求日益增高,在其硏發(fā)、生產(chǎn)階段,需要多次測(cè)試射頻性能。傳統(tǒng)人工手動(dòng)測(cè)試存在
    的頭像 發(fā)表于 08-05 16:39 ?676次閱讀