移动测试架构演进 | 蚂蚁金服自动化用例管理探索

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 本文以蚂蚁金服 mPaaS 移动测试平台自动化用例管理为切入点,分析自动化用例管理过程中一些常见问题,并结合自身能力,实现了一套方便的自动化用例管理方式。
作者:周力(问瑾),蚂蚁金服技术专家。本文围绕支付宝面向移动应用日志复杂的测试工作,如何思考演进出成熟稳定的测试用例管理展开讨论和总结。

相比普通测试用例,自动化用例在形式、实现方式及内容上有一定的特殊性;同时自动化用例管理作为移动测试平台的一个重要组成部分,如何对其进行有效管理是平台面临的一个重大挑战。

活动推荐:5 月 18 日 mPaaS 线下沙龙 CodeDay#2 北京站,《高可用、全集成、定制化,蚂蚁金服如何持续演进自动化测试》将带领大家进一步了解支付宝如何从开源的自动化方案,到自研并逐步完善无线实验集群技术体系。立即免费报名

背景

随着移动应用市场的蓬勃发展,移动应用在包括金融、电商、社交等多个行业领域获得了深度演进和创新。随之而来的,针对移动应用的测试工作变得日益复杂,需要覆盖各个操作系统和平台,应对多样的业务场景以及网络环境,并围绕应用的性能、功能、可用性等维度展开。

经过多年的发展,蚂蚁金服沉淀了包括自动化测试框架、测试用例管理、真机调度管理等一系列完善的移动应用测试体系和工具。其中测试用例管理这个概念对我们研发的小伙伴再熟悉不过:用例编写同学以业务的纬度将用例的基本信息组织起来,并通过用例管理平台将其按照类型、版本、场景等纬度归档,从而完成用例的有效管理。然而,相比普通测试用例,自动化用例在形式、实现方式及内容上有一定的特殊性;同时自动化用例管理作为移动测试平台的一个重要组成部分,如何对其进行有效管理是平台面临的一个重大挑战。

本文以mPaaS 移动测试平台自动化用例管理为切入点,分析自动化用例管理过程中一些常见问题,并结合自身能力,实现了一套方便的自动化用例管理方式。 希望能够给广大开发者用户在自动化用例管理提供一些帮助, 通过阅读本文能够达到以下几点:

  • 了解移动测试平台自动化用例管理的基本原理。
  • 对于 mPaaS 用户,能够完成用例的快速集成,包括用例录入、用例集合管理及通过用例集合去构建一个自动化任务
  • 对于广大开发者来说,能够根据自己的技术栈特点,快速搭建一套自动化用例管理系统。

目标与挑战

从个人的角度来看,做好自动化用例管理的工作需要满足两个方面:

对于用户来说, 只需要关心业务用例的编写、按照业务规则构建一个用例集,以及触发自动化测试任务。
对于平台来说,为了保证自动化用例的有效管理,需要完成以下几个目标:

  1. 数据一致性的能力:用户自动化用例信息能够精确反映在平台上,包括增删改查。
  2. 方便快速的用例聚合能力:用户能够根据业务要求,快速构建匹配的用例集。
  3. 可扩展性及平台在运行时的支撑能力。
  4. 简单可用的用例版本管理能力。

图 1 平台与用例编写者关系

当然为了达到上面的目标,有几个问题平台需要去考虑和解决:

  1. 用例唯一性确认:作为一个自动化测试平台,如何区分不同用户提交的自动化测试用例?
    1. 用户“零散”的用例如何快速的组织在一起,并且能够在任务的运行态得以支持?
  2. UI 自动化用例往往与运行环境有着密切的关系(如网络环境),如何把这些运行时的特性体现在用例的设计里,保证用户扩展条件得以满足?
  3. 伴随着 App 版本的不断迭代,如何管理好不同版本测试用例?

如何应对

面对种种挑战,平台首要做的事情就是明确用例编写者和平台的职责划分:我们通过一个简单的用例编写规范来构建起两者之间的桥梁。

