背景:我们收到了一个非常大的代码库(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/