日本移动支付Merpay QA团队的自动化现状

news2024/11/23 3:14:41

Merpay是日本最大的网购平台之一Mercari的无现金支付系统。Merpay 的主要功能是让用户在 Mercari的网站上购物,也可以在日本的许多实体店和餐厅使用它,也可以理解为日本的“支付宝”。以下为Merpay QA 团队在自动化方面的一些思考:

图片

这几年,Merpay QA 团队一直关注的一件事是促进测试自动化。在这篇文章中,我将介绍我们在开发测试自动化时遇到的一些问题,并介绍我们用来支持产品的一些工具。

图片

Merpay QA 团队致力于测试自动化有三个原因:减少工作量加速发布稳定质量。这些都非常简单,它们可能是大多数公司采用自动化的原因。

Merpay 积极参与 DevOps,以便“继续为客户提供更快、更可靠、更好的服务”。为此,我们需要加快质量保证、简化操作并用更少的人员处理更多的测试。这意味着在高影响领域有效地实现自动化测试至关重要。

Merpay QA 的一大特点是我们尝试帮助快速发布产品(而不是停止发布的 QA)。我们的目标是与开发团队建立一个合作体系,以便相互支持我们的职责。我们还致力于通过在开发阶段纳入许多测试来提高质量,并通过尝试从开发早期就纳入自动化测试来优化验证阶段的测试。

人们倾向于认为质量保证测试发生在发布前的最后阶段。然而,产品开发过程处于不断变化的状态,这导致了间歇性发布的周期。这就是为什么我们需要将 QA 视为“持续测试”,而不是“最后测试”。如果在这种环境下仅仅依靠手动测试,我们需要投入大量的资源来继续测试,每次扩大产品规模时都需要大量的质量保证资源。

此外,为了实现自动化,我们需要建立执行自动化所需的环境类型。任何通过通信处理的事情都需要进行重组,以使自动化变得更容易。为了实现这一目标,我们 Merpay 利用了非常适合我们开发文化的测试自动化工具。

Merpay使用的自动化工具

我们使用的主要测试自动化工具和项目管理工具可以大致分为后端、前端和本机应用程序,如下所示。

图片

我不认为我们使用的工具与其他公司使用的工具有很大不同。话虽如此,值得一提的是,我认为非常像 Merpay 式的,那就是我们使用“Scenarigo”,它是由我们的一位开发人员内部开发的。

Scenarigo

