19 真实的战场:如何在大型项目中涉及GUI自动化测试策略

大型全球化电商网站 GUI 测试的策略设计

组件 -> 模块 -> 端到端

        1) 首先,要从前端组件的级别来保证质量,也就是需要对那些自定义开发的组件进行完整全面的测试。通常前端组件会基于 Jest 做比较严格的单元测试

        Jest 是由 Facebook 发布的,是一个基于 Jasmine 的开源 JavaScript 单元测试框架,是目前主流的 JavaScript 单元测试方案。

        完成单元测试后,往往还会基于被测控件构建专用的测试页面,在页面层面再次验证控件相关的功能和状态。这部分测试工作也需要采用自动化的形式实现,具体的做法是:

  •         先构建一个空页面,并加入被测控件,由此可以构建出一个包含被测控件的测试页面,这个页面往往被称为 Dummy Page;
  •         从黑盒的角度出发,在这个测试页面上通过手工和自动化的方式操作被测控件,并验证其功能的正确性。

        2) 其次,每一个前端模块,都会构建自己的页面对象库,并且在此基础上封装开发自己的业务流程脚本。这些业务流程的脚本,可以组装成每个前端模块的测试用例。

        以用户管理模块为例,测试用例的组装过程如下:

  •         首先,把用户管理模块中涉及到的所有页面,比如登录页面、用户注册页面等,按照页面对象模型的要求写成 Page 类;
  •         然后,利用这些 Page 类封装业务流程脚本,比如用户登录流程,用户注册流程等;
  •         最后,在 GUI 测试用例脚本中,调用封装好的业务流程脚本构成该模块的 GUI 测试用例。

        自动化测试用例的原则,通常是:优先选取业务关键路径以及 Happy Path 作为自动化测试的范围。在资源充裕的情况下,我们希望这个阶段的自动化率可以达到 70%-80%。

        3)最后,把各个前端模块组合在一起之后,站在终端用户的视角以黑盒的方式使用网站的端到端的测试。端到端的测试应该尽可能多地重用各个模块的页面对象库和业务流程脚本来完成。

  •         一部分是,通过探索式测试的方法手工执行测试,目标是尽可能多地发现新问题;
  •         另一部分是,通过 GUI 自动化测试执行基本业务功能的回归测试,保证网站核心业务相关的所有功能的正确性。

脚本管理

         将各个模块的页面对象和业务流程脚本放在各自的代码库中,并引入页面对象和业务流程脚本的版本管理机制,通常采用页面对象和业务流程脚本的版本号和开发版本号保持一致的方案。

        具体在测试项目中,模块版本的依赖往往是用 POM 来配置的,如图 2 展示了一个典型测试项目的 POM 文件中的版本依赖关系,其中引用了两个模块,appcommon 模块对应的就是上文提到的“公共组件库”,而 app.buy 对应的就是具体依赖的前端模块。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出Pytorch函数——torch.nn.init.dirac_

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…

软件需求-架构师之路(五)

软件需求 软件需求: 指用户 对系统在功能、行为、性能、设计约束等方面的期望。 分为 需求开发 和 需求管理 两大过程。 需求开发: 需求获取需求分析需求定义(需求规格说明书)需求验证:拉客户一起评审&#xff0c…

Lua 数据文件和序列化

一、数据文件 如果在 Lua 程序中可以需要用文件保存数据,并且后续使用 Lua 进行读取使用,则可以考虑将数据按照一定的格式保存,然后用 dofile 函数进行加载,这样可以让数据很方便的进行读取。 我们可以将数据按照 EntryName{} 或…

使用PHP生成MySQL数据字典

一个项目完成之后,按照需求,我需要给这个项目写设计文档,数据库字典。 设计文档到时好说,但是数据库字典可真的是有点吓到我了。 项目开始的比较急,最开始建数据库的时候没有用excel写数据库字典。 这几十张表的数据…

对象存储服务-MinIO基本集成

是什么 MinIO 是一个高性能的分布式对象存储服务,适合存储非结构化数据,如图片,音频,视频,日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…

Java基础篇——反射枚举

反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举B友:http…

Flutter命令。

这里列表一些Flutter命令。 注:从Dart 3.0开始,不支持无声音空安全。只能建议你尝试让你的代码更新到空安全,或者是将dart降级到3.0以前。若是使用Dart 3.0之后,则下面命令中的 "--no-sound-null-safety" 都要去掉。 …

