《程序员的职业素养》八——测试体系

  QA也是开发团队的一部分,并非彼此对立、敌对的关系。专业开发团队应遵循TDD为需求创建单元测试,使用验收测试定义系统需求,使用持续集成保证质量稳步提升,此外还需要创建一个更高层次的测试体系。这个体系中包括单元测试、组件测试、集成测试、系统测试和探索式测试。
在这里插入图片描述

1、单元测试

位于金字塔底部,由程序员使用和系统相同的语言编写,其目的是在最低层次上来定义系统。这些单元测试会作为持续集成的一部分来运行。

通常而言,单元测试的测试覆盖率应保持在90%以上。

2、组件测试

组件测试是验收测试的一部分,通常是针对系统的各个组件而编写的,系统组件封装了业务规则,所以对组件的测试就是对其中业务规则的验收测试。

组件测试需要使用模拟(mocking)或测试辅助(test-doubling)技术,解开与系统的其他组件的耦合,然后向组件中传入数据,收集输出数据并校验是否符合预期的输出。

组件测试差不多可以覆盖系统的一半。

3、集成测试

集成测试只对那些组件很多的较大型系统才有意义。

集成测试将组件装配成组,测试他们之间是否能正常通信,它们并不会负责测试业务规则,仅仅测试装配在一起时是否协调;

仍然需要使用合适的模拟对象和测试辅助,与系统的其他组件解耦。

使用与组件测试相同的语言和环境编写,一般不作为持续集成的一部分(因为运行时间较长);

这些测试的执行可以是周期性的,周期视情况而定。

4、系统测试

是针对整个集成完毕的系统而进行的自动化测试,是最终的集成测试,不会直接测试业务规则,而是测试系统是否已经正确组装完毕以及系统各组件之间是否能正确交互;

在这个层次的测试集中,应该包括吞吐率测试和性能测试;

系统测试约占测试的10%;

5、人工探索式测试

这种测试需要人工接入、敲击键盘、盯牢屏幕的测试,是一种非自动化的测试。

覆盖率并非此测试的目标,而是尽可能用富有创造力的方式找出系统的“古怪之处”。

GNG
发布了128 篇原创文章 · 获赞 430 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/so_geili/article/details/105029384