parasoft Jtest 使用教程:?jiǎn)卧獪y(cè)試和用例生成詳細(xì)解析
單元測(cè)試和測(cè)試用例的生成可謂是整個(gè)測(cè)試過(guò)程的核心和重點(diǎn),今天就給大家解析這兩個(gè)概念,讓大家對(duì)這兩點(diǎn)有更加深刻的理解,當(dāng)然你也可以在評(píng)論區(qū)發(fā)表你的看法喲~
單元測(cè)試
“單元測(cè)試”是指在最簡(jiǎn)單的功能點(diǎn)測(cè)試軟件代碼,該功能點(diǎn)通常是單個(gè)類(lèi),或者一個(gè)函數(shù)。單元測(cè)試通常由開(kāi)發(fā)人員在項(xiàng)目開(kāi)發(fā)周期內(nèi)執(zhí)行,而不是在 QA 階段進(jìn)行。通過(guò)使用單元測(cè)試,您可以確保應(yīng)用程序構(gòu)建塊在集成之前的可靠性,從而提高整個(gè)應(yīng)用程序的質(zhì)量。如果測(cè)試進(jìn)行得早,則識(shí)別和修正缺陷的難度通常較低,耗時(shí)也較少。
手動(dòng)單元測(cè)試通常涉及手工編寫(xiě)測(cè)試集、指定輸入數(shù)據(jù)以及為缺少的函數(shù)提供樁函數(shù)。 Jtest 可將這些任務(wù)自動(dòng)化,以使得單元測(cè)試更有效率,更具一致性。
通常,單元測(cè)試可能包括:
- 異常測(cè)試(也稱(chēng)為白盒測(cè)試、應(yīng)力測(cè)試、結(jié)構(gòu)測(cè)試或可靠性測(cè)試),用來(lái)確認(rèn)代碼的結(jié)構(gòu)可靠性,能處理所有可行的輸入以及輸入組合,不會(huì)產(chǎn)生預(yù)料之外的異常。
- 功能測(cè)試,用于驗(yàn)證所建立模塊是否符合需求和功能是否正常工作。在單元級(jí)別創(chuàng)建功能測(cè)試涉及到人工輸入,以指定特定的輸入和狀態(tài)條件、以及預(yù)期的輸出。功能測(cè)試可以作為白盒測(cè)試來(lái)實(shí)施(在了解接受測(cè)試的單元的內(nèi)部組織和實(shí)現(xiàn)的情況下進(jìn)行測(cè)試),或者黑盒測(cè)試,后者僅基于接受測(cè)試的單元的外部行為進(jìn)行。
- 回歸測(cè)試,用來(lái)驗(yàn)證現(xiàn)有代碼行為不會(huì)隨著代碼庫(kù)改進(jìn)而更改。完成此測(cè)試的通常做法是,開(kāi)發(fā)一組測(cè)試,驗(yàn)證它們的正確性,在代碼更改之后運(yùn)行它們,以捕獲代碼行為中的偏差?;貧w測(cè)試可能要依賴(lài)于異常測(cè)試和功能測(cè)試。
Jtest 可以執(zhí)行上述所有類(lèi)型的單元測(cè)試;可以自定義所執(zhí)行測(cè)試的級(jí)別和范圍,以便體現(xiàn)您的需求和測(cè)試習(xí)慣。
當(dāng)您運(yùn)行 Jtest 自動(dòng)生成的測(cè)試用例時(shí),請(qǐng)執(zhí)行異常測(cè)試。此類(lèi)測(cè)試可暴露意料之外的異常,并檢查類(lèi)在結(jié)構(gòu)方面是否合理??煽啃詼y(cè)試能否成功,取決于代碼是否能完全覆蓋,因此必要時(shí),您可能會(huì)想要擴(kuò)展自動(dòng)生成的測(cè)試用例,以增強(qiáng)代碼覆蓋率。Jtest 可測(cè)量測(cè)試覆蓋率,以有助于您評(píng)估覆蓋率,并確定哪些地方需要附加測(cè)試。
當(dāng)您擴(kuò)展自動(dòng)生成的測(cè)試用例,以驗(yàn)證類(lèi)的公共接口是否按照規(guī)范所述運(yùn)行時(shí),請(qǐng)執(zhí)行功能測(cè)試。此外,如果你的規(guī)格說(shuō)明公共接口需要由合同來(lái)設(shè)計(jì)。但您執(zhí)行自動(dòng)生成的單元測(cè)試用例,Jtest執(zhí)行功能性測(cè)試。更重要的是,Jtest Tracer可以自動(dòng)生成符合實(shí)際的功能性測(cè)試測(cè)試用例,這些測(cè)試用例在運(yùn)行應(yīng)用程序的過(guò)程中捕獲代碼的行為(例如,使用用例執(zhí)行應(yīng)用程序)
回歸測(cè)試涉及到定期測(cè)試改進(jìn)的代碼庫(kù),其做法是運(yùn)行所有可用的測(cè)試用例,并檢查預(yù)期的結(jié)果是否發(fā)生更改。在當(dāng)前測(cè)試的測(cè)試用例結(jié)果與預(yù)期的測(cè)試用例結(jié)果不匹配時(shí),Jtest 會(huì)報(bào)告錯(cuò)誤消息。
此外,Jtest可以配置來(lái)觀察內(nèi)存使用情況和報(bào)告任何檢測(cè)到的內(nèi)存泄露問(wèn)題。如果內(nèi)存泄露檢測(cè)是可用的,在測(cè)試用例執(zhí)行過(guò)程中,Jtest監(jiān)控對(duì)象分配事件和對(duì)象銷(xiāo)毀事件。如果它被分配了但在測(cè)試結(jié)束時(shí),垃圾回收器沒(méi)有銷(xiāo)毀該對(duì)象,則該對(duì)象被認(rèn)為是泄露的。每一個(gè)測(cè)試被執(zhí)行三次,以確保泄露的內(nèi)存沒(méi)有初始化或緩存。如果Jtest確定泄露發(fā)生,它報(bào)告三次測(cè)試執(zhí)行中最小的泄露和標(biāo)記哪些內(nèi)存被分配的行的位置。
測(cè)試用例生成
編寫(xiě)單元測(cè)試是一項(xiàng)重要任務(wù),它確保了代碼的質(zhì)量。單元測(cè)試不僅能暴露錯(cuò)誤和功能問(wèn)題,而且能作為常規(guī)的回歸測(cè)試運(yùn)行,以有助于您確定代碼的添加/修改是否破壞了現(xiàn)有功能,或者是否造成意外的更改。
不過(guò),編寫(xiě)測(cè)試是一項(xiàng)耗時(shí)的工作,如果不仔細(xì)就可能會(huì)遺漏重要的情況。Jtest 提供的單元測(cè)試支持,可幫助開(kāi)發(fā)人員和測(cè)試人員非??焖俚貏?chuàng)建良好的單元測(cè)試。Jtest 之所以能提供幫助,是因?yàn)樗詣?dòng)生成許多單元測(cè)試,允許用戶(hù)自定義測(cè)試生成和執(zhí)行,以符合他們的參數(shù)選擇和需求。
Jtest 自動(dòng)生成大量測(cè)試用例,這些測(cè)試用例會(huì)試圖執(zhí)行代碼中的所有不同路徑,然后保存實(shí)際的測(cè)試用例結(jié)果。從本質(zhì)上來(lái)講,這些測(cè)試用例就好比在對(duì)代碼的當(dāng)前狀態(tài)照 x 射線,在修改代碼之前拍攝代碼運(yùn)行情況的快照。它們還有助于識(shí)別可能影響代碼可靠性和安全性的潛在異常狀況。
Jtest 可以為任何Java代碼生成從單個(gè)函數(shù)到整個(gè)項(xiàng)目的測(cè)試用例。通過(guò)在Jtest 中運(yùn)行這些測(cè)試用例,您可以驗(yàn)證類(lèi)的健壯性,識(shí)別可能造成程序進(jìn)入不一致?tīng)顟B(tài)或終止?fàn)顟B(tài)的輸入。您可以自定義預(yù)先配置的測(cè)試方式、以及特定的測(cè)試生成設(shè)置。
測(cè)試用例可以用C 或 C++ 源碼來(lái)實(shí)現(xiàn)和保存(所用語(yǔ)言取決于要測(cè)試的原始源碼)。這些測(cè)試用例使用與通用的 CppUnit 格式類(lèi)似的格式。C++test 的測(cè)試提供了比 CppUnit 更廣泛的功能,包括可以測(cè)試C代碼、并在測(cè)試框架內(nèi)提供對(duì)私有和保護(hù)成員數(shù)據(jù)以及成員函數(shù)進(jìn)行訪問(wèn)的功能。
現(xiàn)有 CppUnit 測(cè)試用例可以導(dǎo)入到 C++test 中,與自動(dòng)生成的測(cè)試用例配合使用??梢酝ㄟ^(guò)用戶(hù)定義的測(cè)試用例對(duì)測(cè)試套件進(jìn)行擴(kuò)展,以改進(jìn)測(cè)試覆蓋率并驗(yàn)證特定的功能;可以通過(guò)修改自動(dòng)生成的測(cè)試用例、或定義新的測(cè)試用例,來(lái)添加這些測(cè)試。對(duì)于回歸測(cè)試,可以自動(dòng)驗(yàn)證和配置任何可用的測(cè)試用例。通過(guò)保存所有可用的測(cè)試用例,并充分將它們用于自動(dòng)回歸測(cè)試,您可以建立一個(gè)回歸測(cè)試基礎(chǔ)結(jié)構(gòu),快速地識(shí)別因代碼修改而引入的意外功能更改和異常。
自動(dòng)測(cè)試用例生成的功能,允許您在更短的時(shí)間內(nèi)創(chuàng)建更有效的測(cè)試套件。測(cè)試用例的開(kāi)發(fā),歷來(lái)是單元測(cè)試過(guò)程中最耗時(shí)的部分。通過(guò)使用 Jtest,您無(wú)需編寫(xiě)任何代碼以生成一組使用每一個(gè)類(lèi)的基礎(chǔ)測(cè)試用例,您可以通過(guò)向自動(dòng)生成的測(cè)試用例添加少量代碼來(lái)創(chuàng)建更多的測(cè)試用例。通常,您無(wú)需為簡(jiǎn)單方法編寫(xiě)測(cè)試用例而擔(dān)心,可以將資源集中于更復(fù)雜方法的擴(kuò)展/添加測(cè)試。
而且,自動(dòng)測(cè)試用例生成可通過(guò)以下兩種重要途徑,有助于您預(yù)防發(fā)生錯(cuò)誤:
- 它使您能夠在完成類(lèi)的編寫(xiě)或修改之后,立即生成和執(zhí)行測(cè)試用例。這有助于您找到并糾正錯(cuò)誤,以免您(或某個(gè)團(tuán)隊(duì)成員)無(wú)意中因添加問(wèn)題類(lèi)代碼或與問(wèn)題代碼交互而引入附加的錯(cuò)誤。
- 它通過(guò)自動(dòng)生成必需的測(cè)試用例范圍和類(lèi)型,使得快速?gòu)氐椎目煽啃詼y(cè)試成為可能,這是通過(guò)手動(dòng)設(shè)計(jì)測(cè)試用例所無(wú)法達(dá)到的。Jtest 會(huì)試圖創(chuàng)建測(cè)試用例,執(zhí)行所測(cè)試的全部方法的各種可能分支。例如,如果方法包含一個(gè)條件語(yǔ)句(例如 if 塊),Jtest 會(huì)試圖生成測(cè)試用例,以測(cè)試 if 語(yǔ)句的 true 和 false 結(jié)果。
查看更多parasoft測(cè)試產(chǎn)品
獲取更多活動(dòng)信息