Ken*_*ran 9 integration-testing automated-tests unit-testing acceptance-testing
如果我对每个类和/或成员函数进行单元测试以及每个用户故事的验收测试,我是否有足够的测试来确保项目按预期运行?
例如,如果我有功能的单元测试和验收测试,我还需要集成测试,还是单元和验收测试应该覆盖相同的地面?测试类型之间是否有重叠?
我在这里谈论自动化测试.我知道仍然需要手动测试,比如易用性等.
多个测试周期的想法是在事情发生变化时尽早发现问题.
单元测试应该由开发商来完成,以确保各单位的工作孤立.
验收测试应由客户进行,以确保系统满足要求.
但是,在应该测试的两点之间发生了一些变化.这是在给予客户之前将单元集成到产品中.
这应该首先由产品创建者而不是客户端进行测试.你赢得客户端的那一刻,事情变慢了,所以你可以做的更多的修复,然后才能得到他们粗暴的小手,就越好.
在大型商店(如我们的商店)中,在可交付产品发生变化的每个点上都有单元测试,集成测试,全球化测试,主构建测试等.只有修复了所有高严重性错误(以及修复低优先级错误的计划),我们才会将产品释放给我们的Beta客户端.
我们不希望给他们一个狡猾的产品仅仅是因为固定在那个阶段的一个错误是贵了不少(尤其是在文案方面)比我们在内部做.
我建议阅读第二版Code Complete中的第20-22章.它非常适合软件质量.
以下是一些关键点的快速细分(所有信用都归功于McConnell,2004)
第20章 - 软件质量格局:
第21章 - 协作构建:
第22章 - 开发人员测试:
至于您如何制定单元测试,您应该考虑基础测试,数据流分析,边界分析等.所有这些都在本书中详细解释(其中还包括许多其他参考资料以供进一步阅读).
也许这不是你所要求的,但我认为自动化测试绝对不足以成为一种策略.您还应该考虑结对编程,正式评审(或非正式评审,取决于项目规模)和测试脚手架以及自动测试(单元测试,回归测试等).