什么是自动化测试,通常说来全部能替代人工测试的方式都属于自动化测试,即经过工具和脚原本模拟人执行用例的过程,其特色就是效率高,大数据覆盖,时间短。java
可能有人会说,咱们手工测试也能够保证质量,为何要进行自动化测试呢,的确手动测试确实某些范围是比较实用的,但当项目功能积累到必定量且还须要往下迭代,且迭代周期愈来愈短,但测试用例却愈来愈多了,这样对手工测试将是一场噩梦。除了上面的,自动化测试还能够为咱们带来方方面面的便利,总结下几点:python
一、正确率会有误差,就是说总会有那么几回是不当心就忘了一些什么东西,致使测试结果误差;
二、注意力被其余事物所分散,尤为在并行任务较多的时候很容易发生考虑不周全或者忽视了一些比较隐蔽的问题;
三、不够耐心细致,上节说到反反复复的测试,或者受心情影响,使得测试人员产生懈怠的情况,这样测试出来的结果很难保证就是没有问题的;mysql
自动化测试的好处就能替代人去作一些反反复复的工做,能够不眠不休不厌倦;这样能够解放出一部分测试执行人员,这样其它测试人员能够去完善测试代码,持续优化整个测试及项目相关环节。web
持续迭代中版本的发布周期短,整个开发周期只有几个月,测试期间基本是每一两天就要发布测试版本,一个系统以前全部功能点有两千多或更多个,这是手工测试是很是的耗时,这样必然会使测试效率低下,而若是采用了自动化测试将缩短这个周期。sql
一般在开发的末期,进入集成测试阶段, 因为每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间. 事实上在叠代周期很短的开发模式中,存在更多的矛盾, 但自动化测试能够解决其中的主要矛盾。 编程
大量重复的测试是很是繁琐的,而且须要消耗 大量的人力才可以完成。自动测试可以很好的解决这个问题,不须要繁琐的劳动,不须要大量的人员。json
公司资源有限,通常正常工做时段资源都比较紧张,但到了晚上或周末,资源出现了空闲,而自动化测试在晚上和周末也能进行,大大利用了空闲资源。浏览器
既然自动化测试有那么多好处,为何不少公司都没有实施自动化测试呢,由于实施自动测试除了有些项目自身不适应外,还有一些难点,总结下主要有如下几点:websocket
自动化测试在编写脚本或写测试用例的时候须要跟开发人员人间做深刻的沟通, 了解软件的逻辑实现和模块之间的接口, 如UI的控件实现方式变化以后,开发人员应及时通知测试开发人员, 对测试的脚本进行调整和维护, 对开发人员提交文档的规范性有更高的要求。框架
目前国内测试行业起步较晚,不少测试人员都不写代码,致使招聘人员上存在一些困难,因此企业要推行软件自动化测试,不是一件容易的事, 领导不但须要支持创建测试开发团队,并且须要招聘有经验的自动化测试人员,并树立自动化测试部门的权威性,真正给企业带来效益,下降人工测试的成本。
有些项目上线周期很短,可能某个需求开发完成后,自动化测试脚本可能尚未写好或覆盖的用例不全或自动化脚本自身存在问题,这样致使了自动化测试在前期很难体现出做用;可是,当一个项目通过屡次迭代后,测试用例可能已经成千上万了,每一次版本提测都须要把全部用例执行一遍,这时候自动化测试才体现出来价值,因此自动化测试适合迭代次数多且周期比较长的项目,这样必然要求自动化测试投入周期长,且前期效果不明显。
目前比较流行的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,其提供了自动编译,构建,打包,部署,自动测试,发布测试报告,邮件通知相关功能。如下是自动测试流程结合工具常见的模型,其参见图:
由上图能够看出,加入自动化测试后,开发测试活动的各个环节将无缝自动链接,很好的节省了时间。在收到测试报告后,若有测试失败的状况,分析缘由后修改开发代码或测试代码后,整个流程从新自动来一遍便可。