序言:自动化测试中,自动化测试用例是一个重点中的重点,个人以为,到底如何去定位自动化测试用例设计的形式和发展是决定自动化测试成败的关键,根据一些研究和看法,我写了一个自动化测试用例设计的一个大概情况,当然一家之言而言,当然,大家在测试过程中,接触过自动化测试的,肯定接触过自动化测试用例,其是自动化测试脚本本身也是一种自动化测试用例,看看以下的情况大家遇到过么,希望大家有什么想法,提出来吧。

  一、自动化测试用例应用

  手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者大的各自特点在于,前者具有较好的异常处理能力,而且能够基于测试用例,制造各种不同的逻辑判断,而且人工测试步步跟踪,能够细致的定位问题。而后者是完全按照测试用例的方式测试,而且异常处理能力不强,往往一个自动化测试用例运行完毕后,报一堆错误,对于测试人员来定位错误是一个难点,这样往往发现的问题很少。所以,根据其各自的特点,需要将两者有很好的定位:手工测试是在软件版本前几轮测试的重点,目的是验证功能,发现问题;自动化测试是应用在后几轮版本,保证软件版本模块修改或者添加新功能后,没有影响开始的功能模块(因为软件中,各模块之间的接口以及类、函数方法等的互相引用,也是容易出问题的地方)。

  二、自动化测试用例设计发展

  1、自动化测试用例设计发展前期

  记得,当时的自动化测试开展是针对测试设备设计一套测试环境系统,用于自动化例行测试,根据此,专门撰写了一套自动化测试用例,并转化成自动化测试脚本。之后整套系统都失败了,失败原因包括:

  a、系统太过于庞大,测试用例也过于繁琐,每次测试运行下来,测试结果都夹杂着一大堆各种错误,有可能是产品问题,有可能是脚本问题,也有可能是用例问题,这样下来,测试人员每次运行一遍都要面对大量的问题,维护的几次放弃了,问题越来越多,根本没办法去定位,这样反而浪费了大量的成本和时间。

  b、搭建的一套测试环境系统,各个产品功能模块都互相联系在一起,都互相有影响,容易造成问题。

  c、更重要的是,由于是单独搭建的一套测试环境系统,其自动化测试用例与手工测试用例没有太大关系,这样造成了其自动化测试很难对手工测试进行辅助。

  2、自动化测试用例设计发展前中期

  这时,自动化测试用例来源于手工测试用例,首先,自动化测试根据手工测试用例进行转换而来(举个例子:CLI测试时,自动化测试用例是根据手工测试用例的步骤,将其需要输入的CLI命令和回显进行填写),之后,自动化测试脚本人员根据其自动化测试翻译为脚本。这样做的好处是手工测试用例与自动化测试用例的结合,保证了自动化测试的明确性,后期的改进还包括

  a、将自动化测试用例根据手工测试用例进行了分层,把一些共性功能和全局变量抽象到了更上一层,保证复用性和降低维护性。

  b、设计的自动化测试框架的管理。

  经过一段时间之后,问题还是很大,主要问题在于:

  1)前期为了追求自动化测试覆盖率,往往忽视了自动化测试用例的质量,大家想想,出产一个自动化测试项目,得经过手工测试用例-自动化测试用例-自动化测试脚本三个阶段,而自动化测试用例是手工测试人员来撰写,因为其懂业务;自动化测试脚本是由专门的自动化测试人员撰写,但是这导致了一个项目出产的周期长(需要经过两个阶段,而且还要反复调试),而且由于经过了两个阶段,所以伴随问题也多了,特别是接口这方面,往往由于两者的沟通和认知问题,使得自动化测试项目的发布后还隐藏大量问题,往往使测试人员疲于调试和维护。

  2)虽然是按照手工测试用例设计出来的,但是由于手工测试用例开始没有考虑到自动化测试者一块,因此手工测试用例的每个测试模块往往测试步骤很长,而且测试前后不能保证测试环境的恢复,所以也造成了后期一个自动化测试项目的问题以及出产成本。(这里建议好自动化测试用例的每个功能模块的步骤不长,而且每个模块之间不要有联系,这样是要从手工测试入手的)

  3、自动化测试用例设计发展中期

  在这个过程中,好的是测试人员能够根据自动化测试框架与平台来自行进行测试脚本的设计,往往在前几轮的测试中,手工测试人员能在手工测试的同时将自动化测试脚本设计了出来

  a、录制是这样一种思想,测试人员在测试过程中,本身是在测试过程中,将测试人员的测试过程进行了记录,所以,我的想法一直是,录制的方向是没错的。

  b、而针对CLI测试,也可以制作了这么一个录制工具,是模拟制作一个超级终端,测试人员应用其进行手工测试,其工具自动记录其命令行操作,而且手工测试人员能进行回显的需要匹配的某一个字段进行选择,然后在后台根据模板,自动生成一个自动化脚本,之后测试人员自行进行维护即可,这样可以缩减环节,降低出错几率和维护问题。

  c、当然,要做到这一步,一个强大的自动化测试框架和平台是其支撑,我曾经做过一个基于GUI的自动化测试框架,部门里面也动员过一次试用,每个产品线都出了一两个人进行脚本开发,测试人员往往对脚本开发没什么太大兴致,更多的是一种好奇,而且调试工作大多是我做的,整整10多个产品线,调试了我大部分时间,因此其难点本身不是在于脚本的开发,因为当时测试人员开发出这些脚本是很快的事情,其真正难点在其测试人员的调试和维护方面,而且测试人员往往疲于去进行这方面,他们在乎的是测试和业务本身,要协调这方面的冲突是一件很难的事情,需要不断思考和总结吧。

  4、自动化测试用例设计发展中后期

  留一个中后期,现在的自动化测试用例设计发展还是很浅,还需要一个长远的发展过程,中后期发展成什么形式,因为见识有限,所以请大家积极猜想啦。希望能给我带来一些见识和想法。

  三、一些感想

  下面感想仅我个人之言:自动化测试本身而言,其实技术方面的前瞻性是需要的,但是自动化测试确实是一个长期的过程,对自动化测试的定位很重要,然后是一系列的细节问题,每一个问题都是需要值得重视的问题;定位、细节、技术真的都是缺一不可啊,而且还要把握这么一个平衡,想到自己以前注重需求,后到注重技术,后又因为技术怀疑需求,后又回归到认识需求,短短时间,总有变化,现在想想,三者,技术是基础,需要不断学习,但却不能看的太远而忽略了现在的重要的需求,在实现现在需求的同时,不断步步跟进,进行探索。自动化测试还真是一个“步步惊心”的过程啊。