0%

测试自动化的本质

测试自动化的本质


在讨论测试自动化的本质之前、我们先看一下维基百科对测试的定义;

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件品质,并对其是否能满足设计要求进行评估的过程。

测试的本质是什么?

对于测试工作我们可以简单的认为两种情况:

  1. 验证被测程序是正确的(即程序按照预期运行做了正确的事情)
  2. 寻找错误(即程序没有做错误的事情)

我们所设计的测试用例大部分都是按照情况1在编写,执行的,
但是同时做着情况2的事情,其中验证正确比较简单,只需要将实际结果和预期结果做比较;
而寻找错误就比较困难,因为太多不可预知或者偶然性的错误会发生。

测试执行过程

我们用一个登录窗口来说明测试过程、大概可以分为三个部分:

  1. 确认登录窗口位置
  2. 输入帐号密码并点击登录
  3. 验证登录结果

在手工测试过程中我们通过人眼来确认登录窗口位置、并在键盘上输入帐号密码并点击登录按钮;
最后通过人眼来观察是否登录成功、以此来判断这条用例是否成功。

要实现测试自动化,就要将这三个步骤通过程序来实现,并且高效地结合起来。

测试自动化

要实现测试自动化,就要将前面说的三个步骤通过程序来实现,并且高效地结合起来。

我们要理解测试自动化,就必须理解“自动化”和“测试”,
其中“自动化”可以想象成通过各种编程技术和工具实现程序对被测系统可操控的行为;
重点在于对“测试”的理解。

自动化测试大致可以分为如下集中类型

  1. 单元测试自动化
  2. 接口测试自动化
  3. UI测试自动化

在测试的日常工作中接口测试自动化和UI测试自动化做得更多一些。

以接口测试为例:

  1. 批量的发送请求并获取返回值
  2. 批量得到预期结果并转为机器可识别的数据
  3. 批量比较返回值和预期结果数据
  4. 将比较结果生成测试报告

UI测试自动化,以WebUI为例:

需要实现web操作,无论你是自己写程序实现,还是用现有的工具,
都是将动作、对象、数值组织起来完成一个web操作。

如登入网站,分3个步骤,

  1. 定位输入框位置
  2. 输入帐号密码并点击登录按钮
  3. 判断结果

测试自动化常见应用场景

  1. 服务器端要求稳定性高
  2. 软件生命周期长
  3. 软件需求变化不大
  4. 测试用例巨大
  5. 操作繁琐易错
  6. 大量重复性用例执行
  7. 大量回归测试工作

对于这些情况引入测试自动化绝对是明智之举。

总结

如果想用自动化测试去发现错误,首先就必须由人来想到可能出现错误的各种情况,然后用自动化去检查。这样其实就不是用自动化去发现错误了,而是由人去寻找错误(或者错误的可能性),然后用自动化去验证。

但自动化的成果只能局限在人工能够预测到的范围之内。所以,能否发现bug,最核心的东西是用例,而不是工具或方法,只有用例能够发现bug,工具只是实现的手段而已。

因此,我们首先要提升设计测试用例的能力!

参考文章

测试自动化

维基百科(软件测试)