簡體   English   中英

在Java測試用例中測量輸入覆蓋率

[英]Measure input coverage in Java test cases

是否有可能測量從現有測試用例傳遞到被測類的方法的多少不同的輸入。

我想測量代碼覆蓋率之類的東西,但是要考慮輸入。

我不知道有任何可計算輸入覆蓋率的COTS工具,因此我希望您必須構建一個能夠完成所需功能的工具。

我的技術論文《輕松實現任意語言的分支覆蓋》介紹了一種使用程序轉換系統將任意探針插入源代碼的,針對任意語言構建測試覆蓋工具的方法。

本文自然而然地側重於構建代碼覆蓋率,但是探針插入技術是通用的,您可以決定將探針放置在何處以及它們做什么。 在您的情況下,您只想將探針放在方法入口處,並且希望探針跟蹤輸入參數實例。 本文展示了如何通過使用源代碼模式指示插入點來將探針放置在任何地方。 方法輸入很容易描述為一種模式。

捕獲輸入實例比較麻煩但可行。 您必須確定什么是“輸入”。 僅僅是參數值,還是某種類型的參數的深層副本? 您可能需要做的是創建(按方法檢測)一種對象類型,該對象類型的數據成員與參數相對應,並使用參數的副本(適當深度)實例化該對象,然后將該對象存儲在按方法中哈希表。 (一旦知道了要作為代碼慣用法執行的操作,變換規則就可以插入所有這些內容)。 有了這些,在執行時,您的哈希表將建立參數集,這是您想要的參數的關鍵。

通過控制在哈希表中插入重復項時會發生什么,您可以(連續) 計數唯一的參數集實例。 可以在程序完成時導出的全局數組中管理該計數(每個方法)。 本文討論了這樣的全局數組,以及一般導出/顯示它的各種方法。

我們的測試覆蓋率分析器系列是使用本文中的技術構建的。 探查器將計數/時間保存在這種全局數組中(基本上是您需要的),並將其導出到顯示熱直方圖的顯示引擎,以顯示熱點位置。 這些顯示引擎是現成的語言和探測數據源不可知的,因為它們存在於我們的任何(探查器)工具中,包括Java探查器,因此您可以將其中一個按入顯示任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM