软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

14 | 更接近业务的抽象:让自动化测试脚本更好地描述业务

适用于与BDD结合
适用于测试代码的自动生成
标准化的测试用例
封装更接近实际业务
执行业务流程实例
业务流程类
业务流程输入参数类
业务流程的优点
业务流程抽象
衔接两个操作函数之间的页面
控制操作函数的粒度
衔接两个操作函数之间的页面
控制操作函数的粒度
业务流程(business flow)概念
操作函数封装
页面对象模型
脚本与数据的解耦
如何让自动化测试脚本更好地描述业务?

该思维导图由 AI 生成,仅供参考

在上一篇文章中,我介绍了 GUI 自动化测试中的两个主要的概念“脚本与数据的解耦 ”以及“ 页面对象模型”。在引入“操作函数”封装时,我提到操作函数在改善测试脚本可读性问题的同时,也引入了两个新的问题,即: 如何把控操作函数的粒度,以及如何衔接两个操作函数之间的页面。
现在,我就以这两个问题作为引子,为你介绍 GUI 自动化测试中“业务流程(business flow)”的概念、核心思想以及应用场景。

如何把控操作函数的粒度?

操作函数的粒度是指,一个操作函数到底应该包含多少操作步骤才是最合适的。
如果粒度太大,就会降低操作函数的可重用性。极端的例子就是,前面文章中涉及的百度搜索的案例,把“登录”“搜索”“登出”的操作作为一个操作函数。
如果粒度太小,也就失去了操作函数封装的意义。极端的例子就是,把每一个步骤都作为一个操作函数。
更糟糕的是,在企业实际自动化测试开发中,每个测试工程师对操作函数的粒度理解也不完全相同,很有可能出现同一个项目中脚本粒度差异过大,以及某些操作函数的可重用性低的问题。
那么,操作函数的粒度到底应该如何控制呢?其实这个问题,在很大程度上取决于项目的实际情况,以及测试用例步骤的设计,并没有一个放之四海而皆准的绝对标准。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了如何优化自动化测试脚本的描述业务,重点介绍了控制操作函数的粒度和衔接操作函数之间的页面的重要性。首先,文章指出了过大或过小的粒度都会影响脚本的可重用性,强调了操作函数粒度的控制。其次,强调了页面衔接的重要性,介绍了业务流程抽象的概念,并展示了基于业务流程抽象的测试用例设计方法。最后,总结了业务流程抽象的优点,包括更接近实际业务、标准化的测试用例设计和便于与BDD结合等特点。整体而言,本文为读者提供了有益的技术指导,帮助他们更好地理解如何优化自动化测试脚本的描述业务。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件测试 52 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • 图·美克尔
    代码自动生成会讲到吗?

    作者回复: 代码细节不会讲,只会讲基本的思路。

    2018-08-01
    6
  • 图·美克尔
    然后,对于每一个业务流程类,都会有相应的业务流程输入参数类与之一一对应。具体的步骤通常有这么几步: 初始化一个业务流程输入参数类的实例; 给这个实例赋值; 用这个输入参数实例来初始化业务流程类的实例; 执行这个业务流程实例。 为啥不把这几步再封装一次作为一个业务步骤呢?比如就可以直接:login(username,passed)->search(name)->checkout(id)->logout. 也便于自由组合成其他的业务流程。比如:login->view order->logout

    作者回复: 非常高质量的留言,你说的方法非常好,而且我们也曾经实际尝试了,和你说的完全一样的思路,但是最终我们放弃了,主要原因是技术上的实现难度有点大,我们需要知道哪些flow是可以衔接的,并且还要做到ide中可以自动提示,同时flow之间的测试数据传递写出来也会比较难看,还有就是两个flow之间在实际用例中经常需要插入很多额外的操作,而且由于我们后面基于BDD做了代码自动生成,所以我们没有采用全链的方式。

    2018-07-30
    3
    5
  • Allen
    公司的业务流程比较复杂,需要在接口层覆盖业务流程的自动化测试。最近正在设计接口自动化的测试方案,看了这篇文章,很有启发。

    作者回复: 能有收获就好,其实我后面还会介绍更好的办法,就是通过gui来捕捉后端的api调用列表,后面的文章会有具体例子,希望可以帮到你

    2018-07-31
    3
  • @
    用依赖可以实现不同业务间的衔接

    作者回复: 的确是可以的,但是版本管理会比较复杂,每次有版本变化都要重新打包

    2018-07-31
    2
  • 麥白
    总结的很到位,很喜欢这种授人以渔的课程!学到了不少,得好好实践下~

    作者回复: 感谢支持,我一直反对直接教工具的使用,只有理解了背后的原理,才能做的更好

    2019-05-09
    1
  • johnny
    第13节的内容能理解,我已经将伪代码实现了。但是这节的内容不好理解,老师可以给我发一个完整的示例吗(不是用伪代码描述的,是真正用java语言实现的代码示例)?简单的业务流程,只要能说明第14节内容就行。我的邮箱是cjnjk@163.com

    作者回复: 实际代码可能没法发,因为不来源,实在不好意思

    2018-11-19
  • Sunshine
    感谢老师讲解,现在脑子有了一个更清晰的思路

    作者回复: 能够有收获就是最好的

    2018-08-03
  • 雪哥
    新手问下,有什么好的论坛,心得交流平台吗,或者测试经常浏览的技术网站

    作者回复: 这类网站是有很多,不会如果你是想学某一种工具,我强烈推荐你上官网

    2018-07-31
  • Allen
    我们公司的业务流程比较复杂,看了这篇文章,有了新的思路,受教了。

    作者回复: 非常感谢认可,能够帮助到大家,是我最想看到的

    2018-07-30
  • 彬彬ieeeeemily
    嗯,我也是这种思想去做的,更容易组装出更多的业务场景用例

    作者回复: 嗯嗯,系统的去做才能发挥gui的最佳效率

    2018-07-30
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部