APP自动化测试介绍
本篇主要介绍了APP自动化测试相关的一些基础知识,供大家学习参考。
·
一、APP自动化测试介绍
1、什么是APP自动化测试
- APP 自动化测试就是通过自动化工具或框架,让计算机模拟人类用户在 APP 上的操作,对 APP 进行测试的过程,这样可以节省人力、提高测试效率和准确性。
- 自动化测试可以快速执行重复的测试用例,发现潜在的问题,还能在不同的设备和环境中进行测试。而且,它可以在开发过程的早期就开始进行测试,及时发现问题并修复,从而减少后期的维护成本。
- 在进行 APP 自动化测试时,通常会使用特定的测试工具和框架,编写测试脚本,模拟用户的操作行为,比如点击、滑动、输入等。这些工具会捕获 APP 的界面元素,并与之进行交互,然后检查 APP 的响应是否符合预期。
二、APP自动化测试基础
1. APP自动化框架
1.1. 推荐-APP自动化测试工具-Appium
- Appium Appium 是一个开源的移动应用自动化测试框架,支持 iOS 和 Android 平台。它提供了一个跨平台的 API,可以使用多种编程语言(如 Python、Java、JavaScript 等)来编写自动化测试脚本。Appium 支持模拟用户操作,如点击、滑动、输入等,并且可以与各种测试工具和持续集成系统集成。
1.2. Appium特点
- 跨平台支持:Appium 支持 iOS 和 Android 平台,使得可以使用同一套工具和代码来测试不同操作系统的应用。
- 多语言支持:Appium 可以使用多种编程语言来编写测试脚本,如 Python、Java、JavaScript 等,方便不同技术背景的开发人员使用。
- 模拟用户操作:Appium 提供了丰富的 API,可以模拟用户在应用中的各种操作,如点击、滑动、输入文本等,从而实现对应用的自动化测试。
- 支持原生应用和混合应用:无论是原生的 iOS 或 Android 应用,还是使用跨平台技术开发的混合应用,Appium 都可以进行测试。
- 可视化交互:通过与 Appium 服务器的交互,可以实时查看应用的状态和元素信息,方便调试和故障排查。
- 元素定位:Appium 提供了多种元素定位方法,如 ID、XPath、UI 自动化工具提供的属性等,帮助准确找到应用中的元素进行操作。
- 与测试框架集成:Appium 可以与各种测试框架和持续集成工具集成,如 JUnit、TestNG、Jenkins 等,方便测试的组织和执行。
- 社区支持和文档:Appium 有活跃的社区,提供了丰富的文档和示例,方便学习和解决问题。
1.3. Appium-官网
- 官网:访问Appium官网(Redirecting)可以了解最新的版本、文档、API参考和示例代码等
1.4. Appium自动化原理
- Appium 的自动化原理可以简单理解为“模拟人类操作”。它通过驱动移动设备或模拟器,使用相应的 API 来与应用进行交互。
- 具体来说,Appium 会启动一个服务器,测试脚本通过与服务器进行通信,发送操作指令。服务器再将这些指令转换成设备或模拟器能理解的命令,从而实现对应用的操作。
- 在这个过程中,Appium 会自动识别应用中的元素,比如按钮、文本框等,并提供相应的方法来操作这些元素。测试人员可以通过编写脚本,模拟用户在应用中的点击、滑动、输入等操作,然后检查应用的响应是否符合预期。
1.5. Appium自动化环境需要的工具
- java安装(引用Java环境安装以及安装SDK安装教程_java sdk安装-CSDN博客)
-
- JDK (JDK的全称是Java SE Development Kit,也就是Java 开发工具箱,SE表示标准版)
- SDK(adb集成在android-sdk中) 【Android SDK(Software Development Kit)是Google提供的软件开发工具包,专为开发基于Android操作系统的应用程序而设计】
- Appium服务器安装
- 基于python的Appium客户端(appium-client-python)
2. Appium自动化环境搭建
注意:环境搭建过程中,同学们可能会遇到各类异常问题,大家一定要学会习惯于在在网上寻求类似问题的解决方法,快速解决自己遇到的问题,加油!
2.1.1. 参考教程:
- 【Windows完整参考:引用appium安装及使用-CSDN博客】
- 【Mac端-java安装:引用超详细的Java安装教程(Mac 版)_mac安装java-CSDN博客】
- AndroidSDK下载地址链接: https://android-sdk.en.softonic.com/?ex=MOB-593.
- Mac端安装AndroidSDK:【引用(2023)mac 安装Android studio(包括安装jdk,Android SDK)_android studio for mac-CSDN博客】
2.2.1. 异常处理
安装appium后,打开提示【无法打开“Appium Server GUI”,因为Apple无法检查其是否包含恶意软件。】
- 输入命令:sudo spctl --master-disable(复制粘贴进去终端)
- 回车!然后输入电脑密码回车即可(密码输入是看不见的,无视继续输入),然后再去打开软件即可。
三、adb工具
adb:官网文档:https://developer.android.com/tools/adb?hl=zh-cn
Mac系统下利用ADB命令使用:https://blog.51cto.com/u_5513510/6922543
1. adb工具构成及原理
- adb 包含了三个部分
-
- adb 客户端 用来下发adb的指令工具
- Server 服务端 adb.exe执行之后的进程,表示adb的服务端,通过服务端与手机上的adb守护进程进行通信
- adb守护进程 随着android系统的启动而启动,当android系统关闭之后它才会关闭。
2. adb常用命令
2.1.1. 查看设备、启动关闭adb服务
如果是真机,不要 使用一带多接头的数据线,否则找不到手机设备
- adb devices 查看手机的设备ID名称以及状态
-
- DWV6R19A10002101 device DWV6R19A10002101-5554 表示的是手机设备的ID名称, device表示设备处于在线状态,
如果adb服务没有启动,下发该命令时,会自动的去启动adb的服务 - adb start-server 启动adb服务
- adb kill-server 关闭adb 服务
2.2.1. 获取包名和界面名
自动化过程当中,需要通过app的包名和界面名来启动app。
- 包名: app包名 ,通过app的包名来区分不同的app,app包名是唯一的
- 界面名(启动名): 相当于web页面当中的链接地址,在app当中,每个界面都有一个名字
- 操作步骤: adb命令
-
- 在手机或者模拟器上面打开app
- windows命令一:adb shell dumpsys window windows | findstr mFocusedApp
- windows命令二: adb shell dumpsys window |findstr "usedApp"
- MacOS命令一: adb shell dumpsys window |grep "usedApp"
-
- com.baidu.homework/.activity.index.IndexActivity
-
-
- com.baidu.homework 是包名
- .homework/.activity.index.IndexActivity 是界面名
- 通过 / 分隔包名和界面名
-
-
- MacOS命令二: adb shell dumpsys window | grep mCurrentFocus
-
2.3.1. 安装卸载app
- adb install xxx.apk , 安装一个apk
-
- xxx.apk 需要为绝对路径,实际操作中直接将apk拖到终端中即可。
- adb install -r xxx.apk
-
- 重新安装此apk,但是保留原有的数据和缓存文件
- adb install -s xxx.apk
-
- 安装apk到sd卡中,默认为安装到机身内存中
- adb uninstall (-k)
-
- 卸载apk(-k表示保留数据和缓存文件)
- app卸载 adb uninstall 包名
-
- 卸载,不保留数据
2.4.1. 设备相关
- adb get-serialno 获取序列号
- adb shell getprop ro.product.model 查看设备型号
- adb shell getprop ro.build.version.release 查看Android系统版本
- adb shell wm density 查看屏幕密度
- adb shell wm size 查看屏幕分辨率
2.5.1. 上传下载文件
- 上传 将电脑上的文件上传到手机
-
- adb push 电脑上的文件路径 手机的路径
- 例子:adb push ./simple.txt /sdcard
- 下载文件 从手机上下载文件到本地
-
- adb pull 手机的文件路径 电脑的文件夹路径
- 例:adb pull /sdcard/simple.txt e:\rename.txt
2.6.1. 查看日志信息
获取日志信息:用来给开发定位问题。
adb logcat 来查看相关的日志信息
2.7.1. 测试app的启动速度(性能测试)
测试app启动速度的命令:
- adb shell am start -W 包名/界面名
-
- 需要关注的是TotalTImie的时间值,在实际的测试过程当,会进行多次测试,然后取平均值。
3. 手势操作命令
- 模拟点击事件
adb shell input tap x y
-
- # x y表示的是坐标点 参数之间用空格隔开
- 模拟滑屏事件(参数之间用空格隔开)
adb shell input swipe start_x start_y end_x end_y
-
- # start_x, start_y 表示的是起始点坐标,end_x,end_y表示的是终点坐标
- 注意Windows与Mac的上滑、下滑可能是反的,实际使用过程中注意调试一下
- 模拟键盘操作
adb shell input keyevent 键值
-
- (3 表示的HOME键 4 表示的返回键 66表示的回车键)
- 模拟输入操作
adb shell input text 内容
-
- 内容表示要输入的内容(不要输入中文)
- 如果电脑上面连接了多个模拟器或者是手机。需要加上一个参数 -s device_name
例:adb -s DWV6R19A10002101 shell input keyevent 4
4. 稳定性测试 (一般持续进行8-10个小时,数据比较置信)
- 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 -v -v --throttle 3000 -s 10 100
-
-
- --pct-touch 10 触模(10表示的是整个随机同件中的百分比)
- --pct-motion 50 滑屏(50表示的是整个随机同件中的百分比)
- 组合使用:
-
- adb shell monkey -p com.baidu.homework --throttle 500 --pct-touch 10 --pct-motion 50 -v -v -s 100 300>/Users/example/Desktop.error.txt
- 注意:/Users/example/Desktop.error.txt 这个文件需要提前手动创用于接收日志信息
- 日志分析
-
- 如果在日志里面出现了 ANR(application not responsing)说明应用程序无响应。
- 如果日志中出现了Exception,可能程序崩溃。
未完待续……
更多推荐
所有评论(0)