自动化测试方案设计和实现

article/2025/9/21 13:04:51

编辑推荐:
本文主要介绍了几种测试类型需求,以及自动化测试方案设计和实现,希望对您的学习有所帮助。

本文来自于知乎,由火龙果软件Alice编辑、推荐。

如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以810119819,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

背景

为了充分利用云测试平台维护的设备,提升空闲设备使用率,开展自动化测试替代部分回归测试、重复性测试和多设备兼容测试,同时满足如下几种类型的自动化测试需求:

随机测试(monkey、随机操作指令):

在多设备执行的基础上完成安装、启动、覆盖安装、monkey 测试 / 随机指令、卸载等一系列操作。

遍历测试(深度遍历、智能探索):

在 monkey 测试 / 随机指令的基础上,对执行步骤进行改造,将随机操作替换为 app 内部页面的深度遍历,设计算法策略在一定程度上对被测 app 进行智能探索操作。

UI 自动化测试(appium):

在自动化测试框架支持的基础上,提供多设备脚本运行能力,测试开发人员只需要编写符合规则的测试脚本即可以在云测试平台上选择多个设备进行测试,获得测试结果。

在以上自动化测试的同时,测试报告中需要体现如下内容:

1.实时生成测试报告、测试结果数据

2.实时获取设备的日志并有对应的分析结果

3.可控的自动化测试过程

4.执行过程中设备页面截图或录制视频

5.测试结果中设备类型数据分析

在上面背景说明中,介绍了几种测试类型需求,前两种的设计流程比较简单,也不需要外部人员的参与,第三种测试类型设计比较复杂,后续文章说明也以第三种测试类型为主。

自动化执行框架设计

自动化框架

在 知乎移动端云测试平台实践(二)—— Agent 设计和实现 中自动化框架调研对比和各大云测试平台的使用,选择了在各方面都具有一定优势的自动化测试框架 appium 作为自动化测试的执行控制层,本地启动 appium hub 的方式接收脚本执行请求,这里就不多加赘述了。

脚本语言和执行框架

云测试平台是由 Java + kotlin 开发,客户端控制都是基于 Java 实现,这里自然选择 Java 作为脚本语言,后续的脚本、流程说明也是以 Java 语言实现为主,但是在脚本语言选择上这里不是强制要求,同样可以选择Ruby、Python、PHP,、JavaScript 和 C#,只是后续的实现需要平台多做一步兼容而已。

在脚本执行方面没有使用类似 junit、testng等第三方的运行框架,主要是为了保持在运行过程中对脚本运行的控制和运行数据的交互,如下是脚本运行实现方案:

1.由平台提供一定限制范围的脚本编写能力

主要是指运行过程的脚本编写,以及如何提供类似截图、步骤日志、检查点等公用方法,对于 Java 来说可以将一些公共的方法抽象出来放到脚本的父对象中,通过继承将脚本编写能力赋予给脚本本身,Python 也可以统一一个标准的类库,通过引入的方式使用。

2.运行时由 agent 动态编译编写完成的脚本,反射实例化脚本对象

运行时处理脚本需要区分动态语言和非动态语言,还是以 Java、Python 为例,由于没有借用第三方的测试框架,触发脚本运行对于 Java 来说需要进行编译,也就是标题中说到的动态编译,然后通过反射实例化对象运行,这里有两个要求,首先脚本编写需要在云测试平台限定的包内,其次脚本运行、继承的方法需要符合约定的规则。对于 Python 来说先将脚本内容以 IO 的方式写到内存中,然后反射通过字符串的形式,导入模块、去模块寻找约定函数执行。

3.使用反射实例对象运行脚本,并调用实例中的方法和脚本进行数据、强控制交互

实例化脚本后开始运行脚本,运行前需要将所需要的运行资料注入到实例中,例如: appium 的 appiumDriver,运行同时可以随时调用实例化对象中的约定方法对脚本运行进行控制,比如获取执行步骤、日志、图片,传递参数,控制脚本暂停、运行、停止等交互,这也是为什么没有使用一些第三方框架来触发测试的原因。

