日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

一文淺談軟件測試

上??匕?/a> ? 來源:上海控安 ? 作者:上??匕? ? 2023-01-30 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

版塊 |鑒源論壇 · 觀模

01軟件測試的“起源”和發(fā)展

從狹義的角度說,軟件測試是軟件開發(fā)中的一個流程,即通過把程序?qū)嶋H運行起來并試圖找出其中可能存在的錯誤。軟件錯誤一般被大家通俗地稱為“bug”。事實上,“bug”這個詞最早起源于Grace Hopper(她是美國海軍準(zhǔn)將、計算機(jī)科學(xué)家,也是世界上最早的一批程序員之一)的一個真實故事。1947年9月9日,Grace和同事們在檢查哈佛二號電腦(Harvard Mark II)總是出錯的原因,大家仔細(xì)檢查程序仍找不出錯誤,最后才發(fā)現(xiàn)原來是一只飛蛾意外飛入電腦內(nèi)部的繼電器而造成短路,他們把這只飛蛾移除后便成功讓電腦正常運作[1](下圖就是當(dāng)時事故的記錄和那只飛蛾)。從此以后,“bug”一詞就被拿來指稱軟件錯誤,“debug”一詞被拿來指稱調(diào)試查找軟件錯誤。

poYBAGPXh36AEkUPAAO-oi33GI0475.png

圖1事故記錄

后來,隨著人們對軟件錯誤的認(rèn)識逐步加深,軟件測試也經(jīng)歷了多個階段的發(fā)展。最初Grace所在的年代,人們只是為了找出軟件錯誤的原因(Debugging Period);后來1957年開始,人們強(qiáng)調(diào)需要設(shè)計軟件測試集來驗證/確保軟件符合設(shè)計時提出的需求規(guī)范和軟件功能(Demonstration Period);從1979年開始,人們開始主動地去尋找能觸發(fā)軟件錯誤的測試集(Destruction Period);再后來,軟件測試成為了保障軟件質(zhì)量的重要手段,成為軟件開發(fā)流程中一個必不可少的階段[2]。比如,下圖是經(jīng)典的軟件開發(fā)生命周期模型(SDLC)之一的瀑布模型(Waterfall Method),軟件測試是其中的重要一環(huán)。

pYYBAGPXh6SALvuMAABA7zL-9JM748.png

圖2瀑布模型

值得注意的是,在經(jīng)典的軟件開發(fā)生命周期模型中,如上圖的瀑布模型中,軟件測試是處于比較“靠右”的階段?,F(xiàn)如今,軟件測試越來越強(qiáng)調(diào)“左移”測試(Shift-Left Testing,最早由Larry Smith在2001年提出[3]),其主要目的是為了讓軟件測試盡早地介入到軟件需求分析、設(shè)計等階段,能盡早地在這些階段就能發(fā)現(xiàn)軟件缺陷(而不是在軟件實現(xiàn)結(jié)束后才介入測試),以期望進(jìn)一步降低軟件錯誤的修復(fù)成本。下圖(引用于[4])形象地給出了這種變化趨勢(下方左邊的圖給出了傳統(tǒng)開發(fā)生命周期模型中,軟件測試所在的位置和比重比較靠右;下方右邊的圖逐步演化為把測試階段左移,讓軟件測試階段更早地接入到軟件開發(fā)的早期階段,如需求、設(shè)計和開發(fā))。

poYBAGPXh8SAV8PRAAChCkSciWE747.png

圖3軟件測試變化趨勢

02軟件測試能做什么?不能做什么?

軟件測試是業(yè)界使用最普遍的質(zhì)量保障手段。因為,軟件測試在適應(yīng)性和可擴(kuò)展性方面比較強(qiáng),在特定的領(lǐng)域場景下,如果軟件測試方法和技術(shù)設(shè)計得當(dāng),能夠有效地找到潛在的軟件錯誤。但是,我們也需要注意,它也有其局限性,即軟件測試沒法保證找到被測對象程序中所有的軟件錯誤(“Testing shows the presence, not the absence of bugs.” By Edsger W. Dijkstra)。與之相對應(yīng)的,軟件形式化驗證技術(shù)能夠嚴(yán)格地證明某個軟件程序沒有軟件錯誤的存在(當(dāng)然,這句話也是在一些特定的假設(shè)下才成立)。

