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

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









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

數(shù)字IC設(shè)計(jì):方法、技巧與實(shí)踐
在IMX93自定義構(gòu)建期間運(yùn)行bitbake imx image full時(shí)遇到報(bào)錯(cuò)怎么解決?
SiC碳化硅MOSFET功率器件雙脈沖測試方法介紹

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

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

評(píng)論