原創|產品更新|編輯:李燕|2019-12-23 15:14:11.990|閱讀 534 次
概述:最新的Parasoft C / C ++ test 10.4.3版本中引入了存根這一小小的增強功能,此功能具有很多的優點,讓我們來看看吧。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
幾個月前,我們的一位大型客戶正在從事一項根據IEC 61508開發的安全關鍵項目,與我們聯系以尋求幫助以優化開發人員的生產率。客戶面臨的問題是由于開發人員同時處理單元測試用例并根據其特定測試場景的需要配置存根而在測試結果中產生的大量噪聲。
我們了解到,客戶執行單元測試的方式更接近于集成測試。在他們的過程中,被測試的單元沒有與相關組件(項目中的其他文件)隔離開來,并且單元測試用例是針對幾乎完整的應用程序執行的,因此項目中各個功能之間的所有調用在單元測試期間的連接方式都完全相同。如在生產版本中。
這種方法不是“經典的”單元測試,因為它從集成級別測試中借鑒了很多東西。盡管如此,它對于說明需求和源代碼的良好測試覆蓋范圍還是非常有效的。
在此過程中,僅在必須模擬特定的測試方案(通常是故障注入)時才添加存根。以下面的代碼為例:
在該函數的開頭,有一個if語句,用于測試是否成功分配了樣本緩沖區。此功能的大多數測試用例都是在沒有存根的情況下實現的,因為它們專注于“常規”控制流,測試用例除外,該用例會在緩沖區分配失敗時檢查功能的行為。此測試用例需要對allocateSampleBuffer函數使用存根來模擬故障。
一旦添加了存根,它將被一致地應用于測試的代碼。現在,使用“分配失敗”測試用例的用戶將有一種簡單的方法,可以在存根中安裝特殊的回調函數,這將模擬所需的效果(分配失敗,或者不執行任何操作,因為存根默認返回空指針,預期用于測試用例)。但是現在所有其他測試用例都需要引起注意,因為必須為其添加一個存根配置,以避免控制流中發生不必要的更改。
當然,開發人員可以返回并重新配置他們的測試用例以解決存根,但這意味著要花費更多的時間來分析失敗的原因,為存根準備專用的回調函數以及消除測試過程中的噪音–客戶與我們聯系時的主要顧慮。
因此,我們在Parasoft C / C ++ test的10.4.3版本中為存根添加了一個特殊選項,使生成自動存根或用戶存根更加容易。新選項在兩個地方可用:
選中“插入對原始函數的調用”選項后,Parasoft C / C ++ test會更改存根的默認生成方式。沒有安裝回叫時,此更改是存根行為。使用new選項生成的存根將充當代理并調用原始函數定義,除非用戶提供特定于測試用例的回叫函數以執行替代活動。沒有新選項的情況下生成的存根(包括舊存根)在默認情況下將不會嘗試調用原始符號,并且如果未安裝特定于測試用例的回調函數,則存根將不執行任何操作,僅返回“默認” ”值,例如空指針或零數值。
為確保區別清楚,讓我快速比較一下啟用和未啟用“插入原始功能的插入”選項的情況,以供用戶未提供專用回調的情況:
如您所見,添加了new選項的存根對于測試的代碼是透明的,并且它們僅執行對原始定義的代理調用,除非有人提供實現所需替代操作的回調。
一個有經驗的工程師可能會在這里問一個問題,例如,“好吧,但是如果沒有適用于存根函數的原始定義,將會發生什么?當我不提供定義替代行為的回調并且我沒有原始定義可用時,存根在這種情況下的行為如何?”
好吧,這項新功能的優點在于可以自動檢測到這種情況,并且存根將在測試工具構建時重新配置自身,而不是在未安裝回叫時調用原始定義,而是返回一個安全的默認值值。
當在這種“半集成”測試中同時處理測試用例時,此新功能極大地減少了不同團隊成員之間的干擾。開發人員A添加的存根不會更改開發人員B添加的測試用例的已測試代碼的行為。如果開發人員B決定需要為其中一個測試用例的存根函數配置替代操作,則只需創建一個特定于測試用例的回調函數,該函數為存根函數實現所需的替代邏輯,并將此回調安裝在現有存根中,作為測試用例配置的一部分。
在我們最新的Parasoft C / C ++ test10.4.3版本中引入了這一小增強功能。了解更多有關最新版本的信息!
想要了解Parasoft、Parasoft SOAtest、Parasoft Virtualize更多信息或資源的朋友,請
與聯系,以了解如何在組織中部署Parasoft的自動化軟件測試解決方案。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn