通過關注輸出和行為驗證,了解FEY(Full-Expectation-Yet)方法如何徹底改變軟件測試。通過確保期望值的存在,這種方法提高了測試覆蓋度、可靠性和整體軟件質量。深入了解實現FEY方法的關鍵見解、挑戰和好處,以釋放測試工作的真正潛力。
在軟件測試領域,一個常見的挑戰是在測試創建期間對每個輸入定義期望值的疏忽。這可能導致不完整或無效的測試覆蓋,導致未檢測到的問題從裂縫中溜走。在本文中,我們將探討導致此情況的潛在問題,并介紹解決這些挑戰的解決方案。
測試中的典型問題:
軟件規范之間的差距:軟件規范中不可能明確的描述每一種每個邊界情況或場景,因此這些在測試創建過程中可能被忽視。
測試有效性的喪失:隨著軟件的變化,測試可能會過時并失去其相關性,僅通過視覺檢查來確定其準確性是很困難的。
軟件接口的復雜性:軟件系統通常有許多接口,因此在每個時間點為每個輸入定義清晰的期望值具有挑戰性。
大型的自動化項目:在大規模的自動化項目中,測試人員可能會忽略沒有定義期望值的情況或測試矢量,從而導致不完整的測試覆蓋。
解決方案——增加一個額外的監控層
為了應對這些挑戰,我們建議實現一個額外的監控層,以確保每個接口都有期望值。
這是通過為每個接口創建專用變量來實現的,該變量初始化為默認值“false”。然后,這個變量會在測試報告中顯式地、自動地突出顯示。如果在測試的任何給定點都沒有定義期望值,那么測試將自動失敗。這讓測試人員能夠在每次測試運行后快速識別未定義期望值的場景、輸入或情況。
注重測試結果的方法特別適用于:
安全關鍵行業:諸如汽車、醫療、航空航天和其他安全關鍵領域的行業,在這些行業中,正確的行為和軟件輸出的準確性至關重要。
具有復雜軟件的開發團隊:開發具有復雜功能、眾多接口和復雜計算的軟件項目的團隊,這些項目需要對輸出進行徹底的測試和驗證。
測試經理和工程師:通過有效的測試策略負責確保軟件質量和可靠性的專業人員。這種方法為他們提供了一種系統的方法來監測和驗證預期的輸出。
質量保證團隊:QA團隊試圖通過結合涵蓋輸入和輸出的綜合方法來增強他們的測試過程,從而提高整體測試的覆蓋度和有效性。
測試自動化專家:測試自動化方面的專家,他們的目標是利用自動化工具和技術來簡化和優化測試過程,并特別關注輸出和行為驗證。
應用該方法的領域
軟件輸出/計算的評估是測試的核心。測試用例是通過還是失敗完全取決于期望值,因為這些值定義了軟件的預期行為。因此,盡可能全面地描述這些期望值是至關重要的。
為了更好地理解這一事實,這里有一個簡短的邊注
測試自動化的基本原則:
- 一個測試用例必須接受至少一個評估,以被評估為成功或失敗。如果沒有可用的評估,測試用例在TPT中被判定為無結果的(Inconclusive)。
- 如果所有的評估都通過了,那么測試用例就被認為是成功的(Passed)。
- 如果至少有一個評估失敗,那么測試用例被認為是失敗的(Failed)。
- 如果一個測試用例不能被執行,它會被標記為執行錯誤(ExecutionErrors)。
用一個簡短的例子說明這種合理邏輯的缺點。
給一個具有許多輸出的測試對象創建一個測試用例。測試用例包含許多測試條件(步驟),并在許多情景下(高覆蓋度)刺激測試對象。現在的問題是:測試用例只包含與行為無關的相關評估。因此,即使測試的含量很低或沒有意義,也會被報告為成功。
這是非常不利的。但有解決辦法。我們稱這種方法為Full-Expectation-Yet。
簡而言之,Full-Expectation-Yet(FEY)方法是:
為被測系統的每個輸出創建一個檢查變量。該變量的目的是在任何時候檢查測試對象的輸出是否存在預期值。
因此,對于每個樣本(帶有輸入數據的測試向量),測試變量的默認值為false。只有當輸出存在指定的期望值時,默認值才會設置為true。
注:在TPT中,評估可以定義為獨立于測試數據的自定義實體。評估在測試執行后自動運行。
TPT將自動執行對變量的求值以生成報告。如果存在沒有期望值的時間間隔(樣本),則變量保留默認值(false),并且測試用例失敗。在這種情況下,測試對象的期望值是缺失的,它可以由測試人員來補充。
實施FEY方法的3個步驟:
- 步驟1 -為測試對象的每個輸出創建一個變量
- 步驟2 -定義每個變量,以值false開始
- 步驟3 -在每次評估期望值時設置相應的變量值為true
結果
由于對于每個輸出,變量的初始值為False,并且只有在對輸出進行測試時才設置為true,因此,如果測試對象的刺激顯示了測試中尚未指定的行為,則測試將失敗。
為了檢查盡可能多的情況,我們建議使用代碼覆蓋率指標MC/DC。
舉個例子
為了展示FEY方法的實用性和有效性,讓我們舉一個汽車行業的例子。想象一下,一個開發團隊正在為自動駕駛汽車開發高級駕駛輔助系統(ADAS)。
通過實現FEY方法,團隊可以為每個輸出創建專用變量,例如碰撞檢測、車道偏離警告和自適應巡航控制。通過為每個輸出定義明確的期望值,團隊可以全面測試這些關鍵功能的行為和準確性。
這確保了ADAS系統的可靠運行,為乘客和其他道路使用者提供了更高的安全性。這些例子突出了FEY方法在軟件行為至關重要的行業中的實際好處和實際應用。
這種有條不紊的方法確保了:
- 測試中會考慮所有情況/場景
- 對于每種情況和每種結果,測試中都有一個期望值
- 如果測試對象發生變化,可確保所有測試的有效性
注:在當前的實現中,輸出和測試變量之間沒有直接耦合。因此,必須在審查過程中檢查實現是否使用錯誤。
需要什么來實現?
您所需要的只是一個具有以下功能的自動化測試:
- 代碼覆蓋度的度量(至少是決策覆蓋度,MC/DC更好)
- 測試數據期望值的獨立定義
- 離散時間評估(每個樣本至少一次評估)
- 每次測試運行的整體評估
逐步實現FEY方法(使用TPT)——參考實現燈控制的例子
- 連接被測系統
- 創建評估行為的評估
- 創建測試數據(最好是基于需求)
- 實現監控層
- 記錄測試對象的接口
- 為每個輸出創建檢查變量
- 通過檢查變量擴展評估
- 運行測試并檢查覆蓋度(決策或MC/DC) ->使用TPT的模塊TASMO,您可以通過代碼刺激所有路徑和條件自動生成測試數據。
- 添加測試數據以實現100%的代碼覆蓋度
- 如果檢查變量顯示某些測試數據沒有定義期望值,則創建額外的評估。
FEY方法的優缺點
FEY方法的優勢
- 確保測試的有效性(對于每種情況,對測試項目都有明確的期望)
- 通過結合覆蓋測量檢測規范差距來提高安全性,例如,對于具有大量變體的駕駛員輔助功能
- 非常簡單易懂的實現->易于驗證的審查
- 這種方法是兼容的,并且很好地補充了確保測試用例和需求可追溯性的方法
FEY方法的弱點
- 如果實現被誤用(通過審查實現進行保護),其重要性就會降低。
- 未能發現相互矛盾的需求,例如,對于相同的情況,對于相同的結果,存在多個期望值(通過一般測試方法來保證——對于相同的測試向量,不同的期望值導致至少一次評估失敗)
- 如果代碼的行為受到參數的影響,則不考慮參數化(通過多參數執行來保證)
總結
在本文中,我們探討了與在軟件測試中定義期望值相關的挑戰,并介紹了一種稱為Full-Expectation-Yet(FEY)方法的解決方案。測試的核心在于評估軟件的輸出和計算,而期望值的存在對于決定測試用例的成功或失敗至關重要。
FEY方法通過增加一個額外的監控層來解決傳統測試方法的缺點。它涉及到為被測系統的每個輸出創建專用變量,初始化為默認值“false”。然后在測試執行期間評估這些變量,如果沒有定義預期的值,測試用例就會失敗。這種方法確保在測試中涵蓋所有情況和結果,從而提供了一種系統的方法來監測和驗證預期的輸出。
FEY方法特別適用于具有安全關鍵開發的行業、從事復雜軟件項目的開發團隊、負責確保質量的測試經理和工程師,以及尋求增強其測試過程的質量保證團隊。通過關注輸出和行為驗證,這種方法提高了整體的測試覆蓋度、有效性和可靠性。
雖然FEY方法提供了幾個優點,例如確保測試有效性和檢測規范差距,但它也有缺點。實現的誤用、檢測矛盾需求的失敗以及對參數化的有限考慮是需要解決的一些挑戰。
通過實現FEY方法,軟件測試可以發生革命性的變化,導致更全面和有效的測試實踐,從而有助于提高軟件質量和可靠性。
而TPT就是能使用FEY方法進行軟件測試的嵌入式軟件模型動態測試工具,如果您正苦于測試效率不高、測試過程冗雜的煩惱,歡迎聯系北匯信息獲取TPT試用,助力測試效率的提升。
-
嵌入式
+關注
關注
5090文章
19173瀏覽量
306837 -
軟件
+關注
關注
69文章
5003瀏覽量
87919 -
嵌入式軟件測試
+關注
關注
2文章
27瀏覽量
6119
發布評論請先 登錄
相關推薦
評論