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

简介: 自动化测试能力建设过程中,自动化框架选型、框架设计核心和思路、自动化能力平台接入,是自动化测试能力建设过程中重要环节。文章分享优酷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


未来规划

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

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

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
4月前
|
测试技术 持续交付 UED
探索自动化测试框架:提高软件质量的利器
在软件开发周期中,自动化测试框架扮演着至关重要的角色。本文将深入探讨自动化测试框架如何提升测试效率、确保软件质量和促进持续集成/持续部署(CI/CD)的实施。文章将分析自动化测试的优势、挑战以及实施策略,为读者提供一份全面的自动化测试指南。
|
5天前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
14天前
|
测试技术 持续交付 Python
自动化测试之美:打造高效的软件质量保障体系
【9月更文挑战第25天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。它不仅能帮助我们发现缺陷,更是一个持续集成和持续部署(CI/CD)过程中不可或缺的部分。本文将通过浅显易懂的语言和实际代码示例,引导读者理解自动化测试的价值,并学会如何实施它,从而提升软件的质量与开发效率。
34 4
|
14天前
|
敏捷开发 监控 测试技术
提升软件质量的利器:自动化测试的实践与反思
在软件开发的生命周期中,测试作为保障产品质量的重要环节,其重要性不言而喻。随着敏捷开发和持续集成等实践的普及,传统的手动测试方式已逐渐无法满足快速迭代的需求。因此,自动化测试作为一种提高测试效率和准确性的有效手段,正受到越来越多开发者的青睐。本文将深入探讨自动化测试的价值、实施步骤以及在实践中可能遇到的问题和解决方案,帮助读者更好地理解和应用自动化测试。
14 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
2月前
|
人工智能 Java 测试技术
自动化测试之美:如何用Selenium提升Web应用的质量保证
【8月更文挑战第24天】 在软件开发的海洋里,自动化测试如同一艘救生艇,帮助开发团队保持代码质量的同时,还能确保他们不会淹没在功能的迭代和bug修复中。Selenium,作为一个用于Web应用程序测试的工具,它的强大之处在于模拟真实用户操作的能力。本文将通过浅显易懂的语言和实际代码示例,引导读者理解Selenium的魅力所在,以及如何有效利用它来提升Web应用的测试效率和覆盖率。
|
2月前
|
测试技术 持续交付 数据安全/隐私保护
自动化测试的奥秘:揭开软件质量保证的面纱
【8月更文挑战第24天】在软件开发的海洋中,自动化测试如同一座灯塔,指引着项目安全地航行。本文将深入浅出地探讨自动化测试的重要性、实施策略以及它如何成为现代软件开发不可或缺的一部分。通过生动的例子和实用的建议,我们将一起探索自动化测试的世界,解锁其对提升软件质量和开发效率的秘密。
|
2月前
|
敏捷开发 安全 jenkins
自动化测试在敏捷开发中的应用:加速迭代,保障质量
【8月更文挑战第2天】自动化测试在敏捷开发中扮演着至关重要的角色。通过提升测试效率、提高测试覆盖率、及时反馈与修复等优势,自动化测试为敏捷开发团队提供了强大的支持。然而,在实施自动化测试的过程中也面临着一些挑战。通过选择合适的测试框架和工具、制定测试计划和策略、持续优化和维护等策略以及遵循最佳实践并克服挑战,我们可以充分发挥自动化测试在敏捷开发中的潜力,为软件质量的提升和快速迭代保驾护航。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索自动化测试的边界:如何有效整合AI技术提升软件质量
随着人工智能技术的飞速发展,其在软件测试领域的应用逐渐深入。本文将探讨自动化测试与AI结合的现状和挑战,分析AI在提升测试效率、发现深层次缺陷等方面的潜力,并提出实现这一融合的实践策略。
38 0