自动化测试概述

自动化测试概述

1   自动化测试介绍

         什么是自动化测试,一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程,其特点就是效率高,大数据覆盖,时间短。

2   自动化测试作用

      可能有人会说,我们手工测试也可以保证质量,为什么要进行自动化测试呢,的确手动测试确实某些范围是比较实用的,但当项目功能积累到一定量且还需要往下迭代,且迭代周期越来越短,但测试用例却越来越多了,这样对手工测试将是一场噩梦。除了上面的,自动化测试还可以为我们带来方方面面的便利,总结下几点:

  •      避免手工测试错误率

              1、正确率会有偏差,就是说总会有那么几次是不小心就忘了一些什么东西,导致测试结果偏差;
          2、注意力被其他事物所分散,尤其在并行任务较多的时候很容易发生考虑不周全或者忽视了一些比较隐蔽的问题;
          3、不够耐心细致,上节说到反反复复的测试,或者受心情影响,使得测试人员产生懈怠的状况,这样测试出来的结果很难保证就是没有问题的;

  • 避免重复工作

              自动化测试的好处就能替代人去做一些反反复复的工作,可以不眠不休不厌倦;这样可以解放出一部分测试执行人员,这样其它测试人员可以去完善测试代码,持续优化整个测试及项目相关环节。

  • 提高测试效率

             持续迭代中版本的发布周期短,整个开发周期只有几个月,测试期间基本是每一两天就要发布测试版本,一个系统之前所有功能点有两千多或更多个,这是手工测试是非常的耗时,这样必然会使测试效率低下,而如果采用了自动化测试将缩短这个周期。

  • 解决测试与开发之间的矛盾

            通常在开发的末期,进入集成测试阶段, 由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间. 事实上在叠代周期很短的开发模式中,存在更多的矛盾, 但自动化测试可以解决其中的主要矛盾。

  • 将烦琐的业务流程转化为自动化测试

            大量重复的测试是非常繁琐的,并且需要消耗 大量的人力才能够完成。自动测试能够很好的解决这个问题,不需要繁琐的劳动,不需要大量的人员。

  • 利用空闲资源(周未/晚上)

           公司资源有限,一般正常工作时段资源都比较紧张,但到了晚上或周末,资源出现了空闲,而自动化测试在晚上和周末也能进行,大大利用了空闲资源。

3    自动化测试难点

         既然自动化测试有那么多好处,为什么很多公司都没有实施自动化测试呢,因为实施自动测试除了有些项目自身不适应外,还有一些难点,总结下主要有以下几点:

  • 测试脚本维护工作量大

           自动化测试在编写脚本或写测试用例的时候需要跟开发人员人间作深入的沟通, 了解软件的逻辑实现和模块之间的接口, 如UI的控件实现方式变化之后,开发人员应及时通知测试开发人员, 对测试的脚本进行调整和维护, 对开发人员提交文档的规范性有更高的要求。

  • 测试人员有较好开发能力

            目前国内测试行业起步较晚,很多测试人员都不写代码,导致招聘人员上存在一些困难,所以企业要推行软件自动化测试,不是一件容易的事, 领导不但需要支持建立测试开发团队,而且需要招聘有经验的自动化测试人员,并树立自动化测试部门的权威性,真正给企业带来效益,降低人工测试的成本。

  • 投入周期长

           有些项目上线周期很短,可能某个需求开发完成后,自动化测试脚本可能还没有写好或覆盖的用例不全或自动化脚本自身存在问题,这样导致了自动化测试在前期很难体现出作用;但是,当一个项目经过多次迭代后,测试用例可能已经成千上万了,每一次版本提测都需要把所有用例执行一遍,这时候自动化测试才体现出来价值,所以自动化测试适合迭代次数多且周期比较长的项目,这样必然要求自动化测试投入周期长,且前期效果不明显。

4  自动化测试工具介绍

         目前比较流行的web页面自动化测试工具有QTP,Selenium:

         其中QTP,商业工具,笨重,但是功能强大,易上手,是一套完整的自动化解决方案,且适用于C/S,B/S结构
对象属性和对象定位的策略,测试对象和运行时对象,如何做些对象递归操作,VBS,最大的缺点是VBS语法体系,不太适合写大项目,而且效率很低,所以QTP现在很容易被代替。
         selenium2,开源工具,轻量级,适合多种语言编写,能在多种主流浏览器上运行,但是只支持B/S系统,且需要一定的编程基础,上手比较难。

         开源测试框架:python有Unittest,Robot Framework ,doctest,Test Discovery ,pytest等,java开源测试框架有jmeter,junit,testNG,Powermock,EasyMock等。

         测试开发常见模块包,java有 httpunit ,(Apache HttpClient 4.5.3 API)NIO,MINA ,protobuf-java,mysql-connector-java,javax.websocket,fastjson,json,xmlParserAPIs;python 有urllib2,httplib,os,shutil,struct.pack,MySQLdb,sqlite3,websocket等。

         再加持续集成工具jenkins,其提供了自动编译,构建,打包,部署,自动测试,发布测试报告,邮件通知相关功能。以下是自动测试流程结合工具常见的模型,其参见图:

      

         由上图可以看出,加入自动化测试后,开发测试活动的各个环节将无缝自动连接,很好的节省了时间。在收到测试报告后,如有测试失败的情况,分析原因后修改开发代码或测试代码后,整个流程重新自动来一遍即可。

posted @ 2017-02-21 11:19  李涛军  阅读(635)  评论(0)    收藏  举报