【建议收藏!】APP UI自动化测试,思路全总结在这里了。

2023-11-19

首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。

接下来,一起总结一下APP UI自动化测试的思路吧。

开发语言选择


通常用于自动化测试的编程语言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本,但对于编程基础基本为0的童鞋(或者专注于做自动化测试的童鞋),推荐学习使用Python。

相对于其他语言,Python做自动化测试有以下优点:

  • 对于初学者来说,Python语法简洁,可读性强,易于学习
  • 有强大的第三方库,编写脚本效率更高
  • Python中的Pytest自动化测试框架是目前最流行的测试框架之一
     

UI测试框架选择

选择开发语言之后,我们需要选择UI测试框架。目前较为主流或者使用较多的APP UI自动化测试框架有Appium、Airtest等。

Appium

开源

  • Appium server支持在Windows、macOS、Linux上运行
  • 支持多种主流编程语言,如Python、Java、Javascript、Ruby等
  • 支持Android、ios、H5自动化测试(集成了UiAutomator、UiAutomation框架)
  • 环境搭建较为复杂

Airtest

  • 由网易开发,只支持python语言
  • 提供集成Airtest与Poco两个测试框架的强大的IDE,对新手很友好
  • 集成基于图像识别的UI自动化测试框架airtest,即使不懂代码也能编写自动化脚本
  • 跨平台,可对Windows、Android和iOS应用软件进行自动化测试
  • 对游戏测试较为友好
  • Airtest与Poco本质上是python的两个第三方库,测试环境搭建没有Appium那么复杂

选择框架

根据实际情况选择合适的框架。

以下情况可以优先选择网易的Airtest:

  • 无编程基础

  • 游戏测试

  • 测试场景较为单一(Appium相对来说较为笨重)

  • 支付宝小程序自动化(博主目前使用Airtest集成的Poco框架做支付宝小程序自动化测试) 

以下情况建议选择Appium:

  • 测试场景比较复杂(如需要多台手机批量测试)

  • 测试脚本语言非Python(Airtest目前只支持Python)

单元测试框架选择

区别于上面所说的UI测试框架,单元测试框架用于加载测试用例、执行测试用例、断言、输出测试结果等。

不同的开发语言有各自对应的单元测试框架,如Java有JUnit、TestNG、Robot等,Python有unittest、pytest等。博主主要使用Python做自动化测试,所以这里只针对Python单元测试框架做说明。

python主流的单元测试框架:

  • unittest,Python自带的单元测试框架

  • pytest,基于unittest开发,易用性好,信息更详细,插件众多

  • robot framework,基于Python的关键字驱动测试框架,有界面,自带报告及log,功能完善,清晰美观

这里强烈推荐使用pytest,功能强大且容易上手,官方文档为英文,中文可参考Pytest 使用手册。

测试环境搭建

测试电脑选择

有条件的话建议使用Mac机器专门用于UI自动化测试,因为ios app ui自动化只能在Mac机器上进行。

测试手机选择

刚开始进行测试脚本调试时可以选择模拟器,Android模拟器可选择Gernymotion、夜神模拟器,具体参考博客Android模拟器的使用。

待整个测试项目开发完成后,建议换成真机跑自动化脚本,这样更接近真实的用户使用场景。

开发语言环境

建议安装python 3以上的版本,官方已经停止对python2版本的更新维护。

UI自动化测试框架环境搭建

windows环境下搭建Appium请参考其他博客,Mac下搭建Appium稍微复杂点,后续会写博客分享。

若选择Airtest框架的话,请参考官网。

脚本编写

编写测试demo

为了验证整个测试环境是否搭建成功、是否能跑通用例,一般我们需要先编写简单的测试脚本并执行,通过则说明整个环境搭建成功。

确定目录结构

推荐使用Page Object设计模式来开发APP UI自动化测试项目,请参考博客Page Object设计模式。

选择测试报告

不同的开发语言、不同的单元测试框架可选用不同的测试报告。在python中,unittest框架使用HTMLTestRunner或BSTestrunner生成测试报告,可参考博客unittest单元测试框架。Pytest框架使用pytest-html生成报告或通过allure定制测试报告。

