通過(guò)關(guān)注輸出和行為驗(yàn)證,了解FEY(Full-Expectation-Yet)方法如何徹底改變軟件測(cè)試。通過(guò)確保期望值的存在,這種方法提高了測(cè)試覆蓋度、可靠性和整體軟件質(zhì)量。深入了解實(shí)現(xiàn)FEY方法的關(guān)鍵見(jiàn)解、挑戰(zhàn)和好處,以釋放測(cè)試工作的真正潛力。
在軟件測(cè)試領(lǐng)域,一個(gè)常見(jiàn)的挑戰(zhàn)是在測(cè)試創(chuàng)建期間對(duì)每個(gè)輸入定義期望值的疏忽。這可能導(dǎo)致不完整或無(wú)效的測(cè)試覆蓋,導(dǎo)致未檢測(cè)到的問(wèn)題從裂縫中溜走。在本文中,我們將探討導(dǎo)致此情況的潛在問(wèn)題,并介紹解決這些挑戰(zhàn)的解決方案。
測(cè)試中的典型問(wèn)題:
軟件規(guī)范之間的差距:軟件規(guī)范中不可能明確的描述每一種每個(gè)邊界情況或場(chǎng)景,因此這些在測(cè)試創(chuàng)建過(guò)程中可能被忽視。
測(cè)試有效性的喪失:隨著軟件的變化,測(cè)試可能會(huì)過(guò)時(shí)并失去其相關(guān)性,僅通過(guò)視覺(jué)檢查來(lái)確定其準(zhǔn)確性是很困難的。
軟件接口的復(fù)雜性:軟件系統(tǒng)通常有許多接口,因此在每個(gè)時(shí)間點(diǎn)為每個(gè)輸入定義清晰的期望值具有挑戰(zhàn)性。
大型的自動(dòng)化項(xiàng)目:在大規(guī)模的自動(dòng)化項(xiàng)目中,測(cè)試人員可能會(huì)忽略沒(méi)有定義期望值的情況或測(cè)試矢量,從而導(dǎo)致不完整的測(cè)試覆蓋。
解決方案——增加一個(gè)額外的監(jiān)控層
為了應(yīng)對(duì)這些挑戰(zhàn),我們建議實(shí)現(xiàn)一個(gè)額外的監(jiān)控層,以確保每個(gè)接口都有期望值。
這是通過(guò)為每個(gè)接口創(chuàng)建專(zhuān)用變量來(lái)實(shí)現(xiàn)的,該變量初始化為默認(rèn)值“false”。然后,這個(gè)變量會(huì)在測(cè)試報(bào)告中顯式地、自動(dòng)地突出顯示。如果在測(cè)試的任何給定點(diǎn)都沒(méi)有定義期望值,那么測(cè)試將自動(dòng)失敗。這讓測(cè)試人員能夠在每次測(cè)試運(yùn)行后快速識(shí)別未定義期望值的場(chǎng)景、輸入或情況。
注重測(cè)試結(jié)果的方法特別適用于:
安全關(guān)鍵行業(yè):諸如汽車(chē)、醫(yī)療、航空航天和其他安全關(guān)鍵領(lǐng)域的行業(yè),在這些行業(yè)中,正確的行為和軟件輸出的準(zhǔn)確性至關(guān)重要。
具有復(fù)雜軟件的開(kāi)發(fā)團(tuán)隊(duì):開(kāi)發(fā)具有復(fù)雜功能、眾多接口和復(fù)雜計(jì)算的軟件項(xiàng)目的團(tuán)隊(duì),這些項(xiàng)目需要對(duì)輸出進(jìn)行徹底的測(cè)試和驗(yàn)證。
測(cè)試經(jīng)理和工程師:通過(guò)有效的測(cè)試策略負(fù)責(zé)確保軟件質(zhì)量和可靠性的專(zhuān)業(yè)人員。這種方法為他們提供了一種系統(tǒng)的方法來(lái)監(jiān)測(cè)和驗(yàn)證預(yù)期的輸出。
質(zhì)量保證團(tuán)隊(duì):QA團(tuán)隊(duì)試圖通過(guò)結(jié)合涵蓋輸入和輸出的綜合方法來(lái)增強(qiáng)他們的測(cè)試過(guò)程,從而提高整體測(cè)試的覆蓋度和有效性。
測(cè)試自動(dòng)化專(zhuān)家:測(cè)試自動(dòng)化方面的專(zhuān)家,他們的目標(biāo)是利用自動(dòng)化工具和技術(shù)來(lái)簡(jiǎn)化和優(yōu)化測(cè)試過(guò)程,并特別關(guān)注輸出和行為驗(yàn)證。
應(yīng)用該方法的領(lǐng)域
軟件輸出/計(jì)算的評(píng)估是測(cè)試的核心。測(cè)試用例是通過(guò)還是失敗完全取決于期望值,因?yàn)檫@些值定義了軟件的預(yù)期行為。因此,盡可能全面地描述這些期望值是至關(guān)重要的。
為了更好地理解這一事實(shí),這里有一個(gè)簡(jiǎn)短的邊注
測(cè)試自動(dòng)化的基本原則:
- 一個(gè)測(cè)試用例必須接受至少一個(gè)評(píng)估,以被評(píng)估為成功或失敗。如果沒(méi)有可用的評(píng)估,測(cè)試用例在TPT中被判定為無(wú)結(jié)果的(Inconclusive)。
- 如果所有的評(píng)估都通過(guò)了,那么測(cè)試用例就被認(rèn)為是成功的(Passed)。
- 如果至少有一個(gè)評(píng)估失敗,那么測(cè)試用例被認(rèn)為是失敗的(Failed)。
- 如果一個(gè)測(cè)試用例不能被執(zhí)行,它會(huì)被標(biāo)記為執(zhí)行錯(cuò)誤(ExecutionErrors)。

