在现有代码库中开始自动集成/单元测试

nol*_*lan 4 c# nunit unit-testing mstest xunit.net

背景:我们已经交付了一个非常大的代码库(140万行),主要是在C#中.该应用程序主要包括访问SQL Server 2008数据库中的数据以及各种XML文件的asp.net 2.0样式asmx Web服务.没有现有的自动化测试.我们有一个自动夜间构建(CC.NET).

我们想要引入一定程度的自动化测试,但是对于这么多代码的粒度级单元测试进行重构似乎不太可能.我们的第一个想法是找到一种方法来构建自动化测试,只需使用给定的参数集调用每个Web服务,以便为我们提供一定程度的代码覆盖率.似乎是通过一些自动化测试获得最高代码覆盖率的最快方法.这甚至被称为单元测试还是会被认为是别的?

我如何分离数据存储以获得一致的测试结果?对于这种方法,任何测试工具都比其他测试工具更好吗 的xUnit?MS测试?NUnit的?

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

Dan*_*iel 11

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

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

关键是3不应该要求完整的单元测试(如果人们更容易做到这一点).如果您从0%的测试覆盖率转移到特定模块的40%覆盖率,那么您已经取得了很大的进步.

虽然你在6个月内可能只占总代码库的5%,但是5%的代码变化最大,而你最有可能引入错误.我现在使用的代码大约60%由集成测试覆盖,15%(按行)覆盖单元测试.这似乎不是很多,但它确实提供了重要的价值,我们的开发工作也从中受益.

编辑:响应其他评论之一,我们运行的当前集成测试集当前大约需要14个小时.我们现在正在考虑并行运行一些以加速它们.

  • +1只是为了成功的故事和坚持不懈. (4认同)