通过上述过程基本上实现了用例到执行的基本过程,如图:在这里插入图片描述
也就是说只要提供了符合规范的脚本,就可以利用框架的通用性将脚本运行在任何 appium 支持的设备上,在架构上也剥离了自动化测试最关键的工作部分即:脚本编写,也为脚本管理、数据模板结合等用例的功能丰富提供更多可能性。

流程设计

如下是脚本自动化测试完整的业务执行方案:在这里插入图片描述
自动化测试 UI 代码以 git 工程的方式托管在公司的 git 服务器上,在工程基础上编写脚本,调试脚本通过之后合并入 git 工程,在 gitlab 上每一个脚本都会有一个唯一的地址,通过这个地址可以获取到指定脚本,然后通过接口 / 表单的方式提交脚本运行测试,运行完成得到质量报告。

值得说明一下的是,在自动化测试过程中,公共方法、selenium / appium 公共 page object 等脚本数据会随着自动化测试的深入越发庞大,所以需要图中的公共方法抽取过程,这样带来的好处是由于脚本的抽取、复用会使脚本的编写效率会越来越快。

如下是脚本执行流程结构图,包含脚本执行的流程和结果收集:在这里插入图片描述
脚本执行数据、执行交互设计方案:在这里插入图片描述
这里主要体现的是脚本和运行平台间的数据交互、执行能力交互,比如脚本执行时需要使用到 appium 的 driver,而这个 driver 是通过平台的设备参数来决定的,在运行时平台动态生成 driver 然后通过协议类的方式注入 driver 到脚本内部,运行过程中通过协议类的停止、暂停、等待、销毁等方法进行控制,运行完成后通过协议类获取到运行结果。在脚本需要一些特定的功能时,也可以通过协议类引入接口方法,然后运行平台通过接口代理的方式动态注入实现类的方式实现。

在实施的过程中发现有两个难点,主要如下:

类和第三方包引用管理引起的脚本编译问题

在自动化测试脚本编写过程中,不可避免需要使用一些引入包,比如一些方便的工具类使用包等,对于 JAVA 脚本来讲更新类、包引入等都需要重新编译部署才可以运行使用,测试平台不可能会因为脚本类、包的变化重新编译部署平台,而脚本的编写绝大部分都是类引入的变化,包引入变化的比例很小,所以在类的变化上使用 Java 动态编译技术解决类的动态引入,第三方的包引入更新则通过平台工程的发版提前引入这些包升级完成。

协议类和包更新的自动化更新过程

在云平台和脚本工程中间是通过协议类进行数据交互,而定义的这个协议类和包发生之后按照上面的方案来说是需要云平台重新部署才可以的,在实践中发现脚本的能力建设和扩展等都需要通过协议类的修改才能实现,这就决定了这个协议类会频繁的发生变更,所以 Agent 工程中在动态编译前,手动校验了服务器上的协议类版本,如果发现了新版则下载新版的协议类 jar,在动态编译时替换到 -classpath 的协议类版本参数,这样就做到了指定协议类内容的动态更新和自动化部署。

脚本设计

在上面提到过 「对于 Java 来说可以将一些公共的方法抽象出来放到脚本的父对象中,通过继承将脚本编写能力赋予给脚本本身」,所以脚本设计分两个模块:

协议父对象实现在这里插入图片描述
如图所示父对象中提供了测试驱动 androidDriver、log 日志、checkPoint 检查点、img 截图等脚本能力

用例子对象编写在这里插入图片描述
如图所示,实际的脚本继承父对象的能力之后,可以完成编写相关页面测试逻辑、业务逻辑的自动化测试任务

脚本调试和运行

平台脚本调试可以通过如下两种方式进行:

本地调试

自行使用 main 方法、或者使用单元测试框架调试脚本通过在这里插入图片描述
然后将主体修改为规定格式的自动化脚本,视情况修改 appiumDriver 引入方式、添加日志记录、截图、检查点等
在这里插入图片描述
远程调试

远程调试需要在云测试平台上申请一台使用设备如图:在这里插入图片描述
点击图中的按钮,将脚本粘入运行,如下图:
在这里插入图片描述
测试报告展示

报告主要分为如下几个部分

