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