​优酷质量保障系列(二)—客户端自动化测试基础能力建设

简介: 自动化测试能力建设过程中,自动化框架选型、框架设计核心和思路、自动化能力平台接入,是自动化测试能力建设过程中重要环节。文章分享优酷APP自动化测试能力建设过程中的经验

前言

随着移动端版本迭代的加快,快速测试,快速反馈已经是一个常态化的流程,周期内版本发布频率的增加,各项测试的时间正在急剧缩短,且回归性的任务不断充斥当中,各个阶段都需要回归测试的介入来确保集成之后各个模块的正确性。

在当前回归测试中主要集中以下几个痛点问题:

  • 测试回归主次模糊,抓不住回归重点的内容,导致在较短时间内很难完成大量的回归case
  • 回归用例基本大部分都是靠手工执行,重复性工作较多,回归效率低下
  • 各个业务团队或多或少都有一些自动化的研究和接入,但开发的工具本身都是各自为战没有起到互相配合&互相补充的作用,无法实现工具红利。

基于客户端的自动化能力进行测试框架的封装,实现脚本编写&执行与平台无缝对接,并且结合了业务场景进行平台自动化能力的落地,同时统一自动化框架的开发以及核心case用例的整合,使得整体回归测试成本降低。


客户端自动化基础能力

1. 自动化测试驱动选型

如何选取一款自动化测试框架呢,一款好的测试框架具备这样几个特征:双端一致性,也就是说ios和android可以在同一框架下编写用例,提高脚本开发效率。运行稳定性,对UI自动化本身存在不稳定性,框架需要运行稳定才能更好的支持测试。简单易用,框架接入本身需要简单易懂降低入门的门槛,方便快速使用。低耦合性,各个层级保持低耦合性来降低脚本的维护成本,高扩展性指的是方便与平台的对接能力和脚本调用能力。

image.png

自动化测试框架设计

核心场景自动化结构设计主要分为3层:最下层为驱动能力,提供核心驱动力和操作的能力,维护整个case执行的生命周期。中间层是框架封装层,直接依赖Driver层,提供通用basecase的入口和工具类的使用,以及业务通用能力抽象。最上层为TestCase直接依赖框架封装层,封装业务逻辑以及testcase的编写,层级之间相互解耦,层层依赖。

image.png

框架层结构,主要分为4大块内容:

  • 第一部分为Framework_Core,这部分主要是围绕着BaseCase进行的扩展, Basecase作为framework的入口,是所有case的父类,遵循框架的生命周期持有driver对象
  • 第二部分是Device_Config,这里主要初始化一些设备和配置信息,例如deviceid、pkgName等
  • 第三部分utility,这部分是工具类的封装,包含图像相关的处理,路由跳转功能。丰富的util类目的是让测试case的验证更加全面准确。
  • 第四部分是Report.这块主要是测试报告的生成,生成对接平台标准化的报告结果


框架Log体系&Check体系&基础操作封装

框架中还封装了完整的Log体系,主要用于测试过程trace的追踪和测试报告的生成。

Log体系主要包含:

  • 添加case步骤
  • 添加截图
  • 添加验证点
  • 添加操作动

除了Log体系外,business logic还封装了check体系,check体系主要包含元素检查以及页面布局检查,check内容例如:check元素是否为空、字符串是否相等、元素文本是否为空以及两张图片相似度等,完善的check体系可以增加case的验证内容,比断言的方式更加贴合UI自动化的使用。

框架中还封装了BaseOperation基础操作,例如:pageSwipe 会按照屏幕尺寸进行页面的滑动,确保case在不同设备上滑动幅度相同,ModuleSwipe可根据传入element范围内进行滑动,入参包括滑动方向、滑动幅度以及滑动次数等,提供基础的操作内容方便上层脚本更加顺畅的调用。


图像识别能力

在随着框架基础能力的封装完善,只满足传统UI自动化使用已经限制了自动化本身的覆盖度,局限性也比较大。目前可以通过数据和图像两个方面的补充使传统UI自动化扩展性更好一些。

数据方面主要指是自动化测试的一些input数据内容例如mock数据的设置等,另一方面就是图像,自动化测试框架也封装了图像相关的api进行补充完善。

在图像方面框架还有截图处理的能力,例如:截图标记的功能,可以完善测试报告,增强排查手段,如下图所示,当传入check元素后进行截图,截图图片上会自动标记出校验的区域或者元素,框架还支持图片剪裁的能力,主要是方便支持区域OCR识别以及图片相似度对比的验证。最后还支持图片的翻转能力,这块主要是为了解决iPad转屏后截图不正,影响图像识别准确性的问题。

image.png


自动化能力平台接入

自动化测试方案

image.png

自动化执行结果展示

1.测试结果页支持测试时长、测试用例集、用例数、成功失败case数量以及通过率的展示,详情请见下图:

image.png

image.png

2.测试报告其它支持功能:

  • Testcase维度crash分析结果以及crash.log下载
  • 失败case支持bug提交
  • 失败case同时支持失败截图+失败trace信息展示

如下图展示:

image.png


未来规划

平台在客户端自动化测试基础能力建设上已有了一定成效,随着业务的不断接入并投入使用在日常测试中使用,整体回归效率以及人力成本节省都有显著的提升。

但整体在自动化能力建设上后续还会有更大的挑战内容,未来将着眼于图像能力建设结合自动化平台产出更多有价值的自动化测试方案。

相关文章
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
2月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
29天前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
168 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
79 3
|
7月前
|
测试技术 持续交付 UED
探索自动化测试框架:提高软件质量的利器
在软件开发周期中,自动化测试框架扮演着至关重要的角色。本文将深入探讨自动化测试框架如何提升测试效率、确保软件质量和促进持续集成/持续部署(CI/CD)的实施。文章将分析自动化测试的优势、挑战以及实施策略,为读者提供一份全面的自动化测试指南。
|
3月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
42 5
|
3月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
35 2
|
3月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
4月前
|
测试技术 持续交付 Python
自动化测试之美:打造高效的软件质量保障体系
【9月更文挑战第25天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。它不仅能帮助我们发现缺陷,更是一个持续集成和持续部署(CI/CD)过程中不可或缺的部分。本文将通过浅显易懂的语言和实际代码示例,引导读者理解自动化测试的价值,并学会如何实施它,从而提升软件的质量与开发效率。
53 4
|
4月前
|
敏捷开发 监控 测试技术
提升软件质量的利器:自动化测试的实践与反思
在软件开发的生命周期中,测试作为保障产品质量的重要环节,其重要性不言而喻。随着敏捷开发和持续集成等实践的普及,传统的手动测试方式已逐渐无法满足快速迭代的需求。因此,自动化测试作为一种提高测试效率和准确性的有效手段,正受到越来越多开发者的青睐。本文将深入探讨自动化测试的价值、实施步骤以及在实践中可能遇到的问题和解决方案,帮助读者更好地理解和应用自动化测试。
49 2