【罗马城非朝夕建成,测试体系非一日之功】

【概念】
说到测试,主要的是,检测代码是否满足特定的逻辑,检测代码是否满足业务的需求。
测试还需要有一些附加特性,如:快速响应、可重复运行、可持续维护等。
目前的测试基本可以分为:
单元测试:检测代码片段的测试,基本是以代码结构为衡量,属于百盒测试。
集成测试:集成各个系统的各个模块,各个代码片段的,主要以业务为角度。属于黑盒测试。
验收测试:主要是人工页面验证,用户演示,PD验证等,此主要是测试功能是否正确,以业务为出发点。一般是人工进行,比较难进行自动化。
【现状】

单元测试、集成测试、验收测试,三者之间合理的关系如下:


上图是测试的黄金三角,但是我们由于过去自动化测试只是弄了一个概念,叫单元测试,后大家写测试的时候,弄成了如下的图形了。单元测试写的不成样子,成了一窝粥了。


如果把单元测试中写得像集成测试的抽出来当做集成测试的话,在系统中的测试算得上单元测试的基本没有多少了。那 成了倒三角了。如下图所示:


痛一:单元测试没有发挥单元测试的作用,写得像集成测试的测试也写得四不像的。维护成本非常高,基本不可维护了。
为此,需要把单元测试中写得像集成测试的case,名正言顺的换了名称,叫做集成测试
(不是直接改,做集成测试需要新的方法,这里只是笑谈罢了)。单元测试做好本职的工作,完成代码片段的测试。如果单元测试与集成测试的分工明确,测试代码的可读性也非常高。
痛二:验收测试成本非常高,大量的手工测试,不可重复运行。
此点也需要引入以业务为出发的集成测试,以业务为出发点,减少验收测试的比例。
终:把我们倒三角,变成正三角。
因为集成测试在其中起着非常重要的作用,下面讲下,集成测试的一些讨论及心得。