“ Scenarigo ”是一款基于场景的测试自动化软件,由Merpay开发人员使用Go 语言 (Golang) 开发的开源软件。(地址:https://github.com/zoncoen/scenarigo)

Scenarigo是一个用于运行API服务器场景测试的工具。它类似于Postman,常用于后端测试。Scenarigo具有以下特点:

[场景特性]


• 测试场景可以用YAML编写
• YAML编写的测试场景可以重复使用
• 可以使用Go而不是JavaScript进行扩展
• HTTP和gRPC都可以使用

测试场景可以用YAML编写

当基于拉取请求管理测试场景时,Postman 要求处理导出的 json 测试定义。这些 json 文件结构复杂,对开发人员不友好,因为很难根据 Pull 请求在 GitHub 上检查差异。

相比之下,Scenarigo 测试场景的结构更加简单,使用 YAML,通常认为它比 json 更容易阅读。

测试场景可以重复使用

一个非常方便的功能是可以重用通用的测试场景和通用的测试流程。

例如,可以主动重用一般测试场景(例如创建用户和登录)和测试开始时经常使用的流程(例如授予剩余的 Merpay 余额),以创建高效的测试场景。

可以使用Go而不是JavaScript进行扩展

Scenarigo是Merpay开发工程师非常熟悉的工具,他们使用Golang进行实际开发。还可以创建 Golang 插件,并调用在YAML中创建的插件来进行测试场景。

例如,通常用Postman很难实现的测试场景(例如调用 API 后测试作业运行的结果)可以通过调用 Golang 编写的插件,用 Scenarigo 轻松实现。因此,我们能够增加可实施的测试场景的类型

建立一个使开发工程师更容易维护测试的工具环境也有助于消除开发工程师和 QA 之间的界限。

HTTP和gRPC都可以使用

对于后端回归测试,我们一般会向每个微服务发送请求并验证响应结果。

Merpay架构的一个独特特征是,大多数微服务都是用Go实现并使用gRPC进行通信,因此能够同时使用HTTP和gRPC绝对是一个好处(因为HTTP请求需要通过API网关转换为gRPC)。

适用于特定微服务的内部工具

我们还有一个团队使用内部工具来实现特定微服务的自动化。

我们负责的微服务,有两个主要功能。第一种是,响应客户的固定费率支付申请,从指定信用信息机构Mercari或CIC获取信用信息,Merpay根据获取的信用信息进行固定费率支付审核。第二个功能是能够每月向 CIC 注册一次 Merpay 使用信息。

微服务中 QA 团队面临的挑战:

  • QA 方法很困难,这是一个封闭的后端服务,我们觉得很难,因为没有屏幕,需要使用工具进行QA。因此,返工往往会频繁发生,并且该功能只能由一个人进行 QA 认证。

  • 规范复杂,这与QA方法结合起来,意味着需要时间才能赶上,并且很难简单地增加人员。

对于每个问题,我们至少希望简化 QA 方法,并努力自动化尽可能多的耗时步骤。

我们基本上使用由负责的微服务开发团队创建的内部QA工具。我们内部QA工具的初始版本仅能够初始化测试数据和执行作业。因此,所有输出结果均通过目视检查。例如,需要目视检查数据库数据、发送到 CIC 的文件、输出到 Google Cloud Storage 的文件、输出到替代 CIC 的存根服务器的文件等。

我们逐渐将小单位中耗时的步骤机械化。必要时,我会使用 shell 脚本或 Python 编写脚本,或者要求开发团队帮助我们改进内部 QA 工具。

  • 目视检查数据库和创建的文件是最困难的部分,因此我请求修改内部 QA 工具,该工具允许我们编写断言处理,如本示例所示。就效果而言,消除了测试结果的目视确认,可以机械检查,从而大大提高了效率。

  • 我们曾经使用浏览器查看并复制粘贴Docker镜像标签名称到ContainerRegistry中,但使用浏览器非常不方便。至于标签名称本身,可以使用gcloud命令获取列表并过滤它们,但为了获取特定名称的最新标签名称,必须解析gcloud命令的结果并提取标签名称。我们创建了一个Python脚本来检索标签名称,并且还可以使用shell脚本将标签名称复制到剪贴板。这样就可以通过一个命令检索特定的标签名称,而无需访问浏览器。

  • 我们曾经使用浏览器直观地检查云存储中的文件,但这也相当繁琐。通过使用Cloud Storage的gsutil工具,可以操作Cloud Storage中的文件。因此,我们将这个过程自动化,使用Python执行gsutil命令,通过检查文件是否可以下载来检查文件是否存在。这使得可以使用单个命令检查文件,而无需使用浏览器访问它们。

  • 创建一个简单 shell 脚本。因此,现在可以使用单个命令对每个函数执行回归测试。

说到自动化,可能大家还会关心可维护性。这可能是事后诸葛亮,但底线是几乎不需要维护,而且考虑到创建自动化系统的成本,它已经物超所值了。我想了一下原因,觉得是因为脚本是小单元写的,所以稍微改变一下流程不会有太大影响,也因为本来就很难改变流程从功能的角度来。而且,由于脚本单元很小,所以在跟上时很容易阅读和理解。即使脚本由于某种原因停止工作,我们基本上只是将之前手动执行的内容转换为脚本,因此如果我们部分切换到手动,QA 也不会停止。

“Cypress + TestRail”

“ Cypress ”是一个端到端测试框架,已成为前端端到端测试自动化的标准。

“ Cypress ”也用于前端开发过程中的测试,因此我们可以随时寻求帮助或审查我们的工作,非常方便。

我们对职责进行了划分,QA工程师负责发布前的回归测试,产品开发工程师负责单元测试和集成测试。

我们还使用“ TestRail ”来系统化测试用例管理,以继续改进工作流程。

自动化问题

老实说,我们在自动化方面遇到了很多问题。

  • 可维护性

此问题涉及对已创建的测试用例的维护。准备一个允许其他人也可以执行维护的环境非常重要,是我们现在面临的主要问题之一。

  • 个性化

我们的大多数测试都针对微服务,因此当测试出现问题时,可能很难找出问题到底发生在哪里。确定问题的原因可能需要时间。而且,即使我们找出原因,如果问题发生在另一个团队的工作中,并且您被迫在没有足够专业知识的情况下解决问题,那么解决问题可能需要时间。在这方面,我们必须努力减少这种情况的发生,让事情变得更容易理解,消除个别情况。我们还开始了解使用 Scenarigo 创建测试场景的问题。

  • 门槛高

使用 Scenarigo 的一个好处是它是一个内部工具,因此我们可以预期它会得到改进。感谢我们工程师的“一体”合作,我们可以使用该工具做更多事情,并且比两年前更容易使用。然而,内部工具不可避免的缺点是组织外部的人不知道如何使用它。我们通过创建有关如何使用 Scenarigo 的手册并举办学习会议和讲座来弥补这一点。

  • 可读性/可视化不足

我们正在解决的另一个问题是如何处理运行自动化测试的结果。我们在发布前使用结果做出决策,但我们还必须使用自动化测试来始终控制我们服务的健康状况。如果这些测试结果可以随时随地由任何人查看,那就太好了。我希望能够营造这样的环境。

未来的挑战

尽管我们已经引入了此类工具来自动化测试,但我们仍然存在基于手动测试编写自动化场景测试的情况。这就是为什么我要求我们的团队成员尝试在流程的早期阶段纳入自动化基础,以便我们可以在上游更高的流程中编写自动化场景。

从短期来看,对所有验证过程使用手动测试可能会让我们更快地发布产品和服务。然而,我希望团队中的每个人都能明白,自动化重复场景测试将使未来的测试更加高效,并有助于确保可靠的质量。我们想专注于构建一个允许自动化测试的环境。我们可能会继续在Merpay开发快速发布周期的产品,所以我认为我们每个人都有必要从中长期的角度来考虑我们的验证计划。

我们还想找到一种在整个产品中引入自动化的方法,而不必在后端、前端和本机应用程序之间分割自动化。QA团队的主要自动化测试仍然只用于后端。我们想研究一下前端和本机应用程序,以便我们可以研究适合整体而不仅仅是部分的自动化方法。

图片

测试开发圈年度技术交流大会,MTSC2023|深圳大会,你关心的技术话题都在这里!(点击查看)

MTSC 2023 第12届中国互联网测试开发大会(深圳站)即将于2023年11月25日,在『深圳登喜路国际大酒店】举办,大会将以“1个主会场+4个平行分会场”的形式呈现,聚集一众顶尖技术专家和行业领袖。他们将围绕如今备受关注的行业热点话题以及最前沿的实践经验,进行深入探讨和分享。

此外,大会前一天,11月24日,社区还组织了【AIGC主题 闭门研讨会】,面向对于Al软件测试应用、降本增效等技术管理等方向,组队针对特定议题进行讨论、提出解决方案,最后由讲师评审讨论投票选出优秀方案。感兴趣的同学,可以联系票务同学进行咨询报名。

图片

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

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

相关文章

C++构建与编译

C构建 一般来讲,写完c的源文件(src),就需要去编译为: 可执行文件动态库/静态库 那么就遇到了几个问题: 编译的主机是什么代码运行的目标平台是什么 主机 一般来讲工作的机器,Windows或者L…

vMix导播软件使用NDI协议输入输出

前两篇文章一直写NDI,写了NDI在OBS【链接】、芯象【链接】中的使用。有的朋友问在vMix中的用法,今天就详细说说。 vMix在软件导播领域可算大名鼎鼎,功能丰富、工作稳定,支持多种媒体导入。由它衍生出多种产品,如&#…

中考倒计时7个月复习攻略:名师支招,为“长跑”积蓄能量

今天是2023年11月2日,距离2024年中考还有7个月多一点的时间。其实据六分成长了解,很多学校到了初三(九年级)基本上都是奔着中考考试复习的,这一学年基本上是长跑、拉力赛,拼的不只是智力,还有体…

chatgpt接口调用

在线接口文档: https://app.apifox.com/invite?tokensymrLP7sojF6N31kZqnpZ 接口地址 https://chat.xutongbao.top/api/light/chat/createChatCompletion 请求方式 POST 请求参数 token String, 必须 prompt Array, 必须 例子一: 包含上下文 [ { "…

LVGL库入门 01 - 样式

一、LVGL样式概述 1、创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式。每个控件都可以独立添加样式,创建的样式之间互不影响。 可以使用 lv_style_t 类型创建一个样式并初始化: static lv_style_t s…

二分法解决局部最小值问题

二分法解决局部最小值问题 局部最小值问题:(不一定是有序才可以二分的,具有排它性就可以二分) 局部最小就是改数的左侧和右侧的数都比自己大,当然如果位于两端的话,就只考虑一侧。找到有一个这样的数就可以。 一个数组中&#…

推荐游戏《塞尔达传说:旷野之息》

塞尔达传说:旷野之息 播报编辑讨论32上传视频 2017年任天堂企划制作本部开发的动作冒险游戏 3分钟了解荒野之息 03:59 一分钟了解游戏《塞尔达传说: 旷野之息2》 00:57 旷野之息:20-爬雪山找隐藏神庙获攀爬套装部件,踏上沼泽再…

Pytest-Allure及Allure命令使用

一、Allure介绍 Allure是Pytest用于生成测试报告的框架,提供丰富的测试报告功能; 二、Allure安装 Allure安装分为2块,分别是pytest-Allure库安装,本地生成报告并导出的命令行allure安装; 1、pytest-Allure库安装 …

易基因:RRBS等揭示DNA甲基化-肿瘤免疫逃逸-肾上腺皮质癌侵袭的相关性|表观研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 组蛋白修饰对调控染色质结构和基因表达至关重要,组蛋白修饰失调可能导致疾病状态和癌症。染色质结合蛋白BRWD3(Bromodomain and WD repeat-containing protein 3&…

创新驱动发展 国家创新型城市试点名单2006-2018年(已整理DID格式)

数据简介:创新型城市是指在经济、科技和社会方面具有卓越创新能力的城市,这些城市通过提供良好的创新环境和支持系统,吸引和培养创新人才,促进新兴产业发展,推动经济增长和社会进步。创新型城市提供了丰富的就业机会和…

go语言 | grpc原理介绍(一)

参考 https://www.nowcoder.com/discuss/389810396381683712?sourceSSRsearch 这里是b站对应的csdn博客,比较详细的介绍grpc相关原理说明,首先是大概的一个流程图说明。 什么是 RPC ? 远程过程调用(RPC)是计算机科…

嵌入式软件开发:第二部分–七个步骤计划

使用一种工具(仅一种工具)武装自己,您可以在下一个嵌入式项目的质量和交付时间上做出巨大的改进。点击领取嵌入式物联网学习路线 该工具是:绝对承诺对开发代码的方式进行一些小而基本的更改 。 有了改变的意志,今天您…

火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 随着市场竞争的加剧,企业对数字营销投入的效果监测和优化需求日益增强,营销实时监控也成为企业提升运营效率的重要手段。在数字化营销中&…

Django实战项目-学习任务系统-查询列表分页显示

接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了。 接着优化查询列表分页显示功能,有很多菜单功能都有查询列表显示页面情况,如果数据量多,不分页显示的话,页面展示效果就不太好。 本…

Pinia介绍及简单示例

Pinia 是一个基于 Vue 3 的状态管理插件,旨在提供一种简单、直观的方式来管理应用程序的状态。与其他状态管理库(如 Vuex)相比,Pinia 更加轻量级、易于使用和可扩展。 Pinia 的主要特点包括: 1. 面向对象的 API&…

超低价:阿里云双11服务器优惠价格表_87元一年起

2023阿里云双十一优惠活动已经开启了,轻量2核2G服务器3M带宽优惠价87元一年、2核4G4M带宽优惠价165元一年,云服务器ECS经济型e实例2核2G3M固定带宽优惠价格99元一年,还有2核4G、2核8G、4核8G、4核16G、8核32G等配置报价,云服务器e…

发票识别神器:自动录入纸质发票信息

在如今数字化的时代,纸质发票的处理变得越来越繁琐和耗时。为了提高工作效率和减少人工错误,自动识别纸质发票信息的软件应运而生,如金鸣表格文字识别系统的“证票识别”识别功能。这类软件通过图像识别和智能算法,能够迅速准确地…

李宏毅机器学习笔记.Flow-based Generative Model(补)

文章目录 引子生成问题回顾:GeneratorMath BackgroundJacobian MatrixDeterminant 行列式Change of Variable Theorem简单实例一维实例二维实例 网络G的限制基于Flow的网络构架G的训练Coupling LayerCoupling Layer反函数计算Coupling Layer Jacobian矩阵计算Coupli…

5.6 TCP可靠传输的实现

思维导图: 5.6.1 TCP可靠传输的实现笔记概述 在TCP/IP模型中,第5.6节讨论了TCP如何通过滑动窗口机制来实现可靠传输。以下是对本节内容的笔记概括,以及关键点的简化解释: 滑动窗口(Sliding Window) 基本概…

按顺序判断对象a和b中第一个不同之处ax和bx【1】ax是否小于等于bx【2】不同处ax是否为空operator.le()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 按顺序判断对象a和b中 第一个不同之处ax和bx 【1】ax是否小于等于bx 【2】不同处ax是否为空 operator.le() [太阳]选择题 下列代码执行输出结果为True的个数为? import operator pr…