编辑推荐: |
本文以电商域商品详情场景为例,介绍下不同的测试策略对测试成本的影响
,希望对您的学习有所帮助。
本文来自于软件质量报道
,由Alice编辑、推荐。 |
|
导读:就像持续集成,互联网公司对测试平台化的探索从未停止过,大厂也不例外。测试平台化并不是单纯地“可视化”,将脚本搬到平台上。它是一种“可能性”,一种多元化技术融合提升测试效果的可能,一种变革测试组织与行为的可能。那么来看看零售通的平台化实践有没有解开你心中的疑云。
背景
随着移动互联网技术兴起,业务在无线端获得高速发展,从而带动产品研发周期快速迭代,业务逻辑模型复杂度越来越高,对业务质量保障提效诉求也越来越高
- 产品迭代周期短和无线技术架构升级,自动化维护成本高。
- 人员流动变化,测试经验未能沉淀和抽象到工具平台里,如用例数据模型等。
- 脚本里沉淀的能力不能快速复用。
- 业务测新,自动化覆盖投入成本比较高,特别是适配和回归成本。
基于以上痛点,我们有个初衷去做这样一个无线自动化平台,无需编写脚本,无需搭建本地工程环境,全程可视化界面操作,即使不懂自动化脚本编程也能完成任务配置,致力于用较小的成本投入和维护自动化。
成本收益分析
我们先以电商域商品详情场景为例,介绍下不同的测试策略对测试成本的影响。 商品详情场景涉及到区域化、不同营销类型、不同的offer类型,场景组合后有100+个case。
人工测试 投入人力进行手工验证多端多机,最快完成一轮测试也要5人日。如果加上干扰因素(手机没电、找不到设备、网络环境等问题)、bugfix回归验证,整体测试周期还要加长,甚至成倍增加。
自动化脚本测试 主要耗时成本在工程化环境搭建、本地脚本编写和调试的。同时对于多场景的数据有一个弊端,往往是写死数据在脚本且数据场景不全。
平台化测试 全程在平台上可视化操作,用精准用例建模自动化平台的数据支持多场景的的测新和回归。
功能亮点
1. 原子能力的标准化
我们对自动化里的所用的公共部分做了以下抽象成公共能力和组件化,可供重复使用 。将工程脚本里的对象控件操作类、数据类、断言类做标准化并封装成原子能力,可以在平台页面上直接选择,添加对应行动点,支持语义化设置,支持行动点流程编排。
2. 语义化驱动—用例配置
3. 行为驱动—流程编排
4. 数据驱动—精准用例建模
相同场景的自动化不用设置一条一条自动化用例,也不用在脚本里指定某条数据运行。使用场景建模,扩展任务丰富数据源能力,支持任务添加单条数据/多条数据/场景模型数据。 场景模型好处是脚本里的数据进行剥离,以业务场景角度封装成用例数据模型,不仅降低测试用例数据遗漏的风险,而且将原先脚本写死的数据变活,通过建立的模型实时获取线上活的数据,即使有业务调整,直接维护模型即可。 场景模型支持2种:
- 对接精准用例建模平台的数据源
- 对接非平台数据源,如http、odps、hsf,支持动态解析数据源用例
5. 场景驱动—测试场景多样化
5.1 端上对比
接入对比算法做端上页面对比,支持线上&预发布对比、单页面对比、流程对比。
5.2 不同环境运行
- 日常预发环境运行,平台逻辑处理scheme环境参数命令切换环境。APP有需要接入的话,提供scheme切换环境的命令,剩下交给平台处理。
- 线上和外网环境运行,设置2个机器组,其中1个机器组的设备连接只连内网,另外1个机器组设备只连外网(sim卡)。
5.3 APP版本测试集回归
用于回归测试用例的分类管理与批量用例执行。具备 测试报告、错误反馈、失败重跑、批量装包,一键运行等功能,并且支持多种运行模式(随机执行一台设备,最小执行设备模式,全覆盖回归模式)。目前普遍用于提升集成回归的整体效率。
平台架构
平台提供版本测试集回归、适配测试、端上页面对比、流程编排、场景语义化配置,对接精准用例模型等主要功能,为测试、开发人员提供高效的自动化测试解决方案,做到5分钟任务设置,10分钟出结果。
底层黑科技
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识别功能准确性体验,可以去“读光OCR”平台官网体验。 图标图片类 :和蚂蚁的测试平台合作,做图像以图搜图,建立图标控件管理库。
适用场景
- 适用于无线端多机适配测试、功能流程测试、页面对比测试、多场景用例建模测试。
- 适用于本地自建机房。
- 多场景用例建模测试(测新和回归)。
未来探索方向
测试资产库建设
UI自动化里画像里包含的用户行为轨迹模型、页面控件、登录账号、用例数据模型、脚本操作API、动态断言等组成因素抽象到平台里,变成测试资产,即使有变化影响,测试资产仍然可以继续支撑UI自动化。 有了测试资产库,可以以业务视角运行跟这个场景有关的自动化。 以商详为例,执行商详场景自动化就可以验证不同的账号在不同商品模型的detail页面展示逻辑、页面操作行为轨迹等,一次运行,精准覆盖。
风险挖掘
除了验证页面看得见展示内容,比如页面适配和功能逻辑等。在自动化执行的背后,去对接平台挖掘相关隐含的数据做回流展示,如死链检查、埋点日志数据、性能数据、crash稳定性数据等,并和历史基线数据做对比check。
|