图 2 用例规范的作用

图 3 用例规范的范围

其次,需要明确一条自动户用例代表什么,对于平台和用户,它的意义是有差别的:

  • 对于用例编写同学来说就是一个方法或着类一个类,如:

  • 对于平台来说就是一个执行命令,如:


在明确这两个前提后,自动化用例管理的问题就有了具体的切入点。

【一致性确认】

首先,为了区分测试同学编写的用例,平台推荐使用 git 去管理测试代码,这样用例天然就被隔离开;同时为了在同一个仓库中支持不同的版本, 也参考 git 的分支和 tag 的管理方式来做区分;最终一条用例的确认关系就由:仓库+分支+方法的方式来确定:

图 4 用例的唯一性确认

其次,平台为了快速识别仓库中的有效用例,在 Java 层提供用于生成用例描述的注解,帮助用例编写同学快速生成用例描述文件。

图 5 用例注解描述

在注解的帮助下,工程就能方便在 pom 同级目录下生成平台可识别的用例描述文件(caseList.cfg)。

图 6 用例描述信息

至此,用例编写同学已经完成了编写用例的全部同作。对于平台来说,用户只需要告诉用例的仓库地址和分支,就能够完成用例的导入工作。

图 7 用例导入操作

图 8 导入成功用例

【用例的聚合】

当用户完成用例编写之后,往往需要把自己业务线用例聚合成一个用例集去执行;另外,对于一些特定的场景(如产品回归测试),需要把各个业务线的用例汇总在一起,构建成一个更大的集合。为了方便用户操作,平台提出了“项目”的概念, 项目可以在内容上包含一批用例方法,也可以包含多个仓库地址。

图 9 按照用例聚合项目

图 10 按仓库及分支聚合

相对于用例的聚合方式, 按照仓库聚合的方式更加灵活: 用户一旦将项目和仓库绑定,只需要在仓库中维护用例, 平台在运行任务的时候,会自动识别有效用例,进而减少平台的维护工作。

图 11 仓库项目任务执行流程

【运行时特性】

移动测试平台 MTP 用例运行都是基于真机环境。除了在任务执行的过程中能够手动去选择不同平台、型号、不同网络的设备;对于那些对网络运行环境有特殊要求的用例(特别在5G时代马上到来时刻),平台在属性上天然支持网络实验室选项(如 4G 实验室、5G实验室、弱网实验室)。这样当用例在平台执行的过程中,平台会自动取筛选执行不同实验室的真机。

图 12 执行层根据用例扩展信息动态调整实验室

【版本管理】

UI 自动化测试有一定的特殊性,即用例本身的可靠性以来于 UI 的变化,特别在大的迭代之间,很难做到一份代码来兼容两套不同的 UI。为了达到版本管理的功能,平台利用测试代码仓库的分支和项目来完成版本管理。

图 13 用例的版本管理

价值输出

通过采用以上几种策略,移动测试平台在蚂蚁内部能够给用户提供可靠稳定的服务:

  • 在用例一致性上,目前移动测试平台支持整个蚂蚁和集阿里团用例的录入工作,保证研发同学能够相互独立开发用例, 目前平台接入用例仓库地址 370+, 有效用例数 20000+
  • 在用例聚合方面, 目前移动测试平台上已经构建出 500+ 项目,这些项目服务于各式各样的场景,如 App 日常迭代验包、持续集成、各个业务线功能测试、小程序准入等, 并能够保证日平均任务数在 5000+ 以上。
  • 在任务运行时的落地,目前移动测试平台已经支撑了各种专有实验室设备, 如 4G 网络实验室、弱网实验室,及扫码实验室等。

在版本控制方面,通过仓库分支的管理方式, 目前移动测试平台已经支撑钱包从 9.0 到 10.1 30+ 次迭代的发版,并很好的隔离的不同迭代间用例的差异。