测试基本信息
在这里插入图片描述
主要展示测试过程的 app 基础信息和测试相关的一些信息展示,概况展示脚本所有检查点的通过比例,脚本运行的设备、通过、失败的数据统计,运行概况展示每一个脚本在每一个设备上运行的过程和结果,以脚本和设备为维度,log 链接中会展示详细的脚本运行步骤日志

检查点概况在这里插入图片描述
脚本运行的核心结果,主要展示此次自动化测试过程中所有的测试结果

截图/步骤/异常在这里插入图片描述
在脚本运行结束后,通过反射的方式获取到脚本用例的详细数据,通过 「截图/步骤/异常」细化展示每一次运行的步骤、图片、和检查结果

性能图表、过程视频在这里插入图片描述
在这里插入图片描述
同时在脚本运行过程中也会通过 appium 框架功能实现设备的网络上下行统计,然后渲染性能数据生成图表并提供视频回放脚本执行过程。

以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

软件测试是IT相关行业中最容易入门的学科~不需要开发人员烧脑的逻辑思维、不需要运维人员24小时的随时待命,需要的是细心认真的态度和IT相关知识点广度的了解,每个测试人员从入行到成为专业大牛的成长路线可划分为:软件测试、自动化测试、测试开发工程师 3个阶段。

这里有我整理的一些资料,如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加我们在这里插入图片描述


http://chatgpt.dhexx.cn/article/eKkuZLvY.shtml

相关文章

测试方案模板

(iwebshop项目)测试方案 (仅供参考) 文档版本控制 文档版本号 日期 作者 审核人 说明 V1.0 2017/11/24 陈.. 创建文档 1. 概述 【软件的错误是不可避免的,所以必须经过严格的测试。通过对…

测试方案/测试计划/测试报告,经常弄混要怎么区分?

目录 前言 1、测试方案和测试计划的区别 2、测试方案和测试计划什么时候编写 3、测试方案 4、测试计划 5、测试报告 前言 测试方案和测试计划,测试报告几乎都是每个测试人员都必须掌握的。但有时经常搞混,特别是测试方案和测试计划。 1、测试方案…

自动化测试方案

