一种无线端测试平台化最佳实践

本文涉及的产品
票证核验,票证核验 50次/账号
OCR统一识别,每月200次
企业资质识别,企业资质识别 200次/月
简介: 就像持续集成,互联网公司对测试平台化的探索从未停止过,大厂也不例外。测试平台化并不是单纯地“可视化”,将脚本搬到平台上。它是一种“可能性”,一种多元化技术融合提升测试效果的可能,一种变革测试组织与行为的可能。那么来看看零售通的平台化实践有没有解开你心中的疑云。


阿里QA导读:就像持续集成,互联网公司对测试平台化的探索从未停止过,大厂也不例外。测试平台化并不是单纯地“可视化”,将脚本搬到平台上。它是一种“可能性”,一种多元化技术融合提升测试效果的可能,一种变革测试组织与行为的可能。那么来看看零售通的平台化实践有没有解开你心中的疑云。

背景


随着移动互联网技术兴起,业务在无线端获得高速发展,从而带动产品研发周期快速迭代,业务逻辑模型复杂度越来越高,对业务质量保障提效诉求也越来越高

  • 产品迭代周期短和无线技术架构升级,自动化维护成本高。
  • 人员流动变化,测试经验未能沉淀和抽象到工具平台里,如用例数据模型等。
  • 脚本里沉淀的能力不能快速复用。
  • 业务测新,自动化覆盖投入成本比较高,特别是适配和回归成本。

基于以上痛点,我们有个初衷去做这样一个无线自动化平台,无需编写脚本,无需搭建本地工程环境,全程可视化界面操作,即使不懂自动化脚本编程也能完成任务配置,致力于用较小的成本投入和维护自动化。

 

成本收益分析


我们先以电商域商品详情场景为例,介绍下不同的测试策略对测试成本的影响。商品详情场景涉及到区域化、不同营销类型、不同的offer类型,场景组合后有100+个case。

人工测试

投入人力进行手工验证多端多机,最快完成一轮测试也要5人日。如果加上干扰因素(手机没电、找不到设备、网络环境等问题)、bugfix回归验证,整体测试周期还要加长,甚至成倍增加。自动化脚本测试主要耗时成本在工程化环境搭建、本地脚本编写和调试的。同时对于多场景的数据有一个弊端,往往是写死数据在脚本且数据场景不全。平台化测试

全程在平台上可视化操作,用精准用例建模自动化平台的数据支持多场景的的测新和回归。

image.gifimage.png

功能亮点


1. 原子能力的标准化

我们对自动化里的所用的公共部分做了以下抽象成公共能力和组件化,可供重复使用。将工程脚本里的对象控件操作类、数据类、断言类做标准化并封装成原子能力,可以在平台页面上直接选择,添加对应行动点,支持语义化设置,支持行动点流程编排。

image.gifimage.png


2. 语义化驱动—用例配置

image.gifimage.png


3. 行为驱动—流程编排

image.gifimage.png


4. 数据驱动—精准用例建模

相同场景的自动化不用设置一条一条自动化用例,也不用在脚本里指定某条数据运行。使用场景建模,扩展任务丰富数据源能力,支持任务添加单条数据/多条数据/场景模型数据。场景模型好处是脚本里的数据进行剥离,以业务场景角度封装成用例数据模型,不仅降低测试用例数据遗漏的风险,而且将原先脚本写死的数据变活,通过建立的模型实时获取线上活的数据,即使有业务调整,直接维护模型即可。场景模型支持2种:

  • 对接精准用例建模平台的数据源
  • 对接非平台数据源,如http、odps、hsf,支持动态解析数据源用例

image.gif

image.gifimage.pngimage.png



5. 场景驱动—测试场景多样化

5.1 端上对比

接入对比算法做端上页面对比,支持线上&预发布对比、单页面对比、流程对比。

image.gifimage.png

5.2 不同环境运行

  • 日常预发环境运行,平台逻辑处理scheme环境参数命令切换环境。APP有需要接入的话,提供scheme切换环境的命令,剩下交给平台处理。
  • 线上和外网环境运行,设置2个机器组,其中1个机器组的设备连接只连内网,另外1个机器组设备只连外网(sim卡)。


image.gifimage.png


5.3 APP版本测试集回归

用于回归测试用例的分类管理与批量用例执行。具备 测试报告、错误反馈、失败重跑、批量装包,一键运行等功能,并且支持多种运行模式(随机执行一台设备,最小执行设备模式,全覆盖回归模式)。目前普遍用于提升集成回归的整体效率。

image.gif

image.png


平台架构


平台提供版本测试集回归、适配测试、端上页面对比、流程编排、场景语义化配置,对接精准用例模型等主要功能,为测试、开发人员提供高效的自动化测试解决方案,做到5分钟任务设置,10分钟出结果。image.gifimage.png

底层黑科技

