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

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

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

測(cè)試用例質(zhì)量的重要性

經(jīng)緯恒潤(rùn) ? 2021-09-03 15:13 ? 次閱讀

介紹

在進(jìn)行測(cè)試時(shí),通常會(huì)花很多精力選擇“正確”的測(cè)試工具。這其實(shí)只是為了實(shí)現(xiàn)次要目標(biāo)。當(dāng)然,一個(gè)適合開發(fā)環(huán)境、項(xiàng)目和流程的工具是重要的。然而,對(duì)于良好測(cè)試而言,最重要的是測(cè)試用例的質(zhì)量。只有“好”的測(cè)試用例才會(huì)發(fā)現(xiàn)軟件存在缺陷。

一個(gè)簡(jiǎn)單的例子

如下是對(duì)一個(gè)簡(jiǎn)單測(cè)試對(duì)象的說明:

“start”和“l(fā)ength”定義了“value”的取值范圍。被測(cè)函數(shù)用來確定給定值是否在定義的范圍內(nèi)。規(guī)定范圍的上界不在范圍內(nèi)。所有數(shù)據(jù)類型都是整數(shù)。

如下圖所示的三個(gè)測(cè)試用例都通過了測(cè)試,并且達(dá)到了100%的MC/DC覆蓋度。

圖1 這三個(gè)測(cè)試用例通過并達(dá)到了100%的覆蓋率

圖1測(cè)試用例都通過并已經(jīng)達(dá)到了100%的覆蓋度,但沒有對(duì)所有的需求進(jìn)行測(cè)試,即沒有使用邊界值進(jìn)行測(cè)試。

邊界值,最小/最大值,極端值,違規(guī)值

? 邊界值

需要多少測(cè)試用例(以及哪些測(cè)試數(shù)據(jù))才能充分對(duì)邊界值進(jìn)行測(cè)試?下面使用一個(gè)“輸入值是否小于5”的函數(shù)來研究這個(gè)問題。

圖2 可能的實(shí)現(xiàn)以及哪些測(cè)試輸入能檢測(cè)缺陷

圖2表格第一列我“輸入值是否小于5”的可能缺陷(即錯(cuò)誤實(shí)現(xiàn))。其中(i!= 5)和(i <> 5)均為“不相等”,歸屬不同編程語言(“!=”屬于C / C ++,Java;“<>” 屬于Pascal,PHP,SQL,Excel)。

表2中第二列為缺陷的可能性組合。缺陷的可能性被認(rèn)為與關(guān)系式中錯(cuò)誤字符的數(shù)量和“外觀”上的差異有關(guān)(從正確的(i <5)需要更多的改變才能將正確的(i <5)變換為不正確的(i> = 5),也更容易在視覺上發(fā)現(xiàn))。

表2中后三列為輸入值為4、5、6時(shí)的測(cè)試結(jié)果,粗體和紅色陰影表示測(cè)試失敗。輸入值4和5未檢測(cè)到(i!= 5)和(i <> 5),輸入值6(即第三測(cè)試用例)檢測(cè)到了。(i <> 5)的實(shí)現(xiàn)方式更有可能發(fā)生,但使用“<>”運(yùn)算符的編程語言對(duì)于嵌入式系統(tǒng)并不常見。

(i == 4)無輸入值檢測(cè)到,需要額外輸入值檢測(cè)缺陷,需要四個(gè)測(cè)試用例(“內(nèi)部”兩個(gè)值和“外部”兩個(gè)值)。這是René Tuinhout提出的黑盒邊界值分析(B3VA)?!靶∮?”的值范圍有更低邊界且可作輸入值,則不需要額外測(cè)試,下邊界可以檢測(cè)(i == 4)。

結(jié)論:嵌入式系統(tǒng)(使用“!=”作為關(guān)系運(yùn)算符),進(jìn)行代碼審查且目標(biāo)是測(cè)試用例的數(shù)量較少,僅使用兩個(gè)測(cè)試用例就可以。但為了檢測(cè)一些缺陷,有時(shí)需要四個(gè)測(cè)試用例。

? 最小/最大值

將給定數(shù)據(jù)類型的最大和最?。醋钬?fù))可能的輸入值作為邊界值的特殊情況。

圖3 函數(shù)abs_short()存在一個(gè)在使用最大/最小值輸入時(shí)才會(huì)發(fā)現(xiàn)的問題