自动化测试体系方案 方案1全编写代码流程 UI自动化: 使用python或java,配合selenium库及pytest框架做UI自动化测试。(通过selenium的webdriver驱动,驱使浏览器) 1. WebDriver API(基于Java、Python&…

SpringBoot - 应用程序测试方案

文章目录 PreSpring Boot 中的测试解决方案测试 Spring Boot 应用程序初始化测试环境SpringBootTestSpringBootTest - webEnvironment RunWith 注解与 SpringRunner 执行测试用例使用 DataJpaTest 注解测试数据访问组件Service层和Controller的测试使用 Environment 测试配置信…

测试计划和测试方案有什么区别?

一、测试计划 1、测试计划是什么? 测试计划是组织管理层面的文件,从组织管理的角度对一次测试活动进行规划。对测试全过程的测试范围、组织、资源、原则等进行规定和约束,并制定测试全过程各个阶段的任务分配以及时间进度安排,并…

测试方案的设计及模板

测试方案设计及模板 测试方案设计概括xx测试方案_模板1.引言2.测试策略3.测试设计4.测试资源5.输出文档6.修订记录推荐书籍 测试方案设计概括 xx测试方案_模板 1.引言 1.1目的 根据需要实现的需求与软件的设计架构,设计满足测试目标的方案,用来指导测试…

软件测试方案设计

文章目录 1、软件框架2、测试方案设计2.1、测试覆盖2.2、功能测试和压力测试2.3、自动化测试2.4、持续集成 1、软件框架 站在软件的角度,一个系统通常可以分为以下四个层次: 应用软件层(app layer)。用户重点自己开发的应用代码,例如我们的运…

又发现个新的全网资源搜索神器

平常用谷歌百度搜资源一个个翻很费劲,这里分享几个最新可用的全网网盘资源搜索神器,在公众号苏生不惑后台回复神器 获取软件下载地址。 混合盘 这个app聚合搜索多个网盘资源,可从数十个网盘搜索网站中检索出你需要的资源,app非常简…

magnetX,资源搜索神器!老司机快上车!

magnetX 中文版是一款非常好用的资源搜索神器,界面干净简洁并且不会有弹窗。而且可以通过关键字搜索,或者网址过滤这两种方式快速找到你想要的资源,并且还能配合WebTorrent在线播放,还可以配合下载工具进行一键下载资源&#xff0…

【森林SOU】小巧绿色版搜索神器

种子搜索神器是一款基于P2P技术的资源搜索软件,搜索神器有很多,其实下面为大家带来的这个搜索工具就很不错,小巧功能强大无需安装,这里有着十分全面的资源可以自由搜索,下载也没有什么速度限制,十分便捷&am…

2014 三款强大搜片神器 | 各种视频资源 | 电影电视剧搜索

您还在百度上搜索电影吗,即浪费时间有累眼睛,并且还经常找到的不是自己想要的资源(某位仁兄下来了几个G的葫芦娃~~)。 亲们的福音来了。三款超强大的搜索下载看片软件很适合你。 只要有了他们,找神马资源都会变的轻松,So Easy~~ 下…

分享几个好用的百度网盘搜索引擎

与大家分享几个好用的网盘搜索神器,方便大家搜索百度云网盘分享的资源文件。(已测试,目前都可用) 一、 盘搜 http://www.pansou.com/ 网站简洁,搜索即可出来结果,点击搜索结果就能跳转。 二、 飞鱼盘搜 h…

吊打本地搜索神器everthing,最快 最强的电脑本地搜索神器!

Windows的小伙伴应该都对Windows资源管理器 自带的『文件搜索功能』说一句“垃圾” 全盘搜索一个文件居然需要几十秒 而为了解决Windows搜索慢的问题 不少小伙伴应该都用过或者听说过『Everything』这个软件 不论磁盘空间多大、存有多少文件 Everything都能以毫秒级的速度搜…

推荐一些非常好用的网盘搜索神器

网盘工具的兴起,大多数的用户会在网盘上分享自己的资源。那么如何快速的在网盘上找到你想要的资源呢 ? 而今天推荐的就是一些网盘搜索引擎,它可以使我们快速搜搜索到自己想要的资源,从而提高了整体的搜索效率。下面将介绍一些搜索引擎&#…

easySearch:一款聚合资源搜索神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 大家好,我是免费哥。 今天给大家带来的资源是:资源聚合搜索神器easySearch 资料简介 这是一款Chrome浏览器插件,支持主流链接…

资源搜索引擎

1.DogeDoge搜索引擎:https://www.dogedoge.com/ 不追踪,不误导。 2.秘迹搜索:https://mijisou.com/ 这是一个 不追踪 你的搜索引擎 3.小白盘:https://www.xiaobaipan.com/ 4.云盘精灵(资源搜索)&#xf…

各大网盘搜索资源神器免费送!!!

文章目录 百度网盘资源搜索神器系列1、盘多多:http://www.panduoduo.net/2、盘搜:http://www.pansou.com/3、盘搜搜:http://www.pansoso.com/ 百度网盘资源搜索神器系列 给经常玩百度网盘的玩家推荐微信公众号:性感的小君君 提供…

黑科技丨资源搜索神器

黑科技丨资源搜索神器 黑科技丨资源搜索神器 资源整合网站 网盘搜索学术搜索数据搜索 影视资源 前言:本文向读者推荐各种好用的资源搜索神器。 资源整合网站 网盘搜索 资源搜索:一款集合各大搜索于一身的搜索网站,如一网打尽、56网盘、水滴等…

网盘资源搜索神器,只有你想不到没有你搜不到的,老司机必备!

1. 盘搜搜 http://www.pansoso.com/ 非常老牌的一个搜索网站,搜出来的资源大部分都能用。而且资源也比较全,很多想要的都能快速找到。 2. 胖次 https://www.panc.cc/ 专业的网盘资源搜索工具,涵盖了视频、音乐、图片、小说以及APP等不同类…

线性回归学习

以下笔记来自于黑马程序员十三天入门机器学习 线性回归 1. 什么是线性回归1.1 定义与公式1..2 线性回归的特征与⽬标的关系分析 2 线性回归api初步使⽤2.1 线性回归API2.2 举例2.3 步骤分析2.4 代码过程 3.线性回归的损失和优化3.1 损失函数3.2 优化算法3.2.1 正规⽅程3.2.1.1…