1.常用自动化框架介绍
- Robtium
- 基于anroid的一款开源自动化测试框 架
支持java语言
不支持跨平台
- macaca
由阿里巴巴公开开发的一套开源自动化解决方案
适用平台:PC端androidIOS
支持的语言:java、python、nodejs
适用平台:android、IOS
支持的语言:javaNjsphppython\C#\ruby
社区活跃、资料丰富
- ppium的特点:
- 开源
- 支持NativeApp(全部android sdk的java代码生成)原生的app如果页面有变更,就得发一版本,提交到应用商城去审核
WebApo(都是由HTML5生成的)访问速度得。H5的代码以及元素信息
Hybird APP(既有nativeapp也有H5的页面)混合app 是当前工作中用得最多的
- 支持andorid 、IOS
- 支持跨平台、支持windows、linux、macos
- 支持多语言 java js python C# ruby
2.appium介绍
自动化原理
- appium服务器
- 基于python的appium客户端(appium-client-python)
- adb(adb集成在android-sdk中)
- JDK
⾃动化测试环境搭建
1、java安装
双击可执⾏⽂件,安装过程中建议不要将安装⽬录设置在含有中⽂的⽬录。建议不要发装在系统盘中。 验证: 在DOS命令⾏中输⼊ java -version 如果能看下图所显示的信息就是正确的。
2、android SDK安装
下载连接:https://android-sdk.en.softonic.com/?ex=MOB-593.7
- 安装步骤:
- 安装步骤: 解压android-sdk的压缩包⽂件
- 将解压的⽬录复制到某⼀个⽂件夹下,⽂件夹的路径也不要包含 中⽂
- 添加相应的环境变量(以下三个⽬录)
在我的电脑右键属性--高级设置--环境变量,点击系统变量中path进行配置,进入后新建
- 验证:
1、在Power Shell命令⾏中输⼊ uiautomatorviewer 如果能显示以下图⽚,就说明是正常的
2、在DOS命令⾏中输⼊: adb ,如果 能出现以下图⽚,就说明是正常
3、在DOS命令⾏中输⼊: aapt , 如果能出现发下图⽚,就说明是正常的
3、模拟器安装(略过)
4、appium服务器安装
- 双击appium服务器的可执⾏⽂件,默认安装在C盘。
appium验证
- 启动服务之前,需要先配置jdk以及android-sdk的⽬录。
- 启动服务,如果能看到以下图⽚信息,说明安装正常
5、appium-client-python安装
- 安装⽅式
- 离线 解压对应的安装包⽂件,进到解压⽬录下执⾏ python setup.py install
- 在线 pip install Appium-Python-Client
- pycharm
- 验证是否安装
- pip show Appium-Python-Client
- pycharm
ADB工具
2.常用命令
1.首先打开MuMu模拟器,在设置中找到开发者选项,打开usb调试
2.找到连接adb的端口
adb devices 查看手机设备的ID名称及状态
127.0.0.1:7555 手机设备的ID名称 device 处于在线状态
获取包名和界面名
- 操作步骤
- 在手机或者模拟器打开app
- windows命令一:adb shell dumpsys window windows | findstr mFocusedApp(能看主界面)
- windows命令二:adb shell dumpsys window | findstr "usedApp" (可以看到打开app和主界面)
com.android.settings/Settings com.androidsettings是包名, .Settings是界面名通过/分隔包
LINUX/MacOS命令一: adb shell dumpsys window windowsgrep mFocusedApp
LINUXMacOS命令二: adb shell dumpsys window lgrep "usedApp"
通过aapt获取app的包名和界面名
- aapt dump badging F:\anzhuangbao\app自动化工具集合\apk\xuechebu.apk后面表示的是app安装包的路径及名称
包名:package: name='com.bjcsxq.chat.carfriend' #packagename后面的字符串表示的是app的包名
界面名: name='com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity' launchable-activity:name后面的字符串是界面
安装和卸载app
app安装 adbinstall路径/app安装包名称
app卸载 adbuninstall包名
上传下载文件
- 上传将电脑上的文件上传到手机
adbpush电脑上的文件路径手机的路径
例子:adb push ./1.txt /sdcard
- 下载文件从手机上下载文件到本地
adbpull 手机的文件路径电脑的文件夹路径
例子:adb pull /sdcard/1.txt D:\2.txt
查看日志信息
为什么要获取日志信息:用来给开发定位问题
adb logcat 来查看相关的日志信息
测试app的启动速度
测试app启动速度的命令:
adb shell am start -W 包名/界面名
(打开一个app,用db shell dumpsys window | findstr "usedApp" (可以看到打开app和主界面)查看包名/界面名,之后关闭app即可)
通过下面命令即可查看
需要大家关注的是TotalTlmie的时间值,那么在实际的测试过程当,会进行多次测试,然后取平均值
稳定性测试 (8⼩时)
- monkey 集成在adb工具当中,主要用来做稳定性测试用的,monkey是通过java语⾔编写的⼀种稳定性测试⼯具。
主要⽤来测试app会不会出现crash(崩溃)的情况
相当于让⼀只猴⼦来随机操作app,所有的操作都有可能出现,⻓时间的操作来测试app会不会出
现问题。
- monkey常⽤的参数
- -p 参数 对指定的app进⾏随机操作
adb shell monkey -p com.baidu.homework 100 (100次随机事件)
- -v 参数 表示的是记录信息的级别
level 0:adb shell monkey -p com.baidu.homework -v 100 默认级别
level 1: adb shell monkey -p com.baidu.homework -v -v 100 打印出来的信息会⽐较详细,
只打印跟本程序相关的⽇志信息
level 2: adb shell monkey -p com.baidu.homework -v -v -v 100 打印出来的信息会更
多,会显示出其他程序运⾏的信息
- -s ⽤于指定伪随机数。如果两次的伪随机数相同,那么两次的操作步骤、流程、操作事件完全⼀样。
主要的作⽤,就是⽤来复现上次的问题
adb shell monkey -p com.baidu.homework -v -v -s 10 100
- --throttle ⽤于指定随机事件的间隔时间, 单位是毫秒
adb shell monkey -p com.baidu.homework -v -v --throttle 3000 -s 10 100
组合使⽤:
adb shell monkey -p com.baidu.homework --throttle 500 --pct-touch 10 --pct-motion 50 -v -
v -s 100 300 > log.log
--pct--touch 10 触模(10表示的是整个随机同件中的百分⽐)
--pct-motion 50 滑屏(50表示的是整个随机同件中的百分⽐)
- ⽇志分析
如果在⽇志⾥⾯出现了 ANR(application not responsing),程序没有响应
如果⽇志中出现了Exception,可能程序崩溃/异常退出。
adb手势操作
- 模拟点击事件
adb shell input tap x y #x y表示的是坐标点 参数之间用空格隔开
1.打开mumu模拟器,打开设置--开发者选项--指针位置打开
2.打开app,进行定位,执行 adb shell input tap 455 266
- 模拟滑屏事件
adb shell input swipe startx starty endx endy # startx, starty 表示的是起始点坐标,endx,endy表示的是终点坐标
1.首先找到有滑屏操作的页面并进行2次定位,第一次为开始位置,第二次滑动后的位置,最终实现滑动功能。
adb shell input swipe 435 473 411 809
- 模拟键盘操作
adb shell input keyevent 键值 (3 表示的HOME键 4 表示的返回键 66表示的回⻋键)
- 模拟输入操作
adb shell input text 内容 内容表示要输⼊的内容,另外输⼊的内容不能是中⽂
- 如果出现上图中 offine的设备,记得重启一下adb服务
- 如果电脑上面连接了多个模拟器或者是手机。name需要加上一个参数 -s device_name
adb -s emulator -5554 shell input keyevent 4
我会试着放下往事,管他有多美