03找到軟件測試錯誤需要滿足什么條件?關(guān)鍵要素在哪里?

據(jù)統(tǒng)計,軟件測試占所有軟件開發(fā)時間 40~50%,占所有研發(fā)費用 50%以上。軟件測試作為一種有效的軟件質(zhì)量保障手段,其主要缺點在于測試成本很高(主要原因在于,一方面很多情況下測試過程離不開手工參與;在另外一方面,測試講究“大力出奇跡”,因為需要依靠大量的測試執(zhí)行去碰運氣)。因此,如何實現(xiàn)高效、自動化的軟件測試技術(shù)成為了業(yè)界和學(xué)界普遍關(guān)心的問題。然而,無論軟件測試應(yīng)用場景是什么,實現(xiàn)軟件測試的關(guān)鍵要素有兩個:(1)測試輸入;(2)測試預(yù)言(Test Oracle)。下面以一個具體的代碼片段例子(該代碼片段選自于[5])來解釋下。

poYBAGPXiByAR3_9AABHxWXZDNs833.png

圖4 代碼片段

上面這個程序是為了統(tǒng)計一個數(shù)組arr中元素0的個數(shù)。仔細(xì)看就會發(fā)現(xiàn),這里隱藏著一個軟件錯誤:for循環(huán)中的迭代起始條件(int i=1)是錯誤的,應(yīng)該是(int i=0)。這就是一個具體的軟件錯誤(英文中稱為Software Fault)。

針對這樣一段軟件代碼,一個可能的測試用例(Test Case)可以是:{arr=[2,7,0],expected_output=1}(這里arr=[2,7,0]稱為測試輸入,expected_output=1稱為預(yù)期輸出或測試預(yù)言)。軟件測試中,判斷一個測試輸入是否找到了一個軟件錯誤,最簡單的辦法就是判斷測試輸入在執(zhí)行后的實際輸出是否符合預(yù)期輸出。顯然,這個測試用例是無法找到該軟件錯誤的,因為實際輸出就是等于1,與預(yù)期輸出是一樣的。相反,一個能找到該錯誤的測試用例可以是:{arr=[0,2,7],expected_output=1}。因為這個測試用例的執(zhí)行后的實際輸出是0,與預(yù)期輸出是不相等的。

這里,我們可以理解下為什么后一個測試用例能找到這個軟件錯誤,而前一個測試用例卻不能找到錯誤。因為軟件測試找到一個軟件錯誤必須滿足的四個條件:

(1)Reachability:測試輸入受限必須到達(dá)Software Fault所在的代碼位置(如,這里的int i=1);

(2)Infection:這個測試輸入必須使得軟件程序的狀態(tài)出錯(如,這里i的值在第一次循環(huán)迭代的時候被錯誤地賦值為了1);

(3)Propagation:這個錯誤的程序狀態(tài)必須導(dǎo)致程序的最后輸出結(jié)果錯誤,或者最終的程序狀態(tài)錯誤(如,這里Count這個返回值為0,其實是錯誤的);

(4)Reveal:測試預(yù)言必須能否觀察到程序的最后輸出或者最終的程序狀態(tài)是錯誤的(如,這里通過對比Count的值和預(yù)期輸出值1是能判定程序出錯了)。

根據(jù)上面的這四個條件,我們很容易發(fā)現(xiàn),前一個測試用例只滿足了(1)和(2),沒有滿足(3)和(4);而后一個測試用例滿足了上述四個條件。因此,通過上面一個例子,可以看到,為了實現(xiàn)高效的軟件測試,最需要解決的是生成有效的測試輸入、以及寫出(甚至是自動生成)有效的測試預(yù)言。這也構(gòu)成了設(shè)計開發(fā)自動化軟件測試方法和技術(shù)的主要挑戰(zhàn)。

