2011-04-09 188 views
14

在我正在開發的項目中,我們對Selenium進行了功能測試。應用程序會在每個功能版本中進行功能更改。功能測試的覆蓋率分析

是否有工具/機制可以跟蹤自動化功能測試中的差距,以便至少手動測試人員能夠關注這些領域?

注意:我們沒有做FTDD,所以功能測試覆蓋率可能相當差,即使我們確保高單位測試覆蓋率。我們使用NCover來檢查單元測試覆蓋率。

+0

難道你不能只使用NCover來測量功能測試的覆蓋率嗎? – 2011-05-08 13:00:09

+3

@Bas - 功能測試不直接與代碼交互。這使功能測試不知道代碼更改。我個人認爲有一種方法可以將功能測試與代碼聯繫起來,因爲我認爲金融時報與應用程序的業務流程密切相關,並且UTs與類和代碼相關聯。不過,如果有人試圖對金融時報進行覆蓋率分析,我試圖找出答案。它可能是一個功能覆蓋而不是代碼覆蓋。 – 2011-05-09 05:19:03

+0

你使用什麼網絡服務器?我知道NCover可以通過IIS – 2011-05-09 16:31:22

回答

4

我知道至少有兩個(商業但廉價的)工具,它們允許您附加到IIS進程以捕獲IIS應用程序的覆蓋率數據。

NCover:

NCover包括// IIS命令行 開關。此開關在IIS內設置 覆蓋環境,並且 重新啓動Web服務器。你會碰到 NCover這樣的過程來分析覆蓋 爲您的Web應用程序:

NCover.Console.exe NUnit的-console.exe TestAssembly.dll // IIS當你以這種方式運行 NCover,IIS會 重新啓動以允許NCover監測 您的覆蓋範圍,並且您的測試將以 運行。一旦完成,NCover將停止 IIS並自行分離。

參見:http://docs.ncover.com/how-to/code-coverage-of-asp-net-applications-on-iis/

DotCover由JetBrains公司:

Dotcover有Visual Studio集成,它允許你連接到相同的方式IIS應用程序,如果你想你會怎麼做跟蹤您的IIS應用程序。這可能也可以開始與命令行dotCover工具,雖然我從來沒有真正嘗試過。

http://www.jetbrains.com/dotcover/

我認爲合理和微軟Teamsystem也有解決方案,但他們有點昂貴。

3

我們使用系統進行測試,涉及創建文本敘述的人員 - 測試腳本 - 用於手動測試功能。這是以某種方式列舉的(例如[功能] -001)。然後我們的Selenium測試被記錄爲涵蓋一個或多個這些枚舉。

當構建新功能時,會寫入並枚舉新的測試腳本。然後,通過Selenium測試,我們可以比較自動化相對於枚舉測試腳本的列表 - 增量是必須手動測試的內容。

0

NDepend能夠顯示不同版本之間的代碼覆蓋率變化量。

來自NDepend網站(http://www.ndepend.com/Features。aspx#Coverage):

寫入自動測試是增加代碼正確性的核心操作。知道自動測試覆蓋哪部分代碼有助於改進測試,因此有助於提高代碼的正確性。

NDepend從NCover™和Visual Studio Team System™收集代碼覆蓋率數據。從這些數據中,NDepend推斷出一些關於方法,類型,名稱空間和程序集的指標:PercentageCoverage,NbLinesOfCodeCovered,NbLinesOfCodeNotCovered和BranchCoverage(僅來自NCover)。

這些指標可以與其他NDepend功能結合使用。例如,您可以知道自上次發佈以來添加或重構了哪些代碼,並且未完全覆蓋測試。您可以編寫一個CQL約束來持續檢查一組類是否被100%覆蓋。你可以列出哪些複雜的方法需要更多的測試。

視頻演示是在這裏:http://s3.amazonaws.com/NDependOnlineDemos/Coverage_viewlet_swf.html

1

我們的一些Test Coverage工具(目前,Java和C#和COBOL)被設計來處理這種事情。

如果您運行應用程序並運行特定功能,則可以使用這些測試覆蓋率工具來收集該特定功能的代碼覆蓋率數據。實質上,這是功能演練的所有代碼的記錄。通過一些較小的腳本,您可以安排每個functinonality測試運行並獲取該測試的代碼覆蓋率數據。

收集到的測試覆蓋矢量可以通過該工具組合成一個彙總矢量,它將根據整套功能測試爲您的代碼提供代碼覆蓋號。

如果更改代碼庫,測試覆蓋率工具會告訴您哪些代碼塊已更改(它在方法級別比較差異)。這反過來又可以應用於已經爲各個功能收集的測試覆蓋矢量;如果存在交叉點,則需要再次運行功能測試,因爲它所依賴的代碼已更改。

通過這種方式,您可以決定更改後需要重新測試哪些功能。