在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于軟件性質的自動化測試技術

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

掃碼添加小助手

加入工程師交流群

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

蘇亭 華東師范大學軟件工程學院教授

版塊 |鑒源論壇 · 觀模

社群 |添加微信號TICPShanghai”加入“上海控安51fusa安全社區”

在軟件開發的生命周期中,測試是至關重要的一環。為了確保軟件產品的質量,開發團隊需要進行全面的測試,以發現和修復軟件中潛在的缺陷和問題。傳統的人工測試雖然有效,但卻耗時耗力,且成本較高。為了提高測試效率和準確性,自動化測試已經成為一個重要的研究領域。

wKgZomUjuSWAGoorAAKUoKYDP1Y516.png

圖1 自動化測試技術

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

01

什么是基于軟件性質的自動化測試技術

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

wKgaomUjuU-AU6GoAAAUwtiQVa0937.png

圖2 待測程序

為了測試`my_sort()`, 通常測試人員會編寫單元測試用例。編寫傳統的單元測試需要人工指定測試輸入和預期輸出。如下圖所示,有6個測試用例來測試待測程序。然而,這種方法的缺點在于它非常耗人力,因為對于每一個測試輸入,我們都需要手動去指定相應的測試輸出。此外,測試的輸入有限,依賴于測試人員的知識,因此難以充分測試待測程序。

wKgaomUjuVyAbrcGAAClm10PBBw400.png

圖3 單元測試用例

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

wKgZomUjuWyAHLxWAABDFaKNQWA376.png

圖4 Property-based testing測試用例

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

02

如何進行基于軟件性質的自動化測試

上節介紹了Property-based testing的概念,這節介紹如何進行基于軟件性質的自動化測試。我們用一個通用的模板來解釋如何進行property-based testing:

wKgaomUjuYWAMRkUAABHdxmEhQI295.png

圖5 property-based testing模板

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

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

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

03

如何選擇合適的軟件性質

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

性質1:對稱性(Symmetry)。如下圖所示。如果能夠將某些值轉換成其他值,然后再轉換回來,那么它應該和原值保持一致。例如,序列化(Serialization)就是一個典型的例子。將文本轉化成一個對象,然后將該對象轉換回來,則文本應該保持不變。

wKgaomUjuZaAORzkAADeLKYA_ls667.png

圖 6 對稱性

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

wKgaomUjuaeAKCobAAAemNZEly4838.png

圖 7 交換性

性質3:不變性(Invariants)。該性質指的是執行某些操作后,并不會改變測試對象的某些性質。例如,如下圖所示,將一個數組排序后,該數組的長度應該保持不變。

wKgaomUjubaATzQ5AAAMb5ZJBrk629.png

圖 8 不變性

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

wKgZomUjucWABdMnAABFhQK62CU626.png

圖 9 冪等性

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

wKgaomUjudOAUO06AAAL5CmtWoM932.png

圖 10 推導性

04