用一個(gè)簡(jiǎn)短的例子說(shuō)明這種合理邏輯的缺點(diǎn)。
給一個(gè)具有許多輸出的測(cè)試對(duì)象創(chuàng)建一個(gè)測(cè)試用例。測(cè)試用例包含許多測(cè)試條件(步驟),并在許多情景下(高覆蓋度)刺激測(cè)試對(duì)象。現(xiàn)在的問(wèn)題是:測(cè)試用例只包含與行為無(wú)關(guān)的相關(guān)評(píng)估。因此,即使測(cè)試的含量很低或沒(méi)有意義,也會(huì)被報(bào)告為成功。
這是非常不利的。但有解決辦法。我們稱(chēng)這種方法為Full-Expectation-Yet。
簡(jiǎn)而言之,F(xiàn)ull-Expectation-Yet(FEY)方法是:
為被測(cè)系統(tǒng)的每個(gè)輸出創(chuàng)建一個(gè)檢查變量。該變量的目的是在任何時(shí)候檢查測(cè)試對(duì)象的輸出是否存在預(yù)期值。
因此,對(duì)于每個(gè)樣本(帶有輸入數(shù)據(jù)的測(cè)試向量),測(cè)試變量的默認(rèn)值為false。只有當(dāng)輸出存在指定的期望值時(shí),默認(rèn)值才會(huì)設(shè)置為true。
注:在TPT中,評(píng)估可以定義為獨(dú)立于測(cè)試數(shù)據(jù)的自定義實(shí)體。評(píng)估在測(cè)試執(zhí)行后自動(dòng)運(yùn)行。
TPT將自動(dòng)執(zhí)行對(duì)變量的求值以生成報(bào)告。如果存在沒(méi)有期望值的時(shí)間間隔(樣本),則變量保留默認(rèn)值(false),并且測(cè)試用例失敗。在這種情況下,測(cè)試對(duì)象的期望值是缺失的,它可以由測(cè)試人員來(lái)補(bǔ)充。
實(shí)施FEY方法的3個(gè)步驟:
- 步驟1 -為測(cè)試對(duì)象的每個(gè)輸出創(chuàng)建一個(gè)變量
- 步驟2 -定義每個(gè)變量,以值false開(kāi)始
- 步驟3 -在每次評(píng)估期望值時(shí)設(shè)置相應(yīng)的變量值為true
結(jié)果
由于對(duì)于每個(gè)輸出,變量的初始值為False,并且只有在對(duì)輸出進(jìn)行測(cè)試時(shí)才設(shè)置為true,因此,如果測(cè)試對(duì)象的刺激顯示了測(cè)試中尚未指定的行為,則測(cè)試將失敗。
為了檢查盡可能多的情況,我們建議使用代碼覆蓋率指標(biāo)MC/DC。
舉個(gè)例子
為了展示FEY方法的實(shí)用性和有效性,讓我們舉一個(gè)汽車(chē)行業(yè)的例子。想象一下,一個(gè)開(kāi)發(fā)團(tuán)隊(duì)正在為自動(dòng)駕駛汽車(chē)開(kāi)發(fā)高級(jí)駕駛輔助系統(tǒng)(ADAS)。
通過(guò)實(shí)現(xiàn)FEY方法,團(tuán)隊(duì)可以為每個(gè)輸出創(chuàng)建專(zhuān)用變量,例如碰撞檢測(cè)、車(chē)道偏離警告和自適應(yīng)巡航控制。通過(guò)為每個(gè)輸出定義明確的期望值,團(tuán)隊(duì)可以全面測(cè)試這些關(guān)鍵功能的行為和準(zhǔn)確性。
這確保了ADAS系統(tǒng)的可靠運(yùn)行,為乘客和其他道路使用者提供了更高的安全性。這些例子突出了FEY方法在軟件行為至關(guān)重要的行業(yè)中的實(shí)際好處和實(shí)際應(yīng)用。
這種有條不紊的方法確保了:
- 測(cè)試中會(huì)考慮所有情況/場(chǎng)景
- 對(duì)于每種情況和每種結(jié)果,測(cè)試中都有一個(gè)期望值
- 如果測(cè)試對(duì)象發(fā)生變化,可確保所有測(cè)試的有效性
注:在當(dāng)前的實(shí)現(xiàn)中,輸出和測(cè)試變量之間沒(méi)有直接耦合。因此,必須在審查過(guò)程中檢查實(shí)現(xiàn)是否使用錯(cuò)誤。
需要什么來(lái)實(shí)現(xiàn)?
您所需要的只是一個(gè)具有以下功能的自動(dòng)化測(cè)試:
- 代碼覆蓋度的度量(至少是決策覆蓋度,MC/DC更好)
- 測(cè)試數(shù)據(jù)期望值的獨(dú)立定義
- 離散時(shí)間評(píng)估(每個(gè)樣本至少一次評(píng)估)
- 每次測(cè)試運(yùn)行的整體評(píng)估
逐步實(shí)現(xiàn)FEY方法(使用TPT)——參考實(shí)現(xiàn)燈控制的例子
- 連接被測(cè)系統(tǒng)
- 創(chuàng)建評(píng)估行為的評(píng)估
- 創(chuàng)建測(cè)試數(shù)據(jù)(最好是基于需求)
- 實(shí)現(xiàn)監(jiān)控層
- 記錄測(cè)試對(duì)象的接口
- 為每個(gè)輸出創(chuàng)建檢查變量
- 通過(guò)檢查變量擴(kuò)展評(píng)估
- 運(yùn)行測(cè)試并檢查覆蓋度(決策或MC/DC) ->使用TPT的模塊TASMO,您可以通過(guò)代碼刺激所有路徑和條件自動(dòng)生成測(cè)試數(shù)據(jù)。
- 添加測(cè)試數(shù)據(jù)以實(shí)現(xiàn)100%的代碼覆蓋度
- 如果檢查變量顯示某些測(cè)試數(shù)據(jù)沒(méi)有定義期望值,則創(chuàng)建額外的評(píng)估。









