软件测试从零开始之六:自动化测试

上一篇 / 下一篇  2014-03-16 18:06:20 / 个人分类:软件测试从零开始

从目前来看,自动化的开展在各个公司的差别应该比较大,大概可以分为如下几个阶段吧,请对号入座。

1、基本上还没有开始自动化,完全处于纯手工测试状态,这个阶段称为纯手工测试阶段。

2、开始能够去写一些自动化脚本或者一些自动化工具(比如:qtp)去覆盖一些功能或者用例。这个阶段称为自动化的起步阶段。

3、开始有了自己的自动化测试平台或者框架(自动化的平台好坏对后面自动化的持续开展有非常大的影响);自动化已经具备一定的规模,但是管理比较乱,并且维护成本比较高(自动化人员还比较少),这个阶段称为自动化的发展阶段。

4、自动化平台非常成熟,包括自动化的各种管理规范和规模,以及自动化人员已经非常普及(即,自动化已经作为一个测试人员的基本技能),这个阶段称为自动化的成熟阶段。

5、自动化已经能够做到持续自动构建和智能分析结果,并且脚本稳定,基本不再需要人工干预,能够大量节省自动化的分析时间。

下面分别详细说明下,每个阶段我们能够做什么来提高我们的自动化测试能力。

纯手工测试阶段:

    这个阶段整个团队还没有去开展自动化相关的工作,并且也没有这方面的经验。而且一般情况下,团队的人员还不是很多,估计也没有足够的人力去专门的投入到自动化里面去。

作为该团队的一个成员,我们就可以去编写一些简单的测试脚本来代替我们的手工测试,并且分享给团队其他成员。这样既能够提高我们的测试效率,也能够激发其他人去编写和分享测试脚本的热情。

 经过一段时间后,随着测试脚本的增加,可能会出现有的脚本无法使用,或者一个功能有了多个测试脚本,大量的浪费了人力成本。不利于脚本的推广。

这个时候,我们就可以开始去制定一些脚本的编码规范,然后将脚本实现统一的管理。比如:

l 将所有的测试脚本全部放到统一的共享目录去管理(可以搭建一个svn服务器),并且有个索引文档,分别说明脚本的功能,脚本名称,责任人和更新人等等。

l 所有的脚本需要有一些简单的测试结果。

l 所有的脚本都需要满足对应的规范,可以去做个脚本的checklist,比如:包括功能说明,脚本的注释,函数和变量命名的规范等等。然后根据我们过程中碰到的问题来不断的补充和完善。

l 其他人需要实现某一个功能的时候,需要优先到该目录去寻找有没有对应的脚本,如果有的话则直接去使用,或者可以在该脚本基础上面做二次开发,来实现新的功能。

通过上面的几种方式花费的时间是比较少的,但是能够很快的看到效果。而且上面应该也会比较高兴,可能就会更加支持自动化的工作了。

自动化的起步阶段:

 根据前面的方法,当脚本达到一定规模后,这个时候,团队可能就会有一些这方面的人才冒出来了。那么我们就可以开始尝试去寻找或者开发一个好的自动化平台来满足我们后面的自动化要求了。

自动化的平台工作是一个很重要的工作,它的结果好坏可能会直接影响到后面的整个自动化工作,所以我们应该将其当成一个完整的项目来对待,并且邀请对应的开发大牛来一起参与相关的工作。自动化平台应该要具备下面的几个特点:

l 自动化用例的管理和维护:一个好的自动化平台肯定是应该要集成对应的自动化用例的,所以也需要像我们的用例管理平台一样的方便。

l 自动化平台的性能和稳定性,特别是要考虑当自动化用例达到一定规模的时候执行效率是否依然比较高。

l 易用性,如果自动化平台要全面推广的话易用性也是很重要的,就像一个产品一样,如果很难用或者学习成本很高的话估计客户也不愿意去使用。

l 

如果有机会去参与自动化平台的建设的话,应该主动去争取(当然,也需要自己前面就积累这样的技术)。这会是一个非常好的机会让自己去理解整个项目的过程。并且对于自己的自动化开发能力提高也是一个非常好的机会。
自动化的后期阶段:

当自动化平台已经完成后,这个时候自动化应该就会处于一个飞速发展的时期,也会有大量的机会让自己去接触自动化的工作,自己只需要抓住机会,多写代码,多总结。来积累自己的自动化开发经验,一段时间后应该就能够完全去胜任自动化的工作了,而且如果想持续在自动化领域去发展的话,也可以开始进行深一步的学习了(其实这个时候,自己已经算是一个开发了)。

个人在自动化方面的经历:

   因为性能测试后,开始去接触项目管理的工作,所以在自动化这块接触的相对比较少,但是见证了整个自动化从无到全的过程。

   最开始的时候是选择统一用ruby语言去做自动化项目(为了日后的统一和大家学习的方便)。当时的自动化主要还是以脚本为主,基本上就是一个ruby脚本通过调用一些接口和内置库来实现了一系列的功能,比如:ruby+watir的方式,ruby里面的一些网络相关的操作等等,这个算是自动化的起步阶段,但是这个阶段因为对大家的要求都比较低,也让更多人来更好的上手,对ruby语言的推广和研究有了很大的帮助,记得当时自己就是用ruby+watir的方式去实现了outlook自动收发邮件的功能。

    然后就是开始将一些小的功能点通过独立的函数来实现,然后一起组装起来形成一个项目。并且将一些比较常用的函数提取出来形成公共的函数,这个算是第一次将自动化工程化吧!

   后面开始从内部寻找一些这方面做的比较好的测试人员形成专门的自动化测试部门,主要是负责自动化平台的开发。自动化平台开发完成后,整个自动化就基本规范下来了。包括:整个自动化以关键字为驱动、所有的关键字都需要符合规范(包括注释等)、再上库前都需要经过单元测试(自动化平台会自动检查),所有的人都能够查到公共的关键字和调用等。

    等到自动化平台完善后,每个部门就开始大力开发自动化的项目,不到2年的时间就让整个自动化成为了大家的一个习惯,部门的具备自动化开发能力的人员已经达到50%以上,并且自动化已经成为项目中的一个习惯。

    从目前来看,整个自动化应该是非常成熟了,并且在提升效果方面作用非常大,后面的方向应该主要就是基于接口的自动化测试。

这里说下笔者对自动化的几个看法:

1、有开发经验的人去做自动化会更加快,并且带来的效果会更加明显。如果没有经验的测试人员去做自动化的开发,可能前期需要投入更多的精力。

2、自动化需要具备一定规模后才能够开始带来效益,可能相当一段时间内的投入产出都是不成比例的。

3、自动化的工作很重要,能够更好的让测试人员从重复劳动中解放出来,做更加有技术含量的工作。

4、不要一味的追求自动化率,在开始做自动化前一定要提前分析可能带来的收益,最好是先做收益比较大的,这样更容易得到支持和产出效益。

5、自动化不可能代替手工测试。

 


TAG:

引用 删除 忆流   /   2014-03-24 10:58:39
5
 

评分:0

我来说两句

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 12024
  • 日志数: 14
  • 建立时间: 2014-03-16
  • 更新时间: 2014-03-16

RSS订阅

Open Toolbar