以上步骤完成后,继续往测试项目里新增测试用例便可。

JenKins集成

根据上述步骤编写完成整个app UI自动化测试项目,且运行一段时间稳定后,就可以考虑进行Jenkins的集成,请参考博客Jenkins集成appium自动化测试(Windows篇) 或 远程Jenkins新增Mac节点。

总结

  • 总结APP UI自动化可使用以下几种实现方式:
  • python + appium + unittest + HTMLTestRunner
  • python + appium + pytest + pytest-html / allure
  • python + Airtest(AirtestIDE)
  • python + Poco + pytest + pytest-html / allure

可根据实际情况自行选择。、

最后,绵薄之力

最后感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

 获取方式 :

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【建议收藏!】APP UI自动化测试,思路全总结在这里了。 的相关文章

  • 软件测试|Pydantic详细介绍与基础入门

    简介 Pydantic 是一个强大的 Python 库 用于数据验证和解析 特别是用于处理 JSON 数据 它的主要目标是使数据验证和解析变得简单 直观和可维护 本文将介绍 Pydantic 的基础知识 包括如何定义模型 验证数据以及处理错
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具 用于模拟用户与网页交互 然而 当我们在使用 Selenium 时 可能会遇到一个常见的异常 即 StaleElementReferenceException 这个异常通常在我们尝试与网页上
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|教你如何使用Python绘制出奥运五环旗

    简介 我们之前介绍过使用turtle来绘制正多边形 但是绘制正多边形只是turtle模块最基础的使用 我们可以使用turtle模块绘制出更多不一样的精彩图形 本文就来给大家介绍一个比较简单的turtle绘图实例 绘制奥运五环旗 初始化参数
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关

