阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。接下来,一起总结一下APP UI自动化测试的思路吧。
01
开发语言选择
通常用于自动化测试的编程语言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本,但对于编程基础基本为0的童鞋(或者专注于做自动化测试的童鞋),推荐学习使用Python。
相对于其他语言,Python做自动化测试有以下优点:
- 对于初学者来说,Python语法简洁,可读性强,易于学习
- 有强大的第三方库,编写脚本效率更高
- Python中的Pytest自动化测试框架是目前最流行的测试框架之一
02
测试框架选择
选择编开发语言之后,我们需要选择UI测试框架。目前较为主流或者使用较多的APP UI自动化测试框架有Appium、Airtest等。
1、Appium
- 持续维护中且开源
- Appium server支持在Windows、macOS、Linux上运行
- 支持多种主流编程语言,如Python、Java、Javascript、Ruby等
- 支持Android、ios、H5自动化测试(集成了UiAutomator、UiAutomation框架)
- 环境搭建较为复杂
2、Airtest
- 由网易开发(官方文档),只支持python语言
- 提供集成Airtest与Poco两个测试框架的强大的IDE,对新手很友好
- 集成基于图像识别的UI自动化测试框架airtest,即使不懂代码也能编写自动化脚本
- 跨平台,可对Windows、Android和iOS应用软件进行自动化测试
- 对游戏测试较为友好
- Airtest与Poco本质上是python的两个第三方库,测试环境搭建没有Appium那么复杂
3、选择框架
根据实际情况选择合适的框架。以下情况可以优先选择网易的Airtest (Airtest官网):
- 无编程基础
- 游戏测试
- 测试场景较为单一(Appium相对来说较为笨重)
- 支付宝小程序自动化(博主目前使用Airtest集成的Poco框架做支付宝小程序自动化测试)
以下情况建议选择Appium:
- 测试场景比较复杂(如需要多台手机批量测试)
- 测试脚本语言非Python(Airtest目前只支持Python)
03
单元测试框架选择
区别于上面所说的UI测试框架,单元测试框架用于加载测试用例、执行测试用例、断言、输出测试结果等。
不同的开发语言有各自对应的单元测试框架,如Java有JUnit、TestNG、Robot等,Python有unittest、pytest等。博主主要使用Python做自动化测试,所以这里只针对Python单元测试框架做说明。
python主流的单元测试框架:
- unittest,Python自带的单元测试框架
- pytest,基于unittest开发,易用性好,信息更详细,插件众多
- robot framework,基于Python的关键字驱动测试框架,有界面,自带报告及log,功能完善,清晰美观
这里强烈推荐使用pytest,功能强大且容易上手,官方文档为英文,中文可参考Pytest 使用手册)。
04
测试环境搭建
1,测试电脑选择
有条件的话建议使用Mac机器专门用于UI自动化测试,因为ios app ui自动化只能在Mac机器上进行。
2,测试手机选择
刚开始进行测试脚本调试时可以选择模拟器,Android模拟器可选择Gernymotion、夜神模拟器,待整个测试项目开发完成后,建议换成真机跑自动化脚本,这样更接近真实的用户使用场景。
3,开发语言环境
建议安装python 3以上的版本,官方已经停止对python2版本的更新维护。
4,UI自动化测试框架环境搭建
windows环境下搭建Appium请参考appium环境搭建,Mac下搭建Appium稍微复杂点,后续会分享。若选择Airtest框架的话,请参考官网。
05
脚本编写
1、编写测试demo
为了验证整个测试环境是否搭建成功、是否能跑通用例,一般我们需要先编写简单的测试脚本并执行,通过则说明整个环境搭建成功。
2、确定目录结构
推荐使用Page Object设计模式来开发APP UI自动化测试项目请
3、选择测试报告
不同的开发语言、不同的单元测试框架可选用不同的测试报告。在python中,unittest框架使用HTMLTestRunner或BSTestrunner生成测试报告,Pytest框架使用pytest-html生成报告或通过allure定制测试报告。
以上步骤完成后,继续往测试项目里新增测试用例便可。
06
Jenkins集成
根据上述步骤编写完成整个app UI自动化测试项目,且运行一段时间稳定后,就可以考虑进行Jenkins的集成。
07
总结
总结APP UI自动化可使用以下几种实现方式:
- python + appium + unittest + HTMLTestRunner
- python + appium + pytest + pytest-html / allure
- python + Airtest(AirtestIDE)
- python + Poco + pytest + pytest-html / allure
可根据实际情况自行选择。有任何问题可以看下面
阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看相关推荐
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...
- Appium APP UI自动化测试框架介绍
APP UI自动化测试同样可以使用unittest框架,与web的UI自动化类似 整个自动化流程介绍 1) 会先从手工用例里面抽离出要做自动化的用例,在测试用例里面会加一个执行方式的标签,标明是手动还 ...
- 华为APP UI自动化测试岗面试真题,真实面试经历。
1.Android APP 内存不足时,如何获得内存? 系统优先结束被挂起(暂停)的进程,释放内存. 2.APP 测试常见问题有哪些?原因有哪些? 常见的有 crash.ANR(应用无响应.卡死),一 ...
- Android app UI自动化测试 常用的元素定位方法
本文简要介绍了移动端Android APP进行UI自动化测试时,常用到的元素定位方法 目录 前言 一.通过resource-id定位 二.通过class name定位 三.通过accessibilit ...
- 阿里P8架构大神分享纯手写“kafka文档”看完直呼太牛!
什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系 ...
- APP UI自动化测试常见面试题,或许有用呢~
1.Android APP 内存不足时,如何获得内存? 系统优先结束被挂起(暂停)的进程,释放内存. 2.APP 测试常见问题有哪些?原因有哪些? 常见的有 crash.ANR(应用无响应.卡死),一 ...
- 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
前言: 学习python的优点是什么?python语法非常优雅,简单易学 免费开源 跨平台,可以自由移植 可扩展,可嵌入性强 第三方库丰富 python的应用领域在系统编程中应用广泛,比如说shell ...
- 阿里P8工程师整理的22本Java架构师核心书单,先收藏起来!
随便打开一个招聘网站,看看对高级Java工程师的技能要求. 抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方. Java基础 计算机基础 数据库,SQL/NoSQL 常用开 ...
- Appium APP UI自动化测试简介与环境搭建
一. app自动化测试背景 移动终端越来越多,手机应用也越来越多 App回归测试用例越来越多,但全量回归很消耗时间 移动端碎片化严重,尤其是Android端(兼容性就是碎片化的体现,有很多厂商.机型. ...
最新文章
- python logger日志工具类
- 双宋喜结连理过程可以通过python爬虫Aispider 几行代码就能搞定!
- 最简单的Sublime插件开发教程
- 宁波机器人餐厅需要预约吗_可怕!顺德首家“机器人餐厅”开业!厨师要失业了吗?...
- ML之回归预测之BE:利用BE算法解决回归(实数值评分预测)问题—线性方法解决非线性问题
- 6 不更新无法使用_win10更新后无线网络无法使用
- C++ edmond karp和ford fulkerson求最大流算法(附完整源码)
- c语言程序设计安徽区笔试部分,2021年安徽省二级C语言程序设计笔试样题-20210419093521.doc-原创力文档...
- dnf韩服服务器维护中,DNF2019韩服4.30维护:这些职业被加强
- 【XLL 框架库函数】 Excel/Excel12f
- android camera预览帧,android camera2处理每一帧并显示其预览
- 中国1:100万土壤数据处理
- 架构之美第四章-架构与美
- 微信音频通话数据保存服务器,微信语音通话怎么录MP3音频文件
- QT使用WinApi 报错 LNK2019 无法解析外部符号
- Tims中国上市背后:以新流派打法,“开源”咖啡市场
- 借助 Lucene.Net 构建站内搜索引擎(下)
- 输入一个由小写字母组成的字符串, 按照26个字母表顺序进行排序,打印排序后的字符串;
- PTA题目 抓老鼠啊~亏了还是赚了?
- Django数据库连接池(mysql)
热门文章
- R语言ggplot2可视化:使用geom_line函数将dataframe中数据可视化为时间序列(或折线图)(Time Series Plot From a Data Frame)、添加标题、副标题
- R语言使用pwr包的pwr.t.test函数对分组样本数相同的t检验进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
- R语言ggplot2可视化:ggplot2可视化使用guide_axis(check.overlap=TRUE)选项删除重叠的轴文本、跳过部分中间轴标签
- R语言亚组分析 (Subgroup Analysis)及森林图绘制实战
- R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数
- Python使用tkinter构建一个多元回归预测模型GUI界面(接受用户输入数据并给出模型推理结果)
- R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系
- R使用交叉验证(cross validation)进行机器学习模型性能评估
- 为什么决策树相关的算法不需要标准化?那么那些模型需要标准化那?
- batchelor包去除单细胞RNA-seq数据批次效应