目录
1.App自动化测试背景
2.Appium自动化测试简介
3.Appium + Python自动化测试环境搭建
4.Appium API 详细介绍
5.Unittest框架介绍、测试报告生成、自动化测试
(一)App自动化测试背景
随着移动终端的普及,手机应用越来越多,也越来越重要。App的回归测试用例数量越来越多,全量回归也越来越消耗时间。另外移动端碎片化严重(碎片化:兼容性测试,手机品牌多样、Android版本很多、CPU价格不一样、屏幕分辨率不同),尤其是Android端碎片化严重性更为突出,市面上Android机型甚至有几万,几十万款,所以我们也需要通过这种自动化测试帮助我们减少兼容性的测试工作。总而言之,为了减少这种重复的、大量回归的测试任务,我们迫切需要引进一些自动化测试来协助。
(二)Appium自动化测试简介
Appium是一个开源的,适用于 原生 (native)或 混合移动应用 (hybrid mobile apps)的自动化测试框架。Appium应用WebDriver:JSON wire protocol驱动安卓和ios移动应用。(在WebDriver基础下封装和扩展。JSON:一种文本格式)
原生:完全用安卓框架提供的一些组件去开发。
混合移动应用:比如在native中嵌入H5页面(H5:相当于手机中的web页面)为什么要嵌入H5❓
因为最早的Android开发机制是开发一个功能以后需要打成一个apk包,上传到各大应
用市场,用户才能够下载应用,这种方式需要各大应用市场的审核时间,是比较耗时
的,可能会导致应用失去时效性。H5页面就像web页面,开发部署更快,只需要后台启
动就能生效,解决了app中一些及时性的功能能够快速发布上线,供用户使用。
所有的页面都搞成H5
不可以,因为H5的性能比较差,体验性会差一点。
Appium的特点:
支持多平台(Android、iOS等)
可以使用一套代码既来跑Android又跑iOS吗?
不能。因为控件属性是不一样的。
整体框架可以用一套,但是控件定位、元素定位、一些操作之类的不能用一套。多语言支持(Python、Java、ruby、js、C#)等。
Appium是跨平台的,可以在OSX,Windows以及Linux桌面系统上运行(对于安卓来说,即可以在windows上搭建Appium,又可以在mac上搭建Appium,也可以在Linux上。但是,对于ios来说,只能用mac)。
Appium选择了Client/Server的设计模式。只要Client能够发送http请求给Server,那么的话Client
用什么语言来实现都是可以的,这就是如何做到支持多语言的原因。
Appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过程,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。
开源免费。
不需要重新编译或修改应用。(直接拿到apk或者已经下载到手机上的App就可以直接做自动化测试,不需要改任何代码,也不需要管App的源程序是如何实现的)
不被一种语言或者框架约束。
不重复造轮子。(继承WebDriver)
目前移动端自动化工具介绍:
1.monkeyrunner (Java语言;通过坐标实现定位;可能因为屏幕分辨率不一样导致定位不准确;或者说坐标点是肯定存在,但是控件可能还未加载出来)
2.monkeytalk(只支持JS代码;控件定位;要在app的源码里面插入代理,可能会导致源程序出现问题)
3.robotium(只支持Java语言;控件定位;支持混合移动应用;但是需要重签名)(三)Appium自动化环境搭建
1.安装Python:
python官网:https://www.python.org/
百度网盘:
链接:https://pan.baidu.com/s/18UXr2KsZK5UaUy1p-VfMGw
提取码:4w7r
下载对应机器的安装包:
双击打开下载好的Python安装包并安装:
如果未勾选Add Python 3.7 to PATH,就需要手动配置环境变量 :
计算机->属性->高级系统设置
环境变量->系统变量->Path:
将python.exe和pip命令所在的路径配置到Path中:
D:\Python3
D:\Python3\Scripts
打开cmd,输入python,验证Python环境是否正常:
2. JDK环境
jdk官网下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. html
网盘地址:
链接:https://pan.baidu.com/s/1hHQxkxDRwACKxPfuCK7tvQ
提取码:rasa
下载并进行安装。
配置环境变量
系统变量 --> 新建 --> 变量名:JAVA_HOME --> 变量值:D:\Java\jdk (jdk的安装路径) -->
系统变量Path中加入%JAVA_HOME%\bin
验证jdk环境:打开cmd界面输入java/javac
3. Android SDK环境变量配置
下载SDK
百度网盘:
链接:https://pan.baidu.com/s/1mZJ_o2ymlSdYyZO0_Bj2Fw
提取码:7jm7
配置环境变量
新建系统变量 —> 变量名: ANDROID_HOME —> 变量值:E:\Android\sdk(根据自己电脑sdk
实际的位置确定) —>
在系统变量Path中加入入%ANDROID_HOME%\platformtools;%ANDROID_HOME%\tools
验证SDK环境是否正常:打开cmd,输入adb。
4. 下载安装Appium Server
地址:http://appium.io
网盘地址:
链接:https://pan.baidu.com/s/1ii5h9Hr2IVSPgcJuaq82jA
提取码:f229
下载并安装。
5. 安装Python第三方库>>>pip install selenium
pip install --index-url https://pypi.douban.com/simple appium-python-client
6.安装模拟器或者用真机
未进入开发者模式
USB调试没有打开
管理员模式打开模拟器
真机offlfflffline,重插数据线
真机可能需要安装手机助手(如:华为手机助手)
sdk的adb命令与模拟器adb版本不一致,替换模拟器中的adb
Appium Server日志分析
1.请求发送到Appium Server,Appium REST http interface listener started on 0.0.0.0:4723,监听4723 。
2.设置的请求参数传过来
3. 检查设备连接
4. 给手机装两个App
一个是= =settings==:用于设置网络状态
另一个是= =unlock==:用于自动解锁(若手机是滑动锁屏的情况,则会自动解锁并启动
apk,若是图案锁屏或数字锁屏则不可以) 。
5. Appium Server会push一个bootstrap.jar到手机
真机测试遇到的坑及解决方法:
= = 今天在使用uiautomatorviewer进行安卓app控件定位的时候,出现以下异常,(用的是真机测试 Android版本是10,据说是Android 8以后sdk自带的uiautomator直接打开,截取不到机器界面信息) ==
解决方法:
adb shell uiautomator dump /sdcard/app.uix
adb pull /sdcard/app.uix E:/app.uix(在E盘提前建一个app.uix格式的文件夹)
adb shell screencap -p /sdcard/app.png
adb pull /sdcard/app.png E:/app.png(在E盘提前建一个app.png格式的文件夹)
因为每次都要执行这四句比较麻烦,可以写成批量文件:
2.手机连上adb,打开要定位的页面,打开uiautomatorviewer.bat
捕获成功:
软件测试 干货分享,今天的知识点,你听懂了吗?喜欢的话,三连一下~有任何问题都可以咨询小编,我们时刻为你服务!
更多软件测试资源分享微信公众号:【软件测试小dao】
软件测试技术交流群:1033482984
不要只做收藏从未停止,行动从未开始的人,很多事情,做着做着就无师自通了。如果在做的过程中还能稍微加点思考,稍微看一些别人的经验和做法,成长会更快,效果也会更好!加油吧,测试人!路就在脚下,成功就在明天!