c# - 开始在现有代码库中进行自动化集成/单元测试

标签 c# unit-testing nunit mstest xunit.net

背景:我们收到了一个非常大的代码库(140 万行),主要使用 C#。该应用程序主要由访问 SQL Server 2008 数据库和各种 XML 文件中的数据的 asp.net 2.0 样式的 asmx Web 服务组成。没有现成的自动化测试。我们有一个自动的夜间构建 (CC.NET)。

我们想引入某种程度的自动化测试,但在细粒度单元测试中重构这种代码量似乎不太可能。我们的第一个想法是找到一种构建自动化测试的方法,该测试只需使用一组给定的参数调用每个 Web 服务,从而为我们提供一定程度的代码覆盖率。似乎是通过一些自动化测试获得最高代码覆盖率的最快方法。这甚至称为单元测试还是会被视为其他东西?

我将如何隔离数据存储以获得一致的测试结果?是否有任何测试工具比其他工具更适合这种方法? x单位? MS 测试?单位?

我们将不胜感激任何能让我们朝着正确方向开始的建议。谢谢

最佳答案

我的公司一直在用我们的代码库(C 而不是 C#)做一些类似的事情,总计大约一百万行。步骤是这样的:

1) 像您描述的那样编写一些自动化测试来进行系统级测试。
2) 实现新代码必须进行单元测试的规则。
3) 当一个区域有一些错误时,修复这些错误的过程应该包括编写基本的单元测试。

重点是 3 不应该要求完整的单元测试(如果人们会更容易做到的话)。如果您将特定模块的测试覆盖率从 0% 提高到 40%,那么您已经取得了很大进步。

虽然 6 个月的时间可能只占总代码库的 5%,但 5% 是变化最多的代码,也是最有可能引入错误的地方。我现在处理的代码大约有 60% 被集成测试覆盖,15%(按行)被单元测试覆盖。这看起来并不多,但它确实提供了重要的值(value),我们的开发工作也从中受益。

编辑:作为对其他评论之一的回应,我们目前运行的一组集成测试大约需要 14 个小时。我们现在正在考虑并行运行一些以加快它们的速度。

关于c# - 开始在现有代码库中进行自动化集成/单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348089/

相关文章:

c# - 单元测试时 EF Core 记录 SQL 查询

c# - C#中支持两个相邻字母Transposition的Levenshtein编辑距离算法

angularjs - 如何正确应用范围以便顺序无关紧要

c# - 如何在 C# for 循环中初始化多个不同类型的变量?

css - Web 应用程序样式和布局的回归测试

c# - 单元测试 - 绑定(bind)程序集时忽略区域性

c# - 最小起订量:设置一个模拟方法以在第一次调用时失败,在第二次调用时成功

c# - 如何使用 It.IsIn(someRange) 对多个字段迭代 POCO 属性的组合?

C# 使用 block 上下文,在另一个使用 block 上下文

c# - Newtonsoft.Json 无法在本地 Azure Functions 应用程序中加载