单元测试和验收测试是否足够?

Ken*_*ran 9 integration-testing automated-tests unit-testing acceptance-testing

如果我对每个类和/或成员函数进行单元测试以及每个用户故事的验收测试,我是否有足够的测试来确保项目按预期运行?

例如,如果我有功能的单元测试和验收测试,我还需要集成测试,还是单元和验收测试应该覆盖相同的地面?测试类型之间是否有重叠?

我在这里谈论自动化测试.我知道仍然需要手动测试,比如易用性等.

tro*_*skn 13

如果我对每个类和/或成员函数进行单元测试以及每个用户故事的验收测试,我是否有足够的测试来确保项目按预期运行?

不.测试只能验证您的想法.不是你没有想到的.


pax*_*blo 8

多个测试周期的想法是在事情发生变化时尽早发现问题.

单元测试应该由开发商来完成,以确保各单位的工作孤立.

验收测试应由客户进行,以确保系统满足要求.

但是,在应该测试的两点之间发生了一些变化.这是在给予客户之前将单元集成到产品中.

这应该首先由产品创建者而不是客户端进行测试.你赢得客户端的那一刻,事情变慢了,所以你可以做的更多的修复,然后才能得到他们粗暴的小手,就越好.

在大型商店(如我们的商店)中,在可交付产品发生变化的每个点上都有单元测试,集成测试,全球化测试,主构建测试等.只有修复了所有高严重性错误(以及修复低优先级错误的计划),我们才会将产品释放给我们的Beta客户端.

我们希望给他们一个狡猾的产品仅仅是因为固定在那个阶段的一个错误是贵了不少(尤其是在文案方面)比我们在内部做.


Jas*_*own 8

我建议阅读第二版Code Complete中的第20-22章.它非常适合软件质量.

以下是一些关键点的快速细分(所有信用都归功于McConnell,2004)

第20章 - 软件质量格局:

  • 没有单一的缺陷检测技术本身是完全有效的
  • 越早发现缺陷,代码的其余部分就会越少,它所造成的损害就越小

第21章 - 协作构建:

  • 协作开发实践往往会发现比测试更高的缺陷百分比并更有效地找到它们
  • 协作开发实践往往会发现不同于测试的错误,这意味着您需要同时使用评论和测试来确保软件的质量
  • 结对编程通常与检查成本大致相同,并产生类似的质量代码

第22章 - 开发人员测试:

  • 自动化测试通常很有用,对于回归测试至关重要
  • 改进测试过程的最佳方法是使其经常化,测量并使用您学到的东西来改进它
  • 在代码之前编写测试用例与在代码之后编写测试用例需要相同的时间和精力,但它缩短了缺陷检测 - 调试 - 校正 - 循环(测试驱动开发)

至于您如何制定单元测试,您应该考虑基础测试,数据流分析,边界分析等.所有这些都在本书中详细解释(其中还包括许多其他参考资料以供进一步阅读).

也许这不是你所要求的,但我认为自动化测试绝对不足以成为一种策略.您还应该考虑结对编程,正式评审(或非正式评审,取决于项目规模)和测试脚手架以及自动测试(单元测试,回归测试等).