圖3函數(shù)abs_short()在輸入值為-5,0,5時(shí),分別正確返回5,0,5,實(shí)現(xiàn)了100%的代碼覆蓋率。但輸入值是-32768時(shí)(帶符號(hào)的16位整數(shù)的最?。ㄗ钬?fù))值),預(yù)期結(jié)果為+32768。無法在給定的整數(shù)范圍內(nèi)表示,返回值為-32768,不是預(yù)期值。(背景:-32768 = 0x8000.0x8000-1 = 0x7FFF。反轉(zhuǎn)值為0x8000,與開始時(shí)的值相同。)

? 極端值

極端(或特殊)輸入值不是直接取邊界或最小/最大值,是另一種特殊值。

圖4minimum()函數(shù)存在編程缺陷

圖4是最小值函數(shù)。三個(gè)(無符號(hào))整數(shù)(a,b和c)為輸入,返回輸入的最小值。

圖5:用于檢測(cè)最小值函數(shù)缺陷的測(cè)試用例

圖5,為該函數(shù)運(yùn)行通過的測(cè)試用例。檢查每個(gè)位置是否能正確檢測(cè)到最小值(3),100%代碼覆蓋率,但沒有極端或特殊的輸入。對(duì)此函數(shù),特殊的輸入可以是三個(gè)相同正值,如輸入(3,3,3),結(jié)果為0(不是預(yù)期結(jié)果3),表示最小值功能的實(shí)現(xiàn)存在缺陷。

? 違規(guī)值

圖3函數(shù)“所有數(shù)據(jù)類型都是整數(shù)”。適用length的取值范圍,故長(zhǎng)度可能是負(fù)的。輸入5,-2為長(zhǎng)度,查看4是否被認(rèn)為在范圍之內(nèi)。用(可能的)無效輸入構(gòu)建測(cè)試用例。

ISO26262中的建議

ISO 26262:2011在第6部分第9節(jié)中列出軟件單元測(cè)試的測(cè)試用例的設(shè)計(jì)方法。

圖6:ISO26262中設(shè)計(jì)測(cè)試用例的方法

圖6為建議取決于汽車安全完整性等級(jí)(ASIL)。ASIL的范圍從A到D,D最高級(jí)別?!皬?qiáng)烈推薦”雙加號(hào)(“++”); “推薦”單個(gè)加號(hào)(“+”)。1a,1b,1c,...是替代條目; 1,2,3,...是連續(xù)的條目。替代條目,應(yīng)根據(jù)ASIL應(yīng)用適當(dāng)?shù)姆椒ńM合;連續(xù)條目,應(yīng)按照ASIL進(jìn)行應(yīng)用。1a要求軟件單元測(cè)試的測(cè)試用例來自需求;1b要求使用等價(jià)類的生成和分析來導(dǎo)出測(cè)試用例;1c要求分析邊界值以導(dǎo)出測(cè)試用例。方法1a,1b和1c已在本文前面的部分中討論過。1d要求錯(cuò)誤猜測(cè)來導(dǎo)出測(cè)試用例。

? 錯(cuò)誤猜測(cè)

錯(cuò)誤猜測(cè)需要經(jīng)驗(yàn)豐富的測(cè)試人員,從過往的經(jīng)驗(yàn)中找到敏感的測(cè)試用例。它是一種非系統(tǒng)的方法。例如,被測(cè)系統(tǒng)有兩個(gè)按鈕,假設(shè)一次只按下其中一個(gè)按鈕:如果同時(shí)按下兩個(gè)按鈕會(huì)發(fā)生什么?這是錯(cuò)誤猜測(cè)的示例。

可選方案

本節(jié)討論設(shè)計(jì)測(cè)試用例的其他可選方法。

? 來自源代碼的測(cè)試用例

使用工具從源代碼自動(dòng)生成測(cè)試用例。一些開源和商業(yè)工具都實(shí)現(xiàn)了一些技術(shù)方法(例如遺傳算法或回溯),可以利用生成測(cè)試用例。源代碼生成測(cè)試用例要注意:

? 遺漏:將無法發(fā)現(xiàn)代碼中的遺漏。如要求“第一個(gè)參數(shù)等于第二個(gè)參數(shù),則返回錯(cuò)誤”若缺少這項(xiàng)檢查的實(shí)現(xiàn):由源代碼生成的測(cè)試用例不會(huì)檢測(cè)到此問題。

? 準(zhǔn)確度:無法從代碼中判斷它是否正確。如無法判斷(i <5)或(i <= 5)是否實(shí)現(xiàn)了代碼的預(yù)期行為。

可以讓工具生成測(cè)試用例并將其和需求進(jìn)行比對(duì),如果不符合要求再對(duì)其進(jìn)行相應(yīng)的拓展或改變。近期有研究人員對(duì)此進(jìn)行了研究,其主要觀點(diǎn)如下:

