一、自动化测试概念
二、自动化测试优势
三、常见问题
四、自动化测试分类
功能自动化:
性能自动化:
五、自动化测试流程
六、测试工具概览
自动化测试是指一切把人为驱动的测试行为转换成机器程序去驱动测试的过程,小到可以通过脚本生成一些测试数据,大到根据测试用例生成测试脚本并驱动测试行为。
自动化测试在提升软件测试团队效率方面有很多优势
1.快速的进行回归测试
2.快速反馈测试结果
3.可以支持几乎无限制的测试用例迭代执行
4.可以有效的支持敏捷、极限编程思想
5.自定义的缺陷报告
6.解决手工测试无法完成的工作(性能测试-高并发的测试,需要模拟大量的虚拟用户来进行测试,单元测试)
1.需要什么样的自动化测试?
2.什么样的系统适合自动化测试
3.改选择什么样的测试工具较为合适?
4.自动化测试覆盖程度如何?
按照测试目的分为:功能自动化,性能自动化
按照测试对象分为:Web应用测试,APP测试,接口测试,单元测试等。
测试目的是发现软件中实现功能是否符合需求规格,比较大的误区是很多人以为是针对用户界面功能是否满足需求来进行测试的,其实不然,功能自动化的测试入口点有很多,不能讲思维局限于用户界面,而是应该放在软件系统的各个组成部分。
实践证明,基于系统UI的自动化测试只能发现软件中极少的缺陷,往往实施UI自动化测试的目的不是去发现软件系统中的缺陷,更多是为了验证系统是否可以正常运行。
除了可以基于UI进行自动化测试,还可以基于网络服务接口提供者进行测试,比如Grpc服务,Webservice接口,Restful等,基于接口进行功能测试较为常见,也是非常有效的手段。
另外还可以基于系统基础代码进行测试,比如单元测试,集成测试阶段,这一阶段的测试也称白盒测试,我们可以直接对DAO、Service服务进行测试,这里常用的测试技术包括Junit,TestNG,Mock,Stub等
性能自动化测试是通过测试工具模拟高并发负载进行压力测试,以发现软件系统在高负载情况下运行瓶颈,这里系统瓶颈包含多个部分,应用程序本身的性能瓶颈、网络瓶颈,服务器硬件资源瓶颈(CPU,MEM,DISK),数据存储服务器等,这一测试活动通常唯有借助自动化测试工具来完成,常见的性能测试工具有Loadrunner,Jmeter,Mgrinder,Gatling等,不管哪一款测试工具,基本有三大部分组成:测试脚本管理,测试场景配置,监控结果。
与功能自动化类似的是,性能测试工作对象也可以面向用户UI层,或者服务接口提供方,甚至可以直接面向底层基础业务逻辑层,绝大多数通过用户层进行性能测试模拟的是最接近真实用户场景的测试,也是性能测试必然实施的阶段,另外面向接口的性能测试也是发现系统性能瓶颈很有效的阶段,应当结合实际工作需求有选择性的开展。
1.制定测试计划
在开展自动化测试之前,最好有个测试计划,明确测试对象,测试目的,测试的项目内容,测试的方法,测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,下发给用例设计者。
2.分析测试需求
用例设计者根据测试计划和需求说明书,分析测试需求,设计测试需求树,以便用例设计时能够覆盖所有的需求点,一般来讲,基于Web功能测试需要覆盖以下几个方面:
1)页面链接测试,确保各个链接正常
2)页面空间测试,确保各个控件可靠
3)页面功能测试,确保各项操作正常
4)数据处理测试,确保数据显示准确、处理精度可靠
5)模块业务逻辑测试、确保各个业务流程畅通
3.设计测试用例
通过分析测试需求,设计出能否覆盖所有需求点的测试用例,形成专门的测试文档,由于不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例。必要时,要将登录系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发。
4.搭建测试环境
自动化测试人员在用例设计工作开展的同时即可着手搭建测试环境,因为自动化测试的脚本编写需要录制页面控件,添加对象。测试环境的搭建,包括被测试系统的部署、测试硬件的调用、测试工具的安装盒设置、网络环境的布置等。
5.编写测试脚本
根据自动化测试用例和问题的难易程度,采取适当的脚本开发方法编写测试脚本,一般先通过录制的方式获取测试所需要的页面控件,然后再用结构化语句控制脚本的执行,插入检查点和异常判定反馈语句,将公共普遍的功能独立成共享脚本,必要时对数据进行初始化。当然还可以用其他高级功能编辑脚本,脚本编写好了之后,需要反复执行,不断调试,直到运行正常位置。脚本的编写和运行要符合管理规范,以便同一管理和维护。
6.分析测试结果,记录测试问题
应该及时分析自动化测试结果。如果采用开源自动化测试工具,建议对其进行二次开发,以便与测试部门选定的缺陷管理工具紧密结合。理想情况下,自动化测试案例运行失败后,自动化测试平台就会自动上报一个缺陷,测试人员只需每天抽出一定的时间,确认这些自动上报的缺陷,是否是真实的系统缺陷。如果是系统缺陷就交给开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。
性能测试工具:
Loadrunner、Jmeter、Ngrinder,Gatling,每款测试工具都存在一定的差异及其局限性
功能测试工具:Selenium,QTP
APP自动化测试工具:
Appium,UI,Automator,MnkeyRunner,Android UI测试推荐使用UI Automator,是Android提供的自动化测试框架,基本上支持所有的Android时间操作,IOS应用程序可以选择使用Appium
Junit,TestNG,OKhttp,HttpClient,Spring Restful等,需要有一定的编码经验,当然也有现成的工具,比如Postman,HttppRequester,SoupUI等。
单元测试工具:Junit,TestNG,EasyMock,Mockito,JMockit等