什么是自动化测试?
把以人为驱动的测试行为转化为机器执行的一种过程,自动化测试节省人力、时间或硬件资源,提高测试效率。
优势特点
快速 |
比手工测试操作快 |
可靠 |
精确地执行相同的操作,可以排除手工操作错误 |
可重复 |
测试相同操作重复执行得到软件响应状况 |
可编程 |
可以编程得到应用系统的隐藏信息 |
可重用 |
针对不同版本,测试脚本可重复使用 |
综合测试 |
覆盖应用系统的一套综合测试方案 |
自动化测试分层
-
单元自动化测试(数据处理层):指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如java的Junit、TestNG,python的unittest,常见的手段是code review等
-
接口自动化测试(业务逻辑层):主要检查验证模块间的调用返回以及不同系统、服务间的数据交换,常见的接口测试工具有postman、jmeter、loadrunner等
-
UI自动化测试(GUI界面层):UI层是用户使用产品的入口,所有功能通过这一层提供给用户,测试工作大多集中在这一层,常见的测试工具有UFT、Robot Framework、Selenium、Appium等。
自动化测试分类
功能自动化测试、性能自动化测试、 接口自动化
在开始做自动化测试之前,需要确定以下几个方面
1、什么项目适合做自动化测试?
-
软件需求稳定,不会频繁变更
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要不断更新测试用例以及测试脚本,而脚本的维护实际上是代码开发的过程,需要修改、调试,必要时还要修改自动化测试的框架,所花费的人力、物力大便不值得弄自动化测试。
-
项目进度压力不大、软件维护周期长
自动化测试需求的确定、框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,如果项目周期较短,没有足够时间支持,结果还不如手工测试来的快、简单,就不需要做自动化测试。
-
测试数据、测试用例、脚本的重用性较强
需要在多平台运行相同的测试用例、组合遍历型的测试、大量重复测浏览器的兼容、操作系统的兼容
-
被测系统开发较为规范,可测试性强
主要考虑三个方面,1)所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);2)所选择的测试工具是否适应这种差异;3)测试人员是否有能力开发出适应这种差异的自动化测试框架。
2、技术选型
首先要分析项目的架构和状况。对于一个后端的服务,它如果是纯粹以接口的形式提供给其它组件去调用,那可以采取“接口自动化”;对于一个Web产品,如果前后端都在测试的保障范围,而且前端页面相对比较稳定,可以考虑采用“UI自动化”(此时接口自动化其实已经不足以保障产品的端到端功能);对于更后端的组件,如果想测试组件自身的基础核心功能,可以采用“基于shell交互命令执行的自动化”,通过自动化脚本的方式封装shell命令的调用。
3、工具的选择
桌面程序(C/S)的工具有:QTP、AutoRunner
web应用(B/S)的工具有:QTP、AutoRunner、Robot Framework、watir、selenium
4、编码语言的选择
-
从语言易学性来讲,首选ruby,python
-
从语言应用广度来讲,首选java,C#,php
-
从语言相关测试技术成度:ruby,python,java
-
考虑整个技术团队主流用的语言