通用技术 如何做 UAT 的自动化测试

imzack · 2019年12月06日 · 最后由 Ouroboros 回复于 2019年12月09日 · 4710 次阅读

什么是 UAT?

用户验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

UAT 特点

  • 验证在真实场景中软件产品的功能表现。
  • 测试范围广,UAT 力求全面覆盖整个产品,这是使验收测试任务自动化变得如此困难的因素之一。
  • 流程方面,UAT 遵循系统测试。如前所述,用户验收测试是软件投入使用之前的最后一个测试阶段。
  • 自动化用户验收测试可以是回归测试的一部分,在主要版本发布之前,团队可以重新运行 UAT 套件。

执行 UAT 的必要性

可能你会觉得软件经历了单元、集成和系统测试,验收测试的需求就显得多余了。但是还是需要进行验收测试,因为:

  • 开发人员根据需求文档编写软件,需求文档是他们对需求的 “自己” 理解,实际上可能不是客户需要的东西。
  • 项目过程中的需求变更可能无法有效地与开发人员进行沟通。

何时执行 UAT

在整个软件开发的生命周期中,用户验收测试对应的是需求评审阶段。

UAT 执行标准

  • 业务需求必须是可用的。
  • 代码开发全部完成。
  • 完成单元测试、集成测试和系统测试。
  • 没有中,高级的功能缺陷。
  • 在 UAT 之前,只有外观错误是可接受的(页面样式或者文字拼写)。
  • 回归测试应该在没有重大缺陷的情况下完成。
  • 所有已知的缺陷都应该在 UAT 之前进行修复和测试。
  • UAT 环境必须准备好。
  • 来自系统测试团队的邮件或通信,确认系统已准备好执行 UAT。

如何执行 UAT

UAT 也是用户熟知的 Beta 测试,这种类型的软件测试通常在客户场所执行,由系统或软件的使用用户来完成。一旦满足了 UAT 的执行标准,测试人员需要完成以下任务:

UAT 执行流程

  • 业务需求分析
  • 创建 UAT 测试计划
  • 确定测试场景
  • 创建 UAT 测试用例
  • 测试数据的准备
  • 运行测试用例
  • 确认业务目标

手工测试是进行 UAT 的正确方法吗?

在一个典型的项目中,手动运行预发布的 UAT 测试套件可能需要 2-3 个测试人员一周的时间。随着项目的增长,运行用户验收测试所需的时间也在增加。在某种程度上,交付频度不断提高的压力使公司跳过一些 UAT 运行或完全放弃 UAT。

很少有 QA 团队真正用自动化做验收测试。据统计(TestDrive UAT),只有大约 3% 的软件测试团队自动化了 UAT 过程。虽然这些数字可能不够精确,但它们确实说明了一个目前的状况:对于大多数团队来说,大多数 UAT 还是依赖于手工测试。

为什么自动化在用户验收测试中普及率比较低呢?根据我在很多团队中看到的情况,由于测试团队编码能力有限,写出的代码不够健壮或者根本写不出来自动化代码,代码能力成为测试团队的主要瓶颈。

自然语言驱动 UAT

测试人员平时写了很多测试用例,测试用例作为自然语言可以被所有用户理解。测试人员可以从 UAT 测试的角度,将测试用例抽离出来组成不同的 UAT 场景。

Cucumber (https://github.com/cucumber/cucumber-js) 作为行为驱动框架可以将用例与代码结合起来进行自动化 UAT。作为测试人员可以将 UAT 用例编辑到 feature 文件中,在对应的步骤上实现自动化脚本操作。例如下面的场景:

场景: 购物车结算
假如打开浏览器并导航到"https://cuketest.github.io/apps/shopping-cart/"
当点击添加到购物车按钮
那么此时按钮文字应该为"Sold Out"
而且弹出账单 "Total: $4.99"

上面用例可以轻松转为 UAT 测试场景,借助 CukeTest(http://cuketest.comgherkin 标准的场景描述,并将这些场景与自动化代码关联起来,实现 UAT 自动化。)工具,可以方便的编辑基于

进行 UAT 测试,直接点击运行项目,就可以自动化运行,并且在运行过程中,会在桌面上直接显示字幕,显示当前运行到哪个场景及哪个操作步骤,方便了解 UAT 进度。

运行结束后,可以自动生成报表文件,查看整体的运行结果。

此外它还能在执行过程中录制 UAT 自动化操作的视频,方便在必要的时候重新查看操作过程诊断问题。

UAT 涉及的应用类型很多,如 Windows 应用、Web、API、移动应用、WPF、Qt、Java 等,同时在一个脚本中操作多种类型的应用。或者要在多平台下执行,如 Windows、Mac、Linux。幸运的是,CukeTest 作为 UAT 自动化测试工具对这些平台都有支持。详情可查看之前的文章 Node.js 开发多端自动化步骤详解(Windows,Mobile,Web)。你只要掌握流行的 JavaScript 语言,就可以对所有的应用类型做 UAT 测试了。

共收到 1 条回复 时间 点赞

自动化测试还要强调 UAT 么?老实说,我认为功能级别的自动化测试和 UAT 没两样

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册