FEY方法的優(yōu)缺點(diǎn)
FEY方法的優(yōu)勢(shì)
- 確保測(cè)試的有效性(對(duì)于每種情況,對(duì)測(cè)試項(xiàng)目都有明確的期望)
- 通過(guò)結(jié)合覆蓋測(cè)量檢測(cè)規(guī)范差距來(lái)提高安全性,例如,對(duì)于具有大量變體的駕駛員輔助功能
- 非常簡(jiǎn)單易懂的實(shí)現(xiàn)->易于驗(yàn)證的審查
- 這種方法是兼容的,并且很好地補(bǔ)充了確保測(cè)試用例和需求可追溯性的方法
FEY方法的弱點(diǎn)
- 如果實(shí)現(xiàn)被誤用(通過(guò)審查實(shí)現(xiàn)進(jìn)行保護(hù)),其重要性就會(huì)降低。
- 未能發(fā)現(xiàn)相互矛盾的需求,例如,對(duì)于相同的情況,對(duì)于相同的結(jié)果,存在多個(gè)期望值(通過(guò)一般測(cè)試方法來(lái)保證——對(duì)于相同的測(cè)試向量,不同的期望值導(dǎo)致至少一次評(píng)估失敗)
- 如果代碼的行為受到參數(shù)的影響,則不考慮參數(shù)化(通過(guò)多參數(shù)執(zhí)行來(lái)保證)
總結(jié)
在本文中,我們探討了與在軟件測(cè)試中定義期望值相關(guān)的挑戰(zhàn),并介紹了一種稱(chēng)為Full-Expectation-Yet(FEY)方法的解決方案。測(cè)試的核心在于評(píng)估軟件的輸出和計(jì)算,而期望值的存在對(duì)于決定測(cè)試用例的成功或失敗至關(guān)重要。
FEY方法通過(guò)增加一個(gè)額外的監(jiān)控層來(lái)解決傳統(tǒng)測(cè)試方法的缺點(diǎn)。它涉及到為被測(cè)系統(tǒng)的每個(gè)輸出創(chuàng)建專(zhuān)用變量,初始化為默認(rèn)值“false”。然后在測(cè)試執(zhí)行期間評(píng)估這些變量,如果沒(méi)有定義預(yù)期的值,測(cè)試用例就會(huì)失敗。這種方法確保在測(cè)試中涵蓋所有情況和結(jié)果,從而提供了一種系統(tǒng)的方法來(lái)監(jiān)測(cè)和驗(yàn)證預(yù)期的輸出。
FEY方法特別適用于具有安全關(guān)鍵開(kāi)發(fā)的行業(yè)、從事復(fù)雜軟件項(xiàng)目的開(kāi)發(fā)團(tuán)隊(duì)、負(fù)責(zé)確保質(zhì)量的測(cè)試經(jīng)理和工程師,以及尋求增強(qiáng)其測(cè)試過(guò)程的質(zhì)量保證團(tuán)隊(duì)。通過(guò)關(guān)注輸出和行為驗(yàn)證,這種方法提高了整體的測(cè)試覆蓋度、有效性和可靠性。
雖然FEY方法提供了幾個(gè)優(yōu)點(diǎn),例如確保測(cè)試有效性和檢測(cè)規(guī)范差距,但它也有缺點(diǎn)。實(shí)現(xiàn)的誤用、檢測(cè)矛盾需求的失敗以及對(duì)參數(shù)化的有限考慮是需要解決的一些挑戰(zhàn)。
通過(guò)實(shí)現(xiàn)FEY方法,軟件測(cè)試可以發(fā)生革命性的變化,導(dǎo)致更全面和有效的測(cè)試實(shí)踐,從而有助于提高軟件質(zhì)量和可靠性。
而TPT就是能使用FEY方法進(jìn)行軟件測(cè)試的嵌入式軟件模型動(dòng)態(tài)測(cè)試工具,如果您正苦于測(cè)試效率不高、測(cè)試過(guò)程冗雜的煩惱,歡迎聯(lián)系北匯信息獲取TPT試用,助力測(cè)試效率的提升。
-
嵌入式
+關(guān)注
關(guān)注
5141文章
19524瀏覽量
314795 -
軟件
+關(guān)注
關(guān)注
69文章
5117瀏覽量
88923 -
嵌入式軟件測(cè)試
+關(guān)注
關(guān)注
2文章
27瀏覽量
6170
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)字IC設(shè)計(jì):方法、技巧與實(shí)踐
在IMX93自定義構(gòu)建期間運(yùn)行bitbake imx image full時(shí)遇到報(bào)錯(cuò)怎么解決?
SiC碳化硅MOSFET功率器件雙脈沖測(cè)試方法介紹

RK3568內(nèi)置MCU開(kāi)發(fā)介紹之二

電機(jī)維修方法介紹 電機(jī)保養(yǎng)攻略分享
工控機(jī)重裝系統(tǒng)的方法介紹
獲得高頻輸出的方法AT技術(shù)

評(píng)論