總結

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化測試
    +關注

    關注

    0

    文章

    233

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    UTP系統通過ModBus協議對溫度傳感器的自動化測試介紹

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

    APP自動化測試框架

    APP自動化測試框架是一套結合工具鏈、設計模式和技術規范的集成解決方案。以下是基于主流技術實踐的核心要點總結: 一、核心模塊構成 環境管理? 支持物理機/虛擬機/容器
    的頭像 發表于 05-07 07:35 ?104次閱讀
    APP<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>框架

    TH2822系列LCR測試儀的自動化測試

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

    矢量信號發生器在工業自動化測試中的應用場景

    隨著工業自動化技術的飛速發展,對測試設備的要求也日益提高。矢量信號發生器作為一種先進的測試設備,憑借其強大的信號調制能力和廣泛的頻率覆蓋范圍,在工業
    的頭像 發表于 03-26 14:10 ?305次閱讀

    PCI Express Gen5自動化多通道測試方案

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

    通用自動化測試軟件 - TAE

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

    串口屏自動化測試

    嚴謹而高效的自動化測試方案顯得尤為重要。以下是對串口屏自動化測試策略的深度解析,旨在通過高質量的測試設計,嚴格控制產品設計質量,推動產業升級
    的頭像 發表于 12-27 17:17 ?1448次閱讀

    潤和軟件榮獲IDC測試自動化領域唯一推薦廠商

    近日,國際知名市場研究機構IDC發布《中國生成式人工智能技術與品牌推薦》報告,推薦了人工智能領域中表現突出的廠商。江蘇潤和軟件股份有限公司(簡稱“潤和軟件”)憑借在AI技術和金融
    的頭像 發表于 12-24 10:47 ?594次閱讀

    探索Playwright:前端自動化測試的新紀元

    作者:京東保險 張新磊 背景 在前端開發中,自動化測試是確保軟件質量和用戶體驗的關鍵環節。隨著Web應用的復雜性不斷增加,手動測試已經無法滿足快速迭代和持續交付的需求。
    的頭像 發表于 10-22 14:27 ?643次閱讀

    開關電源自動化測試設備:如何實現自動化測試

    開關電源自動化測試設備是將測試軟件測試硬件集成在一個電源測試柜中的ate
    的頭像 發表于 08-30 18:19 ?1761次閱讀
    開關電源<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>設備:如何實現<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>?

    OTA自動化測試解決方案——實車級OTA測試系統PAVELINK.OTABOX

    作者|網蟲小編|不吃豬頭肉引言往期內容里為大家介紹了OTA技術、OTA后續的發展趨勢預測及OTA自動化測試解決方案。本文是OTA系列的第三篇文章,今天主要向大家介紹實車級OTA自動化
    的頭像 發表于 07-11 08:26 ?1168次閱讀
    OTA<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>解決方案——實車級OTA<b class='flag-5'>測試</b>系統PAVELINK.OTABOX

    戶外便攜儲能電源自動化測試系統高效完成電源測試

    納米軟件電源自動化測試系統是基于ATECLOUD平臺開發的、針對儲能電源及其它電源模塊的自動化測試系統方案。該系統實現0代碼開發,對
    的頭像 發表于 07-08 16:44 ?857次閱讀
    戶外便攜儲能電源<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>系統高效完成電源<b class='flag-5'>測試</b>

    臺式機電源測試軟件自動化檢測電源性能好壞

    納米軟件NSAT-8000電源測試系統以自動化測試平臺ATECLOUD為基礎,封裝儀器指令,采用云計算和多元算子服務,通過簡單拖拽儀器指令、循環、計算、條件節點等,就可以快速完成臺式機
    的頭像 發表于 07-05 11:36 ?1355次閱讀
    臺式機電源<b class='flag-5'>測試</b><b class='flag-5'>軟件</b>:<b class='flag-5'>自動化</b>檢測電源性能好壞

    機械自動化和電氣自動化區別是什么

    機械自動化和電氣自動化是現代工業生產中兩個重要的領域,它們在許多方面有著密切的聯系,但也存在一些明顯的區別。 一、基本概念 機械自動化 機械自動化是指利用機械設備、傳感器、控制系統等
    的頭像 發表于 07-01 09:33 ?7093次閱讀

    機械自動化自動化的一種嗎

    引言 自動化技術是指利用控制裝置對生產過程進行控制,以實現生產過程的自動化。機械自動化自動化技術
    的頭像 發表于 07-01 09:32 ?2438次閱讀
    主站蜘蛛池模板: 免费国产不卡午夜福在线 | 99午夜 | 亚洲乱码尤物193yw在线播放 | aaaaaaa欧美黄色大片 | 久久草在线免费 | 免费国产综合视频在线看 | 国产又粗又大又爽又免费 | www.一区二区| 国产精品日本亚洲777 | 中文字幕精品一区二区2021年 | 精品视频一二三区 | 五月婷六月婷婷 | 你懂的在线观看网址 | 日干夜操 | 亚洲插插 | 久热草在线| 五月婷婷在线观看视频 | 另类专区欧美 | 一道精品一区二区三区 | 欧美一级视频在线观看欧美 | 天天操天天插天天干 | 亚洲精品精品一区 | 美女被免网站在线视频 | 韩国电影天堂网 | 李丽莎尤物福利视频 | 人人做人人干 | 福利视频入口 | 深爱婷婷 | 日本免费一区二区老鸭窝 | 国产亚洲美女精品久久久久狼 | 日本成片免费高清 | 人人揉揉香蕉大免费不卡 | 欧美成人性色xxxxx视频大 | 天天爱天天干天天操 | 欧美性xxxxbbbb | 国产午夜毛片v一区二区三区 | 国产精品午夜高清在线观看 | 2022天天干| 色老久久精品偷偷鲁一区 | 视频二区在线观看 | 老师解胸罩喂我吃奶 |