当前位置: 首页 > news >正文

你真的会做APP UI自动化测试吗?我敢打赌百分之九十的人都不知道这个思路

目录

前言

一,开发语言选择

二,UI测试框架选择

1,Appium

2,Airtest

3,选择框架

三,单元测试框架选择

四,测试环境搭建

1,测试电脑选择

2,测试手机选择

3,开发语言环境

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

五,脚本编写

1,编写测试demo

2,确定目录结构

3,选择测试报告

六,Jenkins集成

七,总结

重点:配套学习资料和视频教学


前言

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

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

一,开发语言选择

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

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

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

二,UI测试框架选择

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

1,Appium

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

2,Airtest

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

3,选择框架

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

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

  1. 无编程基础
  2. 游戏测试
  3. 测试场景较为单一(Appium相对来说较为笨重)
  4. 支付宝小程序自动化(博主目前使用Airtest集成的Poco框架做支付宝小程序自动化测试)

以下情况建议选择Appium:

  1. 测试场景比较复杂(如需要多台手机批量测试)
  2. 测试脚本语言非Python(Airtest目前只支持Python)

                     

 

三,单元测试框架选择

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

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

python主流的单元测试框架:

  1. unittest,Python自带的单元测试框架
  2. pytest,基于unittest开发,易用性好,信息更详细,插件众多
  3. robot framework,基于Python的关键字驱动测试框架,有界面,自带报告及log,功能完善,清晰美观

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

四,测试环境搭建

1,测试电脑选择

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

2,测试手机选择

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

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

3,开发语言环境

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

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

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

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

五,脚本编写

1,编写测试demo

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

2,确定目录结构

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

3,选择测试报告

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

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

             

 

六,Jenkins集成

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

七,总结

总结APP UI自动化可使用以下几种实现方式:

1,python + appium + unittest + HTMLTestRunner

2,python + appium + pytest + pytest-html / allure

3,python + Airtest(AirtestIDE)

4,python + Poco + pytest + pytest-html / allure

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

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图
                        

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方名片加我VX免费领取。

 

 

                    

                                                                 

相关文章:

你真的会做APP UI自动化测试吗?我敢打赌百分之九十的人都不知道这个思路

目录 前言 一,开发语言选择 二,UI测试框架选择 1,Appium 2,Airtest 3,选择框架 三,单元测试框架选择 四,测试环境搭建 1,测试电脑选择 2,测试手机选择 3&#…...

GIT:【基础三】Git工作核心原理

目录 一、Git本地四个工作区域 二、Git提交文件流程 一、Git本地四个工作区域 工作目录(Working Directory):电脑上存放开发代码的地方。暂存区(Stage/Index):用于l临时存放改动的文件,本质上只是一个文件,保存即将提交到文件列…...

【1.12 golang中的指针】

1. 指针 区别于C/C中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝,当我们想要修改某…...

十五.程序环境和预处理

文章目录一.程序翻译环境和执行环境1.ANSI C 标准2.程序的翻译环境和执行环境二.程序编译和链接1.翻译环境2.编译本身的几个阶段3.运行环境三.预处理1.预定义符号2.#define(1)#define定义标识符(2)#define定义宏(3&…...

高并发系统设计之负载均衡

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录DNS负载均衡Nginx负载均衡负载均衡算法负载均衡配置超时配置被动健康检查与主动健康检查LVS/F5Nginx当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到…...

嵌入式Linux从入门到精通之第十四节:Linux IO控制技术

目录 设备控制概述 操作设备文件函数 监听文件描述符 示例 设备控制概述 对于硬件设备,Linux采用了与裸机完全不同的机制进行管理。 Linux下的所有硬件(IO、键盘、鼠标等)均是以文件的形式进行统一管理的,每个设备在/dev/目录下都有一个设备文件与之对应。操作相应的文件…...

/etc/fstab文件

文件/etc/fstab存放的是系统中的文件系统信息,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。当正确的设置了该文件,则可以通过mount /directoryname命令来加载一个文件…...

深度学习神经网络基础知识(一) 模型选择、欠拟合和过拟合

专栏:神经网络复现目录 深度学习神经网络基础知识(一) 本文讲述神经网络基础知识,具体细节讲述前向传播,反向传播和计算图,同时讲解神经网络优化方法:权重衰减,Dropout等方法,最后进行Kaggle实…...

同样做软件测试,为什么有人月入3k-5k,有人能拿到17-20k?

同样做软件测试,为什么有人月入3k-5k,有人能拿到17-20k? 虽然各大培训机构一直鼓吹软件测试行业薪资高,但是依旧有一些拿着3-5k薪资,甚至找不到软件测试工作的人。 先来看一些例子: 小A在一家培训机构学完…...

如何运行YOLOv5的代码,实现目标识别

YOLOv5和v8都由Ultralytics这家创业公司开发的https://github.com/ultralytics/yolov5环境配置git clone https://github.com/ultralytics/yolov5.git作者要求python3.6(我用的3.8也能跑通)torch1.7.0pip install -r requirements_my_version.txtrequire…...

【正点原子FPGA连载】第十四章SD卡读写TXT文本实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十四章SD卡读写…...

【人工智能AI :Open AI】我想写一本书,书名是《中国文学史》,帮我列一下目录,细化到三级目录,不少于2000字。

我想写一本书,书名是《中国文学史》,帮我列一下目录,细化到三级目录,不少于2000字。 中国文学史 第一章 经典文学 1.1 先秦文学 1.1.1 先秦诗歌 1.1.1.1 小雅 1.1.1.2 大雅 1.1.1.3 颂 1.1…...

「文档数据库之争」MongoDB和CouchDB的比较

MongoDB和CouchDB都是基于文档的NoSQL数据库类型。文档数据库又称mdocument store,通常用于存储半结构化数据的文档格式及其详细描述。它允许创建和更新程序,而不需要引用主模式。移动应用程序中的内容管理和数据处理是可以应用文档存储的两个字段。Mong…...

c++11 标准模板(STL)(std::unordered_set)(三)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

事件循环机制eventLoop?Js事件流?JavaScript如何实现异步编程?

单线程模式&#xff1a;由用户交互和修改dom的问题&#xff0c;只能决定js就是单线程任务异步模式诞生&#xff1a;同步模式遇到耗时操作页面便会阻塞&#xff0c;就像图片加载&#xff0c;接口获取&#xff0c;页面会一直等待&#xff1b;在执行主线程时&#xff0c;先执行同步…...

视频播放器倍速、清晰度切换、m3u8下载

视频上很容易就可以做到倍速播放&#xff0c;一般的视频格式都是每秒固定的帧数&#xff0c;按比例跳帧就可以了。音频上其实也可以用这种方式来直接删除一些周期&#xff0c;因为电脑里的音频也是数字化离散化地储存的。但是为了使声音不失真&#xff0c;应该都用了稍复杂一点…...

将Nginx 核心知识点扒了个底朝天(五)

什么叫 CDN 服务&#xff1f; CDN &#xff0c;即内容分发网络。 其目的是&#xff0c;通过在现有的 Internet中 增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络边缘&#xff0c;使用户可就近取得所需的内容&#xff0c;提高用户访问网站的速度。 一般…...

【基础算法】差分

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

【LeetCode】剑指 Offer(5)

目录 写在前面&#xff1a; 题目&#xff1a; 题目的接口&#xff1a; 解题思路1&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 解题思路2&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a;…...

外包出来,朋友内推我去一家公司,问的实在是太...

外包出来&#xff0c;没想到算法死在另一家厂子&#xff0c;自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...