衡阳派盒市场营销有限公司

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

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

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

一文淺談軟件測(cè)試

上海控安 ? 來源:上海控安 ? 作者:上海控安 ? 2023-01-30 17:07 ? 次閱讀

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

版塊 |鑒源論壇 · 觀模

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

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

poYBAGPXh36AEkUPAAO-oi33GI0475.png

圖1事故記錄

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

pYYBAGPXh6SALvuMAABA7zL-9JM748.png

圖2瀑布模型

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

poYBAGPXh8SAV8PRAAChCkSciWE747.png

圖3軟件測(cè)試變化趨勢(shì)

02軟件測(cè)試能做什么?不能做什么?

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

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

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

poYBAGPXiByAR3_9AABHxWXZDNs833.png

圖4 代碼片段

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

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

這里,我們可以理解下為什么后一個(gè)測(cè)試用例能找到這個(gè)軟件錯(cuò)誤,而前一個(gè)測(cè)試用例卻不能找到錯(cuò)誤。因?yàn)檐浖y(cè)試找到一個(gè)軟件錯(cuò)誤必須滿足的四個(gè)條件:

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

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

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

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

根據(jù)上面的這四個(gè)條件,我們很容易發(fā)現(xiàn),前一個(gè)測(cè)試用例只滿足了(1)和(2),沒有滿足(3)和(4);而后一個(gè)測(cè)試用例滿足了上述四個(gè)條件。因此,通過上面一個(gè)例子,可以看到,為了實(shí)現(xiàn)高效的軟件測(cè)試,最需要解決的是生成有效的測(cè)試輸入、以及寫出(甚至是自動(dòng)生成)有效的測(cè)試預(yù)言。這也構(gòu)成了設(shè)計(jì)開發(fā)自動(dòng)化軟件測(cè)試方法和技術(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    5382

    瀏覽量

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

    關(guān)注

    69

    文章

    5013

    瀏覽量

    88084
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何利用emulation提升軟件測(cè)試效率

    隨著技術(shù)的發(fā)展,軟件變得越來越復(fù)雜,對(duì)測(cè)試的要求也越來越高。傳統(tǒng)的測(cè)試方法往往需要大量的硬件資源和時(shí)間,而emulation技術(shù)提供了種更高效、成本更低的
    的頭像 發(fā)表于 12-05 15:51 ?225次閱讀

    在HiL環(huán)境下 基于CANoe的軟件測(cè)試解決方案#嵌入式軟件測(cè)試技術(shù) #VTHiL #CANoe

    軟件測(cè)試
    北匯信息POLELINK
    發(fā)布于 :2024年08月12日 18:30:31

    FLEXBENCH通用測(cè)試軟件平臺(tái)

    1.簡(jiǎn)介 FlexBench是锘華儀器針對(duì)航空航天等領(lǐng)域的測(cè)試需求研制開發(fā)的通用測(cè)試軟件平臺(tái)。 FlexBench為用戶提供海量接口,支持用戶自主定制測(cè)試任務(wù),
    的頭像 發(fā)表于 08-06 14:04 ?321次閱讀
    FLEXBENCH通用<b class='flag-5'>測(cè)試</b><b class='flag-5'>軟件</b>平臺(tái)

    軟件測(cè)試六大問 全面而深入的軟件測(cè)試行業(yè)解疑

    隨著科技的進(jìn)步和大數(shù)據(jù)時(shí)代的到來,?軟件測(cè)試面臨著前所未有的挑戰(zhàn)和機(jī)遇。?在這篇文章中我們將深入討論軟件測(cè)試行業(yè)的發(fā)展前景、行業(yè)趨勢(shì)、薪資水平等,為讀者提供
    的頭像 發(fā)表于 07-30 10:28 ?334次閱讀

    軟件接口自動(dòng)化測(cè)試,使用軟件工具+工裝治具測(cè)試

    軟件接口自動(dòng)化測(cè)試結(jié)合軟件工具與工裝治具的應(yīng)用,極大地提升了測(cè)試的效率和質(zhì)量,是現(xiàn)代軟件開發(fā)不可或缺的
    的頭像 發(fā)表于 06-07 15:59 ?1373次閱讀

    同星智能榮獲沙利認(rèn)證“中國(guó)市場(chǎng)汽車軟件工具鏈客戶覆蓋度第

    2024年4月,同星智能獲得由全球增長(zhǎng)咨詢公司弗若斯特沙利(Frost&Sullivan,簡(jiǎn)稱“沙利”)授予的“中國(guó)市場(chǎng)汽車軟件工具鏈客戶覆蓋度第”市場(chǎng)地位確認(rèn)證書。沙利
    的頭像 發(fā)表于 05-18 08:21 ?455次閱讀
    同星智能榮獲沙利<b class='flag-5'>文</b>認(rèn)證“中國(guó)市場(chǎng)汽車<b class='flag-5'>軟件</b>工具鏈客戶覆蓋度第<b class='flag-5'>一</b>”

    仿真測(cè)試軟件測(cè)試的區(qū)別

    在當(dāng)今軟件開發(fā)和驗(yàn)證的領(lǐng)域中,測(cè)試是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。而在測(cè)試的眾多方法中,仿真測(cè)試軟件
    的頭像 發(fā)表于 05-17 14:33 ?996次閱讀

    鑒源論壇丨軌交軟件測(cè)試技術(shù)詳述

    要求 ·對(duì)軟件集成測(cè)試進(jìn)行靜態(tài)測(cè)試應(yīng)先于動(dòng)態(tài)測(cè)試; · 集成過程是動(dòng)態(tài)進(jìn)行的,在測(cè)試計(jì)劃中須明確集成策略; ·建立集成
    的頭像 發(fā)表于 05-14 16:38 ?381次閱讀
    鑒源論壇丨軌交<b class='flag-5'>軟件</b><b class='flag-5'>測(cè)試</b>技術(shù)詳述

    嵌入軟件單元測(cè)試工具的作用

    嵌入軟件單元測(cè)試工具是現(xiàn)代軟件開發(fā)過程中不可或缺的環(huán)。它的作用在于幫助開發(fā)人員對(duì)軟件中的各個(gè)單元進(jìn)行測(cè)
    的頭像 發(fā)表于 04-23 15:31 ?470次閱讀
    嵌入<b class='flag-5'>軟件</b>單元<b class='flag-5'>測(cè)試</b>工具的作用

    了解整車EMC測(cè)試

    敏感度(EMS),是產(chǎn)品質(zhì)量最重要的指標(biāo)之。EMC測(cè)試方法EMC測(cè)試主要包括輻射測(cè)試和傳導(dǎo)測(cè)試兩種方法。EMC
    的頭像 發(fā)表于 04-12 08:37 ?1472次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>了解整車EMC<b class='flag-5'>測(cè)試</b>

    了解工業(yè)電源測(cè)試項(xiàng)目與測(cè)試標(biāo)準(zhǔn)

    工業(yè)電源測(cè)試系統(tǒng)用于檢測(cè)工業(yè)電源的各項(xiàng)測(cè)試項(xiàng)目,為電源測(cè)試提供體化測(cè)試解決方案,自動(dòng)分析測(cè)試數(shù)
    的頭像 發(fā)表于 04-01 14:35 ?857次閱讀

    如何使用EMC測(cè)試軟件執(zhí)行輻射抗擾度測(cè)試?(三)軟件檢查及手動(dòng)模式

    、前言 之前的文章為大家介紹了使用EMC測(cè)試軟件執(zhí)行輻射抗擾度測(cè)試測(cè)試方法、頻率變化模式測(cè)試
    的頭像 發(fā)表于 03-18 15:39 ?687次閱讀
    如何使用EMC<b class='flag-5'>測(cè)試</b><b class='flag-5'>軟件</b>執(zhí)行輻射抗擾度<b class='flag-5'>測(cè)試</b>?(三)<b class='flag-5'>軟件</b>檢查及手動(dòng)模式

    如何使用EMC測(cè)試軟件執(zhí)行輻射抗擾度測(cè)試?(二)測(cè)試、校準(zhǔn)方法及調(diào)制

    ? ? 、前言 上篇文章為大家介紹了使用EMC測(cè)試軟件執(zhí)行輻射抗擾度測(cè)試測(cè)試方法。本章將介
    的頭像 發(fā)表于 03-14 17:33 ?1465次閱讀
    如何使用EMC<b class='flag-5'>測(cè)試</b><b class='flag-5'>軟件</b>執(zhí)行輻射抗擾度<b class='flag-5'>測(cè)試</b>?(二)<b class='flag-5'>測(cè)試</b>、校準(zhǔn)方法及調(diào)制

    如何使用EMC測(cè)試軟件執(zhí)行輻射抗擾度測(cè)試?(測(cè)試方法

    、前言 輻射抗擾度測(cè)試是對(duì)對(duì)講機(jī)、移動(dòng)電話、便攜式電話和廣播發(fā)射機(jī)等強(qiáng)發(fā)射機(jī)產(chǎn)生的射頻場(chǎng)的模擬。 二、測(cè)試方法 在輻射抗擾度測(cè)試期間,測(cè)試
    的頭像 發(fā)表于 03-11 15:03 ?1649次閱讀
    如何使用EMC<b class='flag-5'>測(cè)試</b><b class='flag-5'>軟件</b>執(zhí)行輻射抗擾度<b class='flag-5'>測(cè)試</b>?(<b class='flag-5'>一</b>)<b class='flag-5'>測(cè)試</b>方法

    pcb應(yīng)變測(cè)試有多重要?了解!

    pcb應(yīng)變測(cè)試有多重要?了解!
    的頭像 發(fā)表于 02-24 16:26 ?1181次閱讀
    娱乐城源码| 百家乐官网倍投工具| 大发888 加速器| 百家乐开户送彩网址| 五河县| 闲和庄百家乐娱乐场| 买百家乐官网程序| 百家乐真钱游戏| 百家乐路的看法| 金都百家乐官网现金网| 百家乐作| 百家乐官网德州| 百家乐官网压分规律| 威尼斯人娱乐场官网48008 | 狮威百家乐官网娱乐城| 五河县| 大发888体育网| 高级百家乐出千工具| 娱网百家乐官网补丁| 易胜博网址| 百家乐娱乐平台开户| 百家乐官网免| 百家乐官网视频麻将| 大发888娱乐捕鱼游戏| 查看百家乐赌博| 百家乐官网永利娱乐场开户注册| 潮安县| 大发888 dafa888 gzsums| qq百家乐网络平台| 百家乐官网正品地址| BET365官方网| 大发888为什么进不去| 网上百家乐必赢玩| 百家乐9点| 百家乐任你博娱乐平台| 威尼斯人娱乐场it| 百家乐官网大| 百家乐官网翻天腾讯视频| 钱柜娱乐城怎么样| 赌博百家乐的玩法技巧和规则| 百家乐代理占成|