? 自動(dòng)生成的測(cè)試套件比人工創(chuàng)建的測(cè)試套件實(shí)現(xiàn)了更高的代碼覆蓋率。

? 使用自動(dòng)生成的測(cè)試套件無法檢測(cè)到更多缺陷。

? 自動(dòng)生成的測(cè)試用例會(huì)對(duì)捕獲預(yù)期的類行為產(chǎn)生負(fù)面影響。

這項(xiàng)研究表明,自動(dòng)化測(cè)試用例生成沒有為測(cè)試帶來優(yōu)勢(shì),但它也沒有缺點(diǎn)。雖有很多討論的研究條件(編程語言,編程技巧等),但結(jié)果依然是令人驚訝的。

變異測(cè)試(Mutation Testing)

評(píng)定測(cè)試用例質(zhì)量的一種可行方法是變異測(cè)試(在IEC 61508標(biāo)準(zhǔn)中也被稱為“錯(cuò)誤播種”(error seeding))。有運(yùn)行通過的測(cè)試用例時(shí),可以“變異”代碼。如,將判斷(i<5)改成(i<=5),在計(jì)算結(jié)果上加1,把“&&”改為“||”,注釋掉部分代碼等。代碼進(jìn)行變異之后,重新運(yùn)行測(cè)試用例。若所有測(cè)試用例能夠通過,測(cè)試用例質(zhì)量就比較低。至少一項(xiàng)測(cè)試用例應(yīng)該會(huì)由于進(jìn)行了變異而無法驗(yàn)證通過。

小結(jié)

100%的代碼覆蓋率并不意味著“好”的測(cè)試用例。然而,在執(zhí)行測(cè)試的過程中為了能夠檢測(cè)出軟件的缺陷,需要高質(zhì)量的用例。這項(xiàng)任務(wù)需要仔細(xì)而富有經(jīng)驗(yàn)的人力工作才能達(dá)成,對(duì)于自動(dòng)化生成的測(cè)試用例,應(yīng)該持保留態(tài)度。

