App测试工具记录

发布时间 2023-12-13 16:54:41作者: index72

使用到的工具

模拟器

android studio

总体来说好用,有多个版本可选细分好,可以指定任意的android版本.
坏处是有自己的网关无法使用和主机一致的网段

genymotion

好用,创建的手机性能高,没有上面的网段问题,但是需要注册,有账号就可以爽用.有付费内容

App自动化工具

appium inspector

用于定位app的Element的AttributeId方便直接在代码中写入对应的xpath内容

Appium Inspector github 官网

Appium Inspector github linux release download

使用Inspector时需要填入基础的信息确保能正确的进入App界面

以上的信息作为基础参考

{
  "platformName": "Android",
  "appium:automationName": "UIAutomator2",
  "appium:deviceName": "emulator-5554",
  "noReset": true,
  "ignoreHiddenApiPolicyError": true,
  "autoGrantPermissions": true
}

在使用appium inspector之前先运行appium

疑难问题

  1. 报错怪问题

以上是基础的进入过程,如果要是报错多考虑一下是不是python版本安装错误

appium

appium是一个服务端,需要编写脚本来对接appium来进行对手机的自动化操作.而这些自动化的操作需要借助adb命令来运行,所以在运行的时候需要指定对应的android sdk的路径(不然会报错)

# 下面的命令是安装对应的python
pip install appium-python-client

# 如果要会报错一些不明的所以的报错,那么可以尝试切换版本
pip install appium-python-client==3.1.0 

# 如果不知道有哪些版本可以尝试使用这个命令来查看有哪些版本
pip install appium-python-client==

因为是在linux上使用 所以安装的思路也是在linux上

npm i --location=global appium

以上如果要提示你需要安装在/usr目录下 则需要使用sudo命令

adb

# 查看所有连接的设备,这里的设备可以是开启了调试模式的手机,或者是在本机上的虚拟机
adb devices

# 安装app
adb -s <如果有多个devices 那么在这里需要指定设备id> install <apk文件>

# 拉取和推送文件
adb -s <设备id> pull <文件名称> <路径>
adb -s <设备id> push <文件名称> <路径>

# 查看日志
adb logcat 
# 对日志进行过滤 只显示error级别的日志
adb logcat *:E
# 过滤特定的标签 下面的日志级别的等级是V(Verbose)、W(Warrin)、E(Error)
adb logcat <标签>:<日志级别> *:S
# 使用正则表达式过滤日志
adb logcat -e '<正则>'
# 将日志重定向到文件中
adb logcat -d > logcat.txt

# 清除当前设备的所有日志
adb logcat -c 

上面的所有的-s命令在设备只有哦一个的时候都是可以省略的.
(为什么要和使用两个命令来传递文件,像是scp那样的表明in和out的方式不是更好用?)

日志级别,日志级别通常是由程序编写的log.*方法输出的内容,和系统生成的日志,通常会包含一些可能的调用的错误,或者输出一些程序的崩溃信息

级别(标签) 解释
Verbose(V) 详细日志 通常应用于开发调试,会输出非常多的调试信息
Debug(D) 调试日志,在调试应用的时候输出的信息,通常不在生产环境中使用
Info(I) 信息日志,用于输出一些提示消息,了解当前的系统的运行状态
Warning(W) 警告信息,用于提示一些可能的潜在问题
Error(E) 错误信息,表示影响了程序的运行
Assert(A) 断言失败,表示一些不应该发生的错误发生了

monkey测试

monkey测试例子

adb shell monkey -p com.insthub.ecmobile --pct-touch 40 --pct-motion 25 --pct-appswitch 20 --pct-rotation 5 -s 12348 --ignore-crashes r --ignore-timeouts -v -v -v 100000

对于上面的每一个命令的解释为
-p com.insthub.ecmobile 指定被测试的包
--pct-touch 40 设置触摸事件为40%
--pct-motion 25 设置25%的事件为滑动事件
--pct-appswitch 25 设置这个参数20%的事件为系统界面导航事件
--pct-rotation 5 表示5%的是和旋转事件
-s 12348 设置这个事件流的随机数种子

随机数种子产生的的随即事件流是相同的

--ignore-crashes 当应用崩溃的或者发生任何严重错误时,让monkey测试继续进行
--ignore-timeouts 当应用无响应的时候,让测试继续
-v -v -v 这个参数设定了日志的详细程度,-v -v -v 表示日志最详细
100000 产生事件的次数

adb shell monkey -p <包> -v -v -v -s <随机数种子> <对包进行操作多少次> 2>error.log 1>monkeys.log

上面
2>error.log 表示将错误重定向输出到指定的文件中

1>monkeys.og 表示将标准输出,输出到指定的文件当中

上面的重点是输出标准错误,是必须要要使用与制定的管道进行输出.