Linux---用户权限管理

权力下放 sudo工具,可以将root的权限下放到普通用户,它允许系统管理员分配给普通用户一些合理的“权力”,让他们执行一些只有超级用户或其他特许用户才能完成的任务(主要体现为命令),比如:运行…

什么是RNN(循环神经网络)

什么是RNN(循环神经网络) 循环神经网络(Recurrent Neural Network),在识别图像时,输入的每张图片都是孤立的,认出这张图片是苹果,并不会对认出下一张图片是梨造成影响。 但对语言来说,顺序是十分重要的,“…

算法leetcode|71. 简化路径(rust重拳出击)

文章目录 71. 简化路径:样例 1:样例 2:样例 3:样例 4:提示: 分析:题解:rust:go:c:python:java: 71. 简化路径:…

系统架构设计师之NoSQL数据库及其分类

系统架构设计师之NoSQL数据库及其分类

flink jira 提交开源bug

注册apache issue账号,并申请flink空间的权限后. 提问题/bug 查看已经提交的问题:

pytest结合Excel实现接口自动化

前言 我们先来回顾下之前篇章“pytest通过parametrize方法实现数据驱动实战”,主要是通过yaml文件来读取测试用例。而我们用Excel文件存放测试用例又有什么区别呢? 毫无疑问,Pytest自动化测试框架也能读取Excel文件实现数据驱动。 还记得之…

React笔记[tsx]-解决Property ‘frames‘ does not exist on type ‘Readonly<{}>‘

浏览器报错如下&#xff1a; 编辑器是这样的&#xff1a; 原因是React.Component<any>少了后面的any&#xff0c;改成这样即可&#xff1a; export class CustomFrame extends React.Component<any, any>{............ }

分布式协调服务中的几个常见算法

分布式协调服务中的几个常见算法包括: 1. 选主算法 用于从多个节点中选举出一个节点作为主节点或者领导者,常见的算法有Bully算法、Ring算法等。 2. 原子广播算法 用于向分布式系统中的所有节点广播消息,保证所有节点都可以收到消息,典型的两阶段提交协议实现了原子广播。…

MySQL 运维篇+单机多实例多版本部署初始化缺少sys库概述

说明&#xff1a;本文讲述MySQL在单机多实例多版本部署情况下初始化后缺少sys库问题方案&#xff1a;初始化数据库前建议暂时将其他实例的Default options&#xff08;/etc/my.cnf等&#xff09;重命名结论&#xff1a;初始化新实例时即使指定相关参数也有可能会受到默认参数的…

态路小课堂丨光纤合束器介绍

TARLUZ态路 随着激光应用技术的发展&#xff0c;在材料加工、空间光通讯、遥感、激光雷达和光电对抗等诸多领域都需要更高功率、质量以及亮度的激光束。在单根光纤不能达到要求时&#xff0c;就可以通过光纤合束器对单纤激光器进行组束以获得更高功率。态路通信本文简单为您介绍…

php如何持续监听redis的消息订阅

要监听Redis服务&#xff0c;可以使用PHP的redis扩展提供的subscribe方法实现。以下是一个使用PHP监听Redis的示例代码&#xff1a; <?php $redis new Redis();// 连接到Redis服务器 $redis->connect(127.0.0.1, 6379);// 订阅频道 $redis->subscribe([channel_nam…

ArcGIS Pro怎么解决道路压盖问题

在默认情况下&#xff0c;道路可能会存在低等级道路将高等级道路压盖、在道路连接处不连通的情况&#xff0c;这些问题都可以在ArcGIS Pro内解决&#xff0c;这里为大家介绍一下处理方法&#xff0c;希望能对你有所帮助。 道路分级 在符号系统内&#xff0c;选择唯一值&#x…

算法练习- 其他算法练习4

文章目录 xxx压缩报文还原符合条件的子串长度找单词叠放书籍篮球比赛跳格子2招聘 xxx 压缩报文还原 输入一个压缩后的报文&#xff0c;返回它解压后的原始报文。压缩规则&#xff1a;n[str]&#xff0c;表示方括号内部的 str 重复 n 次。 注意 n 为正整数&#xff08;0 < …