在基于全自动化测试需求所构建的技术架构支撑下,开发团队有能力在 App 上线前完成充分的测试,及时发现 bug, 全面提升整体用户体验。其中涉及到的“自动化测试框架”、“真机调度管理”、“场景化测试方案”目前在移动开发平台 mPaaS 中已对外输出。

| 活动推荐

想要进一步了解支付宝应对复杂的业务场景,如何构建无线实验集群,并贴合业务需求进行深度演练与支持?从开源的自动化方案,到自研并逐步完善无线实验集群技术体系,支付宝内部经历了怎样的业务场景演练,以及相应的技术架构得到了怎样的改造与升级?

立即扫码报名 5 月 18 日 mPaaS 自办沙龙第二期 CodeDay#2 北京站:

往期阅读

《开篇 | 蚂蚁金服 mPaaS 服务端核心组件体系概述》

《蚂蚁金服 mPaaS 服务端核心组件体系概述:移动 API 网关 MGS》

《蚂蚁金服 mPaaS 服务端核心组件:亿级并发下的移动端到端网络接入架构解析》

《mPaaS 服务端核心组件:消息推送 MPS 架构及流程设计》

《mPaaS 服务端核心组件:移动分析服务 MAS 架构解析》

关注我们公众号,获得第一手 mPaaS 技术实践干货

QRCode

钉钉群:通过钉钉搜索群号“23124039”

期待你的加入~

目录
相关文章
|
17天前
|
缓存 Devops jenkins
专家视角:构建可维护的测试架构与持续集成
【10月更文挑战第14天】在现代软件开发过程中,构建一个可维护且易于扩展的测试架构对于确保产品质量至关重要。本文将探讨如何设计这样的测试架构,并将单元测试无缝地融入持续集成(CI)流程之中。我们将讨论最佳实践、自动化测试部署、性能优化技巧以及如何管理和扩展日益增长的测试套件规模。
38 3
|
1天前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
1天前
|
测试技术 Android开发 UED
探索软件测试中的自动化框架选择
【10月更文挑战第29天】 在软件开发的复杂过程中,测试环节扮演着至关重要的角色。本文将深入探讨自动化测试框架的选择,分析不同框架的特点和适用场景,旨在为软件开发团队提供决策支持。通过对比主流自动化测试工具的优势与局限,我们将揭示如何根据项目需求和团队技能来选择最合适的自动化测试解决方案。此外,文章还将讨论自动化测试实施过程中的关键考虑因素,包括成本效益分析、维护难度和扩展性等,确保读者能够全面理解自动化测试框架选择的重要性。
10 1
|
23天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
102 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
6天前
|
监控 jenkins 测试技术
探索软件测试的新篇章:自动化与持续集成
【10月更文挑战第25天】在数字化时代的浪潮中,软件已成为驱动世界的核心力量。然而,随着软件复杂性的增加,传统的测试方法已无法满足快速迭代和高质量交付的需求。本文将探讨如何通过自动化测试和持续集成(CI)来提升软件开发的效率和质量,同时确保产品的稳定性和可靠性。我们将从自动化测试的基础出发,逐步深入到持续集成的实践,并展示如何通过实际案例实现这一转变。
|
6天前
|
jenkins 测试技术 持续交付
探索软件测试中的自动化与持续集成
【10月更文挑战第25天】在软件开发的海洋中,自动化测试和持续集成(CI)是引领航船穿越波涛的灯塔。本文将带你了解如何通过搭建自动化测试框架和实施持续集成策略来提高软件质量和开发效率。我们将以一个实际的代码示例为起点,逐步深入讲解如何整合自动化测试到你的CI/CD流程中。
|
6天前
|
jenkins 测试技术 持续交付
探索软件测试的新篇章:自动化与持续集成的融合
【10月更文挑战第25天】在软件开发的世界里,质量是王道。本文将带你领略如何通过自动化测试和持续集成(CI)的结合,提升软件交付的速度与质量,确保每一次代码提交都是一次胜利的宣言。
|
7天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
13天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
54 2
|
20天前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
42 1