聲明:本文內(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)推薦

    PCB離子污染度測(cè)試重要性

    PCB離子污染度的重要性在電子制造業(yè)中,PCB(印刷電路板)的離子污染度測(cè)試是保障產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。離子污染度指的是PCB表面殘留的帶電離子污染物,這些污染物主要來源于焊接助劑、化學(xué)清洗劑、濕度
    的頭像 發(fā)表于 12-13 00:15 ?293次閱讀
    PCB離子污染度<b class='flag-5'>測(cè)試</b>的<b class='flag-5'>重要性</b>

    汽車軟件單元測(cè)試重要性

    測(cè)試不充分密切相關(guān),這引發(fā)了社會(huì)各界對(duì)汽車軟件健壯重要性進(jìn)行深入思考。本文將探討汽車軟件的測(cè)試,尤其是單元測(cè)試
    的頭像 發(fā)表于 11-29 10:57 ?167次閱讀

    是德科技助力三星電子驗(yàn)證FiRa 2.0安全測(cè)距測(cè)試用

    是德科技(Keysight Technologies,Inc.)成功助力三星電子,在其Exynos Connect U100芯片組上驗(yàn)證了FiRa 2.0安全測(cè)試用。此次驗(yàn)證得益于是德科技提供的超寬帶 (UWB)測(cè)試解決方案,
    的頭像 發(fā)表于 11-18 10:08 ?188次閱讀

    端到端測(cè)試用怎么寫

    測(cè)試方法,旨在驗(yàn)證整個(gè)應(yīng)用程序從前端到后端的流程是否能夠按照預(yù)期工作。它涉及多個(gè)系統(tǒng)組件和接口的交互,確保業(yè)務(wù)流程的完整和正確。 二、編寫端到端測(cè)試用
    的頭像 發(fā)表于 09-20 10:29 ?455次閱讀

    絕緣電阻的重要性及可靠測(cè)試

    絕緣電阻(Insulation Resistance,簡(jiǎn)稱IR)是指物體在特定電壓下能夠抵抗電流通過的能力。晶振的絕緣電阻是指各個(gè)引出端之間或引出端與晶振外殼之間的電阻。 ? 絕緣電阻的重要性 絕緣
    的頭像 發(fā)表于 06-14 11:12 ?762次閱讀

    一次注射針剛性測(cè)試儀作用與重要性

    文章由濟(jì)南三泉智能科技有限公司提供一次注射針剛性測(cè)試儀是用于評(píng)估一次注射針剛性性能的專用設(shè)備。一、作用與重要性確保注射針質(zhì)量:注射針的剛
    的頭像 發(fā)表于 06-04 15:32 ?330次閱讀
    一次<b class='flag-5'>性</b>注射針剛性<b class='flag-5'>測(cè)試</b>儀作用與<b class='flag-5'>重要性</b>

    求助,ADC接地的重要性?

    ADC接地的重要性
    發(fā)表于 06-04 07:56

    LitePoint與三星電子合作支持FiRa 2.0物理層安全測(cè)距測(cè)試用

    先進(jìn)無線測(cè)試解決方案提供商LitePoint與三星電子宣布緊密合作,支持FiRa 2.0物理層(PHY)一致測(cè)試規(guī)范內(nèi)定義的新安全測(cè)試用
    的頭像 發(fā)表于 05-16 11:26 ?571次閱讀

    硬件測(cè)試服務(wù)項(xiàng)目的重要性和作用

    服務(wù)項(xiàng)目的定義與重要性 硬件測(cè)試服務(wù)項(xiàng)目是對(duì)硬件設(shè)備(如結(jié)構(gòu)、PCBA、關(guān)鍵部件等)進(jìn)行差錯(cuò)檢查的過程,旨在保證產(chǎn)品的質(zhì)量和性能。在硬件產(chǎn)品開發(fā)過程中,測(cè)試是不可或缺的一環(huán),它能夠幫助
    的頭像 發(fā)表于 03-28 09:54 ?759次閱讀
    硬件<b class='flag-5'>測(cè)試</b>服務(wù)項(xiàng)目的<b class='flag-5'>重要性</b>和作用

    集成芯片的重要性和必要

    集成芯片在現(xiàn)代科技和工業(yè)中占據(jù)著至關(guān)重要的地位,其重要性和必要主要體現(xiàn)在以下幾個(gè)方面。
    的頭像 發(fā)表于 03-18 15:17 ?1152次閱讀

    PTCRB的測(cè)試用類認(rèn)證等級(jí)分類介紹

    PTCRB的測(cè)試用類認(rèn)證等級(jí)CategoryA/B/EA類項(xiàng):測(cè)試用在商用系統(tǒng)上經(jīng)過完全驗(yàn)證;必測(cè)項(xiàng)且需要結(jié)果為PASSB類項(xiàng):測(cè)試用
    的頭像 發(fā)表于 03-14 16:46 ?403次閱讀
    PTCRB的<b class='flag-5'>測(cè)試用</b>類認(rèn)證等級(jí)分類介紹

    密封測(cè)試儀的應(yīng)用與重要性

    隨著科學(xué)技術(shù)的發(fā)展,密封測(cè)試儀在各個(gè)領(lǐng)域的應(yīng)用越來越廣泛,尤其是在制造業(yè)、食品藥品行業(yè)、汽車行業(yè)、電子產(chǎn)品等領(lǐng)域。密封檢測(cè)是保證產(chǎn)品質(zhì)量和安全的關(guān)鍵。本文將深入探討其主要應(yīng)用領(lǐng)域及其在保證產(chǎn)品
    的頭像 發(fā)表于 03-07 11:05 ?440次閱讀
    密封<b class='flag-5'>測(cè)試</b>儀的應(yīng)用與<b class='flag-5'>重要性</b>

    電路板設(shè)計(jì):測(cè)試點(diǎn)的重要性

    電路板設(shè)計(jì):測(cè)試點(diǎn)的重要性 對(duì)學(xué)電子的人來說,在電路板上設(shè)置測(cè)試點(diǎn)(test point)是再自然不過的事了。 有多少人沒聽說測(cè)試點(diǎn)?知道測(cè)試
    發(fā)表于 02-27 08:57

    數(shù)字信號(hào)電纜測(cè)試重要性 數(shù)字信號(hào)電纜測(cè)試的方法和技術(shù)

    數(shù)字信號(hào)電纜測(cè)試重要性 數(shù)字信號(hào)電纜測(cè)試的方法和技術(shù) 數(shù)字信號(hào)電纜測(cè)試重要性: 隨著現(xiàn)代通信技術(shù)的發(fā)展,數(shù)字信號(hào)電纜在各種領(lǐng)域中扮演著
    的頭像 發(fā)表于 02-01 15:48 ?713次閱讀

    泰克示波器探頭校準(zhǔn)的重要性及步驟詳解

    泰克示波器探頭校準(zhǔn)的重要性及步驟詳解 泰克示波器探頭是電子測(cè)量中常用的測(cè)試工具,用于從電路中獲取信號(hào)并顯示在示波器屏幕上。為確保測(cè)量結(jié)果的準(zhǔn)確和可靠,進(jìn)行泰克示波器探頭校準(zhǔn)是非常
    的頭像 發(fā)表于 01-08 13:50 ?1177次閱讀