随机推荐

  • 服务器上安装anaconda

    1 下载anaconda 这里有两种方法 第一种在官网上下载对应版本的安装包 地址 https www anaconda com products individual 再将安装包上传到服务器 之后输入命令 完成安装 第二种方法 在控制台上
  • Generative AI 新世界

    在上一篇 Generative AI 新世界 大型语言模型 LLMs 概述 中 我们一起探讨了大型语言模型的发展历史 语料来源 数据预处理流程策略 训练使用的网络架构 最新研究方向分析 Amazon Titan LLaMA PaLM E 等
  • android的webView的教程,Android WebView 应用界面开发教程

    WebView组件本身就是一个浏览器实现 Android5 0增强的WebView基于Chromium M37 直接支持WebRTC WebAudio WebGL 开发者可以直接在WebView中使用聚合 Polymer 和Material
  • Python 查找文件夹下某一类型的文件

    查找文件夹下面的某一类型的文件 并输出列表 import os 例如txt格式 def get files list directory file type txt file list for f root f dirs f files i
  • Springboot使用slf4j记录日志

    前言 在项目开发中 记录日志是必做的一件事情 而当我们使用Springboot框架时 记录日志就变得极其简单了 springboot内置了slf4j日志框架 我们只需要添加依赖 做一些简单的配置就ok了 下面 我们就来看看在Springbo
  • python圆的代码:如何使用Python绘制一个圆形

    Python圆的代码可以使用matplotlib库中的Circle函数来实现 Circle函数接受两个参数 一个是圆心的坐标 x y 另一个是圆的半径r 下面是一个简单的Python代码示例 Python圆的代码可以使用matplotlib
  • Matlab连接字符串的方法

    Matlab连接字符串的方法 2011 04 20 13 22 42 转载 标签 杂谈 分类 matlab 在Matlab中 想要将两个字符串连接在一起 有以下的方法 假定有两个字符串 gt gt str1 Iloveyou str2 12
  • 【SQL注入-15】自动化注入案例—以sqli-labs-less9为例(利用sqlmap工具)

    目录 1 前言 2 自动化注入案例 以sqli labs less9为例 2 1 实验平台 2 2 注入前准备 2 3 判断注入点及注入类型 2 3 1 自动判断注入点及注入类型 2 3 2 手动判断注入点及注入点类型 2 4 爆库名 2
  • 云函数部署之网易云

    云函数部署之网易云 云函数 什么是云函数 就是可以让你没有服务器 本地电脑不用下载Python也可以使用这个项目 而且还是白嫖 既解决了很多人部署的麻烦 也给了那些被劝退的朋友回来的勇气 十分钟便可以全部弄完 1 进入云函数 这里拿腾讯云的
  • caffe im2col 详解

    caffe im2col详解 本文讲解的是caffe中卷积过程 众所周知caffe中卷积采用的是im2col和sgemm的方式 网上已经有很多的im2col的讲解 原本不打算写这篇文章 在此不得不吐槽下 网上有不少的讲解caffe im2c
  • redis缓存雪崩、穿透、击穿

    这篇文章我们来了解一下一些redis的高并发问题以及他的解决方法 上图是一个简单的数据查询流程 前台请求 后台先从缓存中取数据 取到直接返回结果 取不到时从数据库中取 数据库取到更新缓存 并返回结果 数据库也没取到 那直接返回空结果 一 r
  • CentOs8 安装 Mysql 8 步骤及问题解决

    1 Mysql数据库采用的版本是Mysql8 在Mysql官方网站 MySQL 下载Mysql安装包 2 安装新版mysql之前 我们需要将系统自带的mariadb lib卸载 执行命令 rpm qa grep mariadb 若检查出系统
  • sql数据库查询

    sql数据库查询要点 查询 在GROUP BY 的后面使用 HAVING指定筛选条件 select from 表 group by 分组条件 having 筛选条件 内连接INNER JOIN 只返回符合条件的值 SELECT FROM t
  • IntelliJ IDEA中如何使用JUnit4

    背景 最近参与了一个Anroid医疗项目 其中项目底层有很多基础类及通讯类 而且很多涉及复杂的字节操作还有多线程同步及状态机处理 这样的项目做一下TDD还是必要的 尽量项目前期把风险降低一些 现在的问题是本人使用的是IntelliJ开发的A
  • 【JavaScript 逆向】猿人学 web 第十八题:jsvmp,洞察先机

    案例目标 网址 第十八题 jsvmp 洞察先机 猿人学 本题目标 抓取 5 页数字 计算加和并提交结果 常规 JavaScript 逆向思路 一般情况下 JavaScript 逆向分为三步 寻找入口 逆向在大部分情况下就是找一些加密参数到底
  • 2019 icpc西安邀请赛 点分治

    https nanti jisuanke com t 39277 求 sum 异或和为0的路径 被其他路径包含的次数 如果只是求异或和为0的路径数量 其实是裸点分治 但是加上要求之后 就会复杂一些 进行分类讨论 再特殊处理根节点就行 由于信
  • Unraid使用记录:使用Docker与虚拟机

    文章目录 前言 使用Docker 使用示例 相关说明 使用虚拟机 使用示例 相关说明 硬件直通 后记 前言 Unraid本身功能挺少的 很多功能都是要通过插件 Docker和虚拟机来实现的 Docker可以简单的实现各种丰富的功能 而虚拟机
  • 群晖DS Video(Station)自动同步视频简介和海报(最新官方解决方案)

    目录 一 前言 二 前提 三 实现 1 注册The Movie Database账号 2 创建API 3 修改群辉Hosts A 在群辉中开启SSH的访问 B 然后通过ssh命令登录到群辉后台 C 通过sudo i指令切换到root用户指令
  • python的循环控制结构_Python的控制结构之For、While、If循环问题

    传统Python语言的主要控制结构是for循环 然而 需要注意的是for循环在Pandas中不常用 因此Python中for循环的有效执行并不适用于Pandas模式 一些常见控制结构如下 for循环 while循环 if else语句 tr
  • 【建议收藏!】APP UI自动化测试,思路全总结在这里了。

    首先想要说明一下 APP自动化测试可能很多公司不用 但也是大部分自动化测试工程师 高级测试工程师岗位招聘信息上要求的 所以为了更好的待遇 我们还是需要花时间去掌握的 毕竟谁也不会跟钱过不去 接下来 一起总结一下APP UI自动化测试的思路吧