如果在生成測試報告的時候,如果出現 “com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH] runtime version of class in the coverage data is not consistent with the version of this class in the metadata, possibly because stale metadata is being used for report generation” 錯誤,說明在生成新的 “*.em” 前后代碼曾經被修改過,并且被修改的代碼所在的類文件在新的測試中沒有被覆蓋到,這就需要重新執行這部分測試,保證修改過的部分被重新執行。
使用覆蓋率報告總結和評估測試過程
到目前為止,針對每個測試用例的測試覆蓋率報告和測試整體的覆蓋率報告都已經得到了。這些報告可以幫助測試人員總結和分析測試結果,改進測試設計。
目前的功能測試中,測試人員主要借助執行的測試用例數目和測試過程中的問題報告來評價測試過程,因此,測試用例的設計直接關系到測試的充分性。測試人員往往無法從目前的測試結果報告中得到哪些部分被覆蓋了,哪些部分未被覆蓋的信息,也就造成了在測試結束時測試人員對測試結果沒有信心。另外,很多情況下,測試人員完成了某些特定情況的測試,異常情況往往被忽視。
覆蓋率報告為測試人員查看測試覆蓋情況提供了清晰的視圖。盡管100%的覆蓋率不能證明沒有問題,但是它為測試人員提供了參考。當覆蓋率很低的時候,測試人員可以通過覆蓋率報告的提示找到原因。
與開發人員討論測試結果
在覆蓋率結果、測試用例設計和執行文檔的指導下,測試人員可以更清楚地與開發人員討論測試結果,可以更加清楚的發現:
測試人員忽略的部分。
測試用例設計中被覆蓋而測試執行中未覆蓋的部分。
程序中的無用代碼。
例如:在實際的測試過程中,發現一個叫 syslog.messages 包的覆蓋率一直很低,一些類和方法始終沒有被覆蓋到。在測試執行過程中,與這些類相關的結果也沒有出現。因此,在與開發人員確認后,發現對這些內容的調用在寫代碼的時候被遺忘了(圖3中紅色框中的內容)。
圖 3. 覆蓋率報告分析
改進測試設計
利用覆蓋率報告,測試人員可以改進測試用例的設計:
移除覆蓋范圍重復的測試用例。
對于覆蓋點過多的測試用例,可以進行拆分,保證測試用例具有針對性。
對于測試中未覆蓋的部分,增加測試用例保證測試完整性。
結論
在功能測試中,測試人員一般不能直接獲得被測對象的源代碼,類、方法覆蓋率可以作為衡量和評估測試的重要標準。 EMMA 在字節碼插裝的基礎上捕獲并報告測試中的覆蓋率信息,使覆蓋率成功地用于功能測試。通過在功能測試中使用 EMMA 可以改進測試設計,幫助問題分析,并能更好地評估測試,保證測試質量。
原文轉自:http://www.testwo.com/article/591