參考資料:

[1] Grace Hopper - Wikipedia. https://en.wikipedia.org/wiki/Grace_Hopper.

[2] History of software testing. https://davidmoremad.medium.com/history-of-software-testing-cfa461c4ae0a.

[3] Shift-Left Testing By Larry Smith. https://www.drdobbs.com/shift-left-testing/184404768.

[4] Shift Left Testing: What, Why & How To Shift Left. https://www.bmc.com/blogs/what-is-shift-left-shift-left-testing-explained.

[5] "Introduction to Software Testing", Paul Ammann and Jeff Offutt.


審核編輯黃宇

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

    關(guān)注

    9

    文章

    6429

    瀏覽量

    131700
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5364

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    RDMA設(shè)計54:如何搭建測試環(huán)境軟件平臺?

    本博主要交流設(shè)計思路,在本博客已給出相關(guān)博約130篇,希望對初學(xué)者有用。 注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計。 為了便于產(chǎn)生激勵及控制信號,同時便于測試過程的分析
    發(fā)表于 04-04 16:09

    AI輔助軟件測試:幾個關(guān)鍵路徑

    軟件測試是保障質(zhì)量的關(guān)鍵環(huán)節(jié),但測試用例設(shè)計耗時、覆蓋分析繁瑣、自動化腳本維護(hù)成本高等問題,直困擾著測試團(tuán)隊。大語言模型的出現(xiàn),為
    的頭像 發(fā)表于 03-23 15:34 ?159次閱讀

    淺談嵌入式設(shè)計

    本文深入探討嵌入式系統(tǒng)設(shè)計的完整流程與關(guān)鍵要點,從芯片選型、硬件架構(gòu)到軟件開發(fā),助您掌握打造穩(wěn)定高效智能設(shè)備的實戰(zhàn)方法論。
    的頭像 發(fā)表于 03-13 10:32 ?228次閱讀

    InverterTest 光儲逆變器測試軟件正式發(fā)布:200+測試工況,軟件集中管理

    本文導(dǎo)讀致遠(yuǎn)儀器正式推出InverterTest光儲逆變器測試軟件,支持依據(jù)GB/T34133-2023等標(biāo)準(zhǔn)開展相關(guān)測試應(yīng)用。軟件將數(shù)據(jù)管理、結(jié)論判讀、報告導(dǎo)出集中到
    的頭像 發(fā)表于 03-10 15:12 ?645次閱讀
    InverterTest 光儲逆變器<b class='flag-5'>測試</b><b class='flag-5'>軟件</b>正式發(fā)布:200+<b class='flag-5'>測試</b>工況,<b class='flag-5'>一</b>套<b class='flag-5'>軟件</b>集中管理

    宏展科技北京淺談JEDEC半導(dǎo)體可靠度測試與規(guī)范

    淺談JEDEC半導(dǎo)體可靠度測試與規(guī)范說明:JEDEC半導(dǎo)體業(yè)界的個標(biāo)準(zhǔn)化組織,制定固態(tài)電子方面的工業(yè)標(biāo)準(zhǔn)(半導(dǎo)體、記憶體),成立超過50年是個全球性的組織,他所制訂的標(biāo)準(zhǔn)是很多產(chǎn)業(yè)
    的頭像 發(fā)表于 02-02 13:46 ?347次閱讀
    宏展科技北京<b class='flag-5'>淺談</b>JEDEC半導(dǎo)體可靠度<b class='flag-5'>測試</b>與規(guī)范

    軟件測試工具深度解析?

    WinAMS是款面向嵌入式系統(tǒng)(特別是汽車電子、航空電子等安全關(guān)鍵領(lǐng)域)的專業(yè)軟件測試平臺。它集成了自動化測試、深度覆蓋率分析、精準(zhǔn)目標(biāo)機(jī)驗證及全流程合規(guī)支持等核心能力,旨在幫助工程
    的頭像 發(fā)表于 01-26 14:23 ?341次閱讀

    嵌入軟件單元測試的全面研究與實踐

    引言 嵌入軟件單元測試是確保嵌入式系統(tǒng)質(zhì)量和可靠性的關(guān)鍵環(huán)節(jié)。嵌入式系統(tǒng)廣泛應(yīng)用于汽車電子、工業(yè)控制、醫(yī)療設(shè)備等關(guān)鍵領(lǐng)域,其軟件直接操控硬件,任何微小的錯誤都可能導(dǎo)致嚴(yán)重后果。單元測試
    的頭像 發(fā)表于 12-01 14:31 ?894次閱讀

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計46:選擇測試環(huán)境軟件平臺

    。 為方便測試激勵控制和測試過程分析, 使用與 Vivado2019.1軟件版本配套的SDK開發(fā)套件進(jìn)行軟件測試平臺的搭建。 執(zhí)行主要功
    發(fā)表于 11-17 07:57

    復(fù)雜電磁環(huán)境構(gòu)建與測試軟件系統(tǒng)解析(精簡版)

    復(fù)雜電磁環(huán)境構(gòu)建與測試軟件系統(tǒng)解析(精簡版)
    的頭像 發(fā)表于 09-15 21:05 ?895次閱讀
    復(fù)雜電磁環(huán)境構(gòu)建與<b class='flag-5'>測試</b><b class='flag-5'>軟件</b>系統(tǒng)解析(精簡版)

    邊聊安全 | 軟件單元測試的設(shè)計方法

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智庫”軟件單元測試的設(shè)計方法寫在前面:軟件單元測試的設(shè)計是個系統(tǒng)化的過程,旨在驗證代碼的最小可
    的頭像 發(fā)表于 09-05 16:18 ?9913次閱讀
    邊聊安全 | <b class='flag-5'>軟件</b>單元<b class='flag-5'>測試</b>的設(shè)計方法

    汽車軟件安全測試中的痛點與Bugspot解決方案

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智庫”汽車軟件安全測試中的痛點與Bugspot解決方案日前在汽車行業(yè),軟件正在重新定義駕駛體驗。從自動駕駛到智能座艙,軟件的復(fù)雜性和重要性日
    的頭像 發(fā)表于 09-05 16:17 ?940次閱讀
    汽車<b class='flag-5'>軟件</b>安全<b class='flag-5'>測試</b>中的痛點與Bugspot解決方案

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

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

    國產(chǎn)電源模塊測試軟件功能應(yīng)用全面解析

    電源模塊作為電子設(shè)備的核心器件,其性能的優(yōu)劣關(guān)系著整個設(shè)備的質(zhì)量。為了確保電源產(chǎn)品能夠滿足不斷提升的技術(shù)要求,穩(wěn)定、高效的電源測試系統(tǒng)成為了電源行業(yè)的關(guān)鍵需求。本文將對納米軟件電源模塊測試系統(tǒng)從功能
    的頭像 發(fā)表于 08-01 11:51 ?1158次閱讀
    國產(chǎn)電源模塊<b class='flag-5'>測試</b><b class='flag-5'>軟件</b>功能應(yīng)用全面解析

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

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

    電磁兼容與信息安全測試系統(tǒng)平臺軟件

    電磁兼容與信息安全測試系統(tǒng)平臺軟件
    的頭像 發(fā)表于 05-06 14:50 ?935次閱讀
    電磁兼容與信息安全<b class='flag-5'>測試</b>系統(tǒng)平臺<b class='flag-5'>軟件</b>
    平阳县| 平阴县| 保山市| 平邑县| 沙坪坝区| 宝山区| 扶沟县| 昌邑市| 景德镇市| 屏东市| 远安县| 洪雅县| 宜州市| 潜江市| 盘山县| 白沙| 观塘区| 临安市| 双柏县| 合肥市| 南皮县| 浠水县| 平山县| 土默特左旗| 房产| 五峰| 福贡县| 塔河县| 盈江县| 桑植县| 甘洛县| 湛江市| 龙门县| 绥化市| 宁南县| 额尔古纳市| 融水| 建昌县| 灵璧县| 离岛区| 平乡县|