对于一些协议或接口相关的功能测试(比如:XML或socket接口等),是较为容易实现自动化测试的,封装好底层的协议提供给自动化测试脚本调用,即使是协议会有变化,改动起来还是很简单的,维护的成本相对较低。
总的来说,在软件功能达到相对的稳定,没有严重错误和逻辑错误后开始自动化测试,性价比是比较高的。
2.3 自动化测试的覆盖率
自动化测试的覆盖率是很多管理层所关心的,很多项目或产品的自动化测试目标之一就是自动化测试的覆盖率。从管理的角度来说,100% 的自动化目标只是一个从理论上可能达到的,但是实际上达到 100% 的自动化的代价是十分昂贵的。自动化测试覆盖率越高,测试脚本的维护成本也就越大。由于对每一个构建版本的需求变化的复杂度,你将花费更多的时间在变更测试用例上以使他们能够正确的运行。
自动化测试的覆盖率的大小与自动化测试的成本有着很大的联系。自动化测试的覆盖率为多少比较恰当,也要看被测试系统的性质和测试的阶段。
在自动化测试设计的阶段,可以考虑先实现冒烟测试的测试用例自动化,冒烟测试的功能一般是系统的主要功能,是自动化测试设计必须首先实现的,而且通过实现这些功能,也可以检验自动化测试的架构是否合理。
在功能测试的前期,自动化测试脚本的覆盖率最好只是一些关键的并且是相对稳定的功能的测试自动化,用于冒烟测试或关键功能测试。
系统稳定后,如果系统是一个生命周期很长的系统,且测试的功能很容易实现自动化测试,这样的系统的自动化测试覆盖率可以考虑在80%以上。
但如果是一些时间很赶的项目,或者是一些比较难实现自动化测试的功能,也就没有追求高的自动化测试的覆盖率的必要。随着测试案例的增加,维护的成本也会相应增加,特别是一些GUI的测试,自动化比率越高,维护脚本的成本也就越高。
不要追求在很短的时间实现自动化测试,也不要追求100%的自动化测试覆盖率,积累经验循序渐进的自动化测试,效果会更好。
第3章 自动化测试实现基本策略
自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,验证测试脚本的正确性,最终完成自动化测试测试脚本(即主要功能为测试的应用软件)。
3.1 测试系统需求分析
任何测试的基础都是被测系统的功能,不管是手工的功能测试还是自动化测试或者是性能测试,都是基于系统的功能展开的。当测试项目满足了自动化的前提条件,并确定在该项目中需要使用自动化测试时,我们便开始进行自动化测试需求分析。此过程需要确定自动化测试的范围以及相应的测试用例、测试数据,并形成详细的文档,以便于自动化测试框架的建立。
很多公司都是将自动化测试和功能测试划分成两个不同的team,自动化测试team的同事实现自动化测试工具的开发,功能测试team的同事向自动化测试team的同事提需求,自动化测试team的同事编写代码实现自动化测试工具的功能后提交给功能测试team的同事使用,这是当前非常常见的自动化测试的模式,毕竟每个人都有自己擅长的技能,某个人也不可能面面俱到,通过这样的一种方式可能使自动化测试的门槛变得更低一些。自动化测试工具的开发和自动化测试的使用的确是可以由不同的角色去承担,不过作为自动化架构设计的人员,应该是对系统的功能或需求非常熟悉,同时具有良好的设计和开发能力,才可以设计出适合测试系统的自动化测试架构,否则开发出来的自动化测试工具就只是简单的一个工具,某种程度上会增加维护的成本。
漂亮的自动化测试架构的设计是一个渐进的过程,但这个渐进是基于对功能熟悉的基础上,全盘考虑之后一点一点的搭建起来的。
3.2 自动化测试工具的选择
很多测试的同行或以前的老同事都会问,你们用什么自动化测试工具?几年前入门测试时跟着老前辈写自动化测试工具,后来因为兴趣偶尔玩一下当时流行的自动化测试工具,再到现在毫无选择工具的余地设计自动化测试架构,越来越发觉自动化测试工具真的没有那么的重要。工具始终是工具,思想和架构才是自动化测试的核心,同样的工具不同的人使用会出现完全不一样的结果,而且,不管是什么样的自动化测试工具,原理都有异曲同工之处。所以,不需要把工具看得那么重要,而是把怎样使用工具,怎样利用工具为你服务放在首位。也就是你的思想位于工具之上。
但是,是不是这就意味着测试工具一点也不重要呢?当然不是,遇上不稳定或不友好的测试工具,可能会浪费大量的时间在调试工具上,也可能会出现因为工具不稳定导致测试结果的不可信任,那么自动化测试不是提高测试效率反而是阻碍了测试的进度了。
关于工具的选择或开发,基本的原则为:1)首先,能够满足项目的需求,容易扩展,可以满足系统任何重要功能的自动化测试;2)其次,友好易用,容易上手,为测试人员提供较为低的门槛;3)当然最重要的是它的稳定性,是否不需要人工干预就能稳定地批量运行所有的自动化测试脚本,并且能够产出准确的测试报告;4)最后,还有一点就是它的性价比是否值得,免费的软件对公司来说当然是最好:)
市场上有很多测试工具,在这些测试工具中,puretest是一个性价比很高的自动化测试工具。它容易入门,易于扩展,使用简单,运行稳定,基本上可以满足任何包括GUI、协议和业务逻辑的测试。
3.3 自动化测试架构设计
自动化测试架构的设计是整个自动化测试的灵魂核心,它的好坏关系到自动化测试的成败。从系统的基本功能入手,设计自动测试架构,这是软件测试的关键一步。架构的好与坏很重要,它影响到系统的扩展、维护和使用,如果想要系统容易扩展和维护,一定要多花心思在设计上。很多同行问我使用什么测试工具,我会告诉他们,用什么测试工具其实并不那么重要,不同的人使用同样的测试工具,会做出效果完全不一样的自动化测试,那是因为他们的架构不同,设计比工具重要得多。
怎样的自动化测试架构才算是一个好的架构?首先是容易扩展,能够满足现在的功能需求,也能满足以后需要测试的功能的需求。第二,容易维护,当业务流程、接口或页面变动的时候,只需要做一些简单的修改就可以实现。第三,可读性强,别人能够容易读懂和接手维护。第四,容易使用,项目组的其他人想要使用的时候能够简单地搭建和运行。第五,有统一的编码规范、存储规范和编写风格。第六,方便调试,当脚本运行出现问题的时候,可以方便跟踪问题产生的根源。第七,结构清晰,测试用例与测试工具和代码分离。最后,是最重要的一点,是脚本具有很高的可信性以及自动运行的稳定性。