91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

基于軟件性質(zhì)的自動化測試技術

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

掃碼添加小助手

加入工程師交流群

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

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

版塊 |鑒源論壇 · 觀模

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

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

wKgZomUjuSWAGoorAAKUoKYDP1Y516.png

圖1 自動化測試技術

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

01

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

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

wKgaomUjuU-AU6GoAAAUwtiQVa0937.png

圖2 待測程序

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

wKgaomUjuVyAbrcGAAClm10PBBw400.png

圖3 單元測試用例

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

wKgZomUjuWyAHLxWAABDFaKNQWA376.png

圖4 Property-based testing測試用例

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

02

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

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

wKgaomUjuYWAMRkUAABHdxmEhQI295.png

圖5 property-based testing模板

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

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

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

03

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

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

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

wKgaomUjuZaAORzkAADeLKYA_ls667.png

圖 6 對稱性

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

wKgaomUjuaeAKCobAAAemNZEly4838.png

圖 7 交換性

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

wKgaomUjubaATzQ5AAAMb5ZJBrk629.png

圖 8 不變性

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

wKgZomUjucWABdMnAABFhQK62CU626.png

圖 9 冪等性

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

wKgaomUjudOAUO06AAAL5CmtWoM932.png

圖 10 推導性

04

總結

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

審核編輯 黃宇

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

    關注

    0

    文章

    268

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    吉時利源表2450賦能自動化測試的智能精密儀器

    的設計,為自動化測試系統(tǒng)提供了革命性的解決方案。本文將深入探討2450的技術特性、自動化測試應用場景及其在提升
    的頭像 發(fā)表于 12-26 17:50 ?565次閱讀
    吉時利源表2450賦能<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的智能精密儀器

    自動化測試的「千里眼」:當RTSM遠程控制遇上自動化,測試效率直接拉滿!

    自動化痛點】自動化測試的“黑箱困境”:你真的敢說“完全放心”? 凌晨2點,測試工程師小李盯著電腦屏幕上的自動化腳本進度條——第17步卡住了
    的頭像 發(fā)表于 12-11 11:26 ?389次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的「千里眼」:當RTSM遠程控制遇上<b class='flag-5'>自動化</b>,<b class='flag-5'>測試</b>效率直接拉滿!

    CI/CT自動化測試解決方案

    北匯信息可以提供Jenkins、Gitlab Runner CI和自研平臺等的CI/CT整體解決方案,通過CI/CT自動化測試執(zhí)行、測試策略定制、測試任務
    的頭像 發(fā)表于 11-12 16:01 ?1440次閱讀
    CI/CT<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>解決方案

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發(fā)愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分
    的頭像 發(fā)表于 09-22 17:52 ?844次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零代碼<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺,15分鐘搭建<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案

    電源模塊的短路保護如何通過自動化測試軟件完成測試

    在當今電力電子領域,電源模塊的可靠性至關重要,短路保護作為其關鍵特性,需通過精確的自動化測試軟件進行驗證。本文將整理如何借助自動化測試
    的頭像 發(fā)表于 09-03 19:10 ?840次閱讀
    電源模塊的短路保護如何通過<b class='flag-5'>自動化</b><b class='flag-5'>測試</b><b class='flag-5'>軟件</b>完成<b class='flag-5'>測試</b>

    EasyGo TestSim:新能源電力系統(tǒng)自動化測試的利器

    現(xiàn)代電力系統(tǒng)對測試精度和效率的高要求。EasyGo TestSim 仿真自動化測試軟件的出現(xiàn),為這一難題提供了一個完美的解決方案。 什么是 EasyGo TestSim? EasyGo
    發(fā)表于 09-03 18:35

    新能源電力系統(tǒng)自動化測試利器——EasyGo TestSim

    時,仍需手動提取波形、計算關鍵參數(shù)并反復調(diào)試。為此,我們推出EasyGoTestSim仿真自動化測試軟件,助力高效測試。一、EasyGoTestSim仿真
    的頭像 發(fā)表于 09-03 17:05 ?1505次閱讀
    新能源電力系統(tǒng)<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>利器——EasyGo TestSim

    除了LabVIEW還有哪些自動化測試軟件

    NI 開發(fā)的 LabVIEW 軟件在工業(yè)控制領域中一直占有舉足輕重的地位,其市場占有率在一眾平臺中也是領先的,那么除了 LabVIEW 拿有哪些自動化測試軟件?本文將介紹一些
    的頭像 發(fā)表于 07-30 17:18 ?1051次閱讀
    除了LabVIEW還有哪些<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的<b class='flag-5'>軟件</b>?

    自動化測試平臺中TestCenter和ATECLOUD有哪些差異?

    TestCenter和ATECLOUD雖然都是自動化測試平臺,但兩者在試用領域、技術架構、功能特性等方面具有很大的差異性,兩者的面向客戶也有所不同。本文將簡單分析兩個平臺的特點和差異
    的頭像 發(fā)表于 07-25 09:54 ?700次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺中TestCenter和ATECLOUD有哪些差異?

    自動化測試平臺ATECLOUD推出AI算法功能

    作為納米軟件自主研發(fā)的自動化測試平臺,ATECLOUD 始終致力于為用戶提供高效優(yōu)質(zhì)的測試解決方案。面對5G、AI等前沿技術的迭代發(fā)展,平臺
    的頭像 發(fā)表于 07-22 16:10 ?806次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺ATECLOUD推出AI算法功能

    車機交互測試自動化實現(xiàn)路徑與案例分析

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

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

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

    APP自動化測試框架

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

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

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

    矢量信號發(fā)生器在工業(yè)自動化測試中的應用場景

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