1. 无线实验室—云真机

  • 借助UC的岩鼠平台,支持异地部署机房、同时支持ios和安卓远程云真机访问操作。
  • 异步部署机房,搭建适配实验室托管手机设备,支持安卓和ios远程云真机。技术上用真机平台 docker镜像部署到Linux物理主机,启动docker服务注册到真机平台服务中心。一台物理主机可连接40台手机设备,可通过主板usb扩展卡升级,支持更多设备连接数。

  • 设备通信,注册到真机平台服务中心后,通过usb hub进行通信,给设备发送通道指令走物理主机ip+随机端口。
  • APP操作,用原生adb能力操作安卓手机,和APP、设备之间进行连接通信,用真机平台开放的xcuiTest api操作苹果手机,和APP、设备之间进行连接通信。


2. scheme协议—唤起APP&URL

基于scheme跳转机制,去跳转到任意指定页面,支持ios和安卓系统,无须关心页面是weex、h5、native、flutter、小程序等,做到不入侵被测app也能唤起页面。

3. 视觉图像处理—识别页面控件&采集素材

在UI自动化里对控件识别有以下几种方式:xpath、CssSelector、class、id、name、元素截图等。我们这里采用视觉图像识别技术,对被测页面截图后的图像处理做以下识别,文本类:和达摩院的读光平台合作,做图像ocr识别文本,用于文本点击和文本断言。文本点击是将识别出来文本所在的四个角坐标转成中心坐标去点击。OCR识别功能准确性体验,可以在读光平台官网体验。

图标图片类:和蚂蚁的测试平台合作,做图像以图搜图,建立图标控件管理库。

image.gif

image.png

适用场景


  • 适用于无线端多机适配测试、功能流程测试、页面对比测试、多场景用例建模测试。
  • 适用于本地自建机房。
  • 多场景用例建模测试(测新和回归)。

image.gifimage.png


未来探索方向


测试资产库建设

UI自动化里画像里包含的用户行为轨迹模型、页面控件、登录账号、用例数据模型、脚本操作API、动态断言等组成因素抽象到平台里,变成测试资产,即使有变化影响,测试资产仍然可以继续支撑UI自动化。有了测试资产库,可以以业务视角运行跟这个场景有关的自动化。以商详为例,执行商详场景自动化就可以验证不同的账号在不同商品模型的detail页面展示逻辑、页面操作行为轨迹等,一次运行,精准覆盖。

风险挖掘

除了验证页面看得见展示内容,比如页面适配和功能逻辑等。在自动化执行的背后,去对接平台挖掘相关隐含的数据做回流展示,如死链检查、埋点日志数据、性能数据、crash稳定性数据等,并和历史基线数据做对比check。

结束语


  • 阿里巴巴零售通技术部,基于集团“新零售”战略,将与全球优质货源合作,依托专属进货平台,帮助线下零售店实现线上一站式进货及线下全方位服务。技术团队在实现线下小店零售业务升级的同时,致力于通过数字化技术赋能商家。
  • 欢迎有志之士加入零售通技术团队,共创新的商业模式,诚招JAVA开发、客户端、前端、数据算法及测试开发工程师,联系邮箱:panlian.qingpl@alibaba-inc.com 或 pengcheng.yupc@alibaba-inc.com。


相关文章
|
2月前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
85 1
|
3月前
|
机器学习/深度学习 监控 算法
自动化测试框架的演进与最佳实践
随着软件行业的迅猛发展,自动化测试已成为确保软件质量的关键手段。本文将深入探讨自动化测试框架的历史演进、当前趋势以及面临的挑战,并结合实际案例分析,提出一系列的最佳实践策略,旨在帮助读者构建更加高效、稳定的自动化测试体系。
|
3月前
|
传感器 数据采集 监控
LabVIEW电池管理系统测试平台
LabVIEW电池管理系统测试平台
50 4
|
3天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
13 2
|
5天前
|
安全 Java 测试技术
最佳实践:通义灵码生成单元测试,让单测更简单
本文首先讲述了什么是单元测试、单元测试的价值、一个好的单元测试所具备的原则,进而引入如何去编写一个好的单元测试,通义灵码是如何快速生成单元测试的。
|
1月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
35 2
|
1月前
|
监控 安全 测试技术
提升软件测试效率:探索持续集成的最佳实践
在现代软件开发过程中,持续集成(CI)已成为提高软件质量和测试效率的关键实践。通过将代码库的每次提交自动构建和测试,CI 帮助团队及时发现问题,减少手动测试的负担。本文探讨了如何有效实施持续集成来优化软件测试流程,并提供了一些实用的策略和工具建议,以帮助开发团队更高效地运作。
63 2
|
2月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
101 1
|
2月前
|
运维 Kubernetes 监控
|
2月前
|
测试技术 持续交付 开发者
Xamarin 高效移动应用测试最佳实践大揭秘,从框架选择到持续集成,让你的应用质量无敌!
【8月更文挑战第31天】竞争激烈的移动应用市场,Xamarin 作为一款优秀的跨平台开发工具,提供了包括单元测试、集成测试及 UI 测试在内的全面测试方案。借助 Xamarin.UITest 框架,开发者能便捷地用 C# 编写测试案例,如登录功能测试;通过 Xamarin 模拟框架,则可在无需真实设备的情况下模拟各种环境测试应用表现;Xamarin.TestCloud 则支持在真实设备上执行自动化测试,确保应用兼容性。结合持续集成与部署策略,进一步提升测试效率与应用质量。掌握 Xamarin 的测试最佳实践,对确保应用稳定性和优化用户体验至关重要。
54 0