做自动化测试之前,你需要了解这些内容

什么是自动化测试?

把以人为驱动的测试行为转化为机器执行的一种过程,自动化测试节省人力、时间或硬件资源,提高测试效率。

优势特点

快速

比手工测试操作快

可靠

精确地执行相同的操作,可以排除手工操作错误

可重复

测试相同操作重复执行得到软件响应状况

可编程

可以编程得到应用系统的隐藏信息

可重用

针对不同版本,测试脚本可重复使用

综合测试

覆盖应用系统的一套综合测试方案

自动化测试分层 

  • 单元自动化测试(数据处理层):指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如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

  • 考虑整个技术团队主流用的语言



留言