在我正在进行的项目中,我们使用Selenium编写功能测试。应用程序在每次特性发布时都会经历功能更改。
是否有一种工具/机制,我们可以跟踪自动化功能测试中的差距,以便至少手工测试人员可以关注这些区域?
注意:我们没有做FTDD,所以功能测试覆盖率可能相当低,即使我们确保高单元测试覆盖率。我们使用NCover来检查单元测试的覆盖率。
据我所知,至少有两个(商业但便宜的)工具允许您附加到IIS进程以捕获IIS应用程序的覆盖率数据。
NCover:
NCover包含//iis命令行开关。这个开关设置IIS中的覆盖环境和重启web服务器。你会跑像这样来分析覆盖率对于您的web应用程序:
NCover.Console.exe nunit-console.exeTestAssembly.dll//iis通过这种方式,IIS将被覆盖重新启动以允许NCover进行监控你的覆盖率,你的测试运行。一旦完成,NCover将停止
见:http://docs.ncover.com/how-to/code-coverage-of-asp-net-applications-on-iis/
DotCover by jetbrains:
Dotcover有visual studio集成,允许你以同样的方式附加到IIS应用程序,如果你想要跟踪你的IIS应用程序。这可能也可以用命令行dotCover工具开始,尽管我从来没有真正尝试过。
见http://www.jetbrains.com/dotcover/
我认为Rational和Microsoft Teamsystem也有解决方案,但是它们更贵一些。
我们使用的测试系统包括一个人创建一个文本叙述——一个测试脚本——用于手动测试功能。这是以某种方式列举的(例如[功能性]-001)。然后,我们的Selenium测试被标记为覆盖了这些枚举中的一个或多个。
当新的功能被构造时,新的测试脚本被编写和列举。然后,使用Selenium测试,我们能够比较它的自动化列表与枚举的测试脚本—增量是必须手动测试的。
我们的一些测试覆盖工具(目前,Java, c#和COBOL)被设计用来处理这类事情。
如果您运行您的应用程序并执行特定的功能,您可以使用这些测试覆盖工具来收集特定功能的代码覆盖数据。本质上,这是功能执行的所有代码的记录。使用一些小的脚本,您可以安排每个功能测试运行,并获得该测试的代码覆盖率数据。
收集的测试覆盖向量可以由工具组合成一个总结向量,它将根据整个功能测试集为您的代码提供代码覆盖数字。
如果您更改了代码库,测试覆盖工具将告诉您哪些代码块已经更改(它在方法级别上比较差异)。这反过来可以应用于已经为单个功能收集的测试覆盖向量;如果有交集,您需要再次运行功能测试,因为它所依赖的代码已经更改。
通过这种方式,您可以决定在更改后需要重新测试哪些功能。
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
建议。net core的功能覆盖工具
Ncover:没有。net核心支持
dotcover:打开状态有缺陷