Python+Appium【第五章】日志/Monkey命令

在了解日志之前,先将还有之前还有遗漏的进行补充

补充遗漏

反编译包名

可以不用打开apk就可以获取app的包名,更方便的获取信息

举例:

#windows
aapt dumpsys badging 包名
# mac
aapt dump badging 包名
  • 示例代码
D:\PythonAppnium\apk>aapt dumpsys badging google.apk

在这里插入图片描述

覆盖应用安装

将原本已近存在apk重新覆盖安装,不需要重新卸载再安装,对app进行测试的时候需要进行覆盖安装测试,查看数据是否有丢失,缓存是否丢失.

举例:

adb install -r 应用程序.apk
  • 示例代码
D:\PythonAppnium\apk>adb install -r  google.apk

在这里插入图片描述

查看app包详细信息

有时候我们使用查找包信息的命令,获取到的不是apk真实的包名,这个时候我们将获取到的主包名拿到,去查看apk包的详细信息

adb shell dumpsys window | findstr mCurrentFocus

举例:

adb shell dumpsys package 主包名
  • 示例代码
D:\PythonAppnium\apk>adb shell dumpsys package com.android.chrome

在这里插入图片描述

日志模块

日志是我们日常开发或者测试常用到的东西,主要是能够帮助我们快速定位到问题的所在,也能直观的看到报错信息,接下来就详细的说一下关于adb这块如何设置日志

过滤选项

-s 选项:过滤日志标签 ==指定查看某个标签的日志
-c 选项:清除日志缓存
-v 选项:自定义日志格式-vraw-vlong
-f 选项:设置日志输出路径
-g 选项: 查看日志缓冲区信息;
-b 选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;
-B 选项 : 以二进制形式输出日志;

操作日志

将日志输入到指定文件,并记录到log文件

举例:

adb logcat -v long -f 日志输出路径
  • 示例代码
adb logcat -v long -f /data/media/0/Download/0120.log

在这里插入图片描述

  • 将文件导出到本地查看,可以将日志文件发送给开发让其进行排查
C:\Users\admin>adb pull /data/media/0/Download/0120.log Downloads/

在这里插入图片描述

Monkey

Monkey概念:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。该工具用于进行压力测试。然后开发人员结合monkey打印的日志和系统打印的日志,分析测试中的问题

Monkey测试的特点:
Monkey测试,所有的事件都是随机产生的,不带任何人的主观性。

1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

  • Monkey大致操作流程:

通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。

  • Monkey测试目的:

测试app是否会Crash(崩溃)

  • Monkey操作命令格式:
adb shell  monkey{+命令参数}

参数讲解

-p

作用:-p
为约束命令,作用是约束只对某个应用进行测试,your.package.name是你要进行测试的应用包名,如果要对多个应用进行测试可以使用多个
-p 指定包之后,Monkey将只允许系统启动指定的APP。
如果不指定包,Monkey将允许系统启动设备中的所有APP。

指定一个包:
adb shell monkey -p com.android.calculator2 100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

指定多个包:
adb shell monkey -p com.android.calculator2 –p com.android.calculator2 -p com.android.calculator2 100

不指定包:
adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。

示例代码:

  • 运行计算器app100次
adb  shell  monkey  -p com.android.calculator2 100

在这里插入图片描述
在这里插入图片描述

  • 不指定包名运行100次
adb shell monkey 100

在这里插入图片描述

在这里插入图片描述

  • 多个包一起运行 100次 打开设置跟计算器
C:\Users\admin>adb  shell  monkey  -p com.android.calculator2 -p com.android.settings 100 

内存不足,或者手机太卡就会出现无响应
在这里插入图片描述
可以看到在这儿有两个包名在这里插入图片描述

-v

作用:
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别

Level 0 (默认)提供了很少的信息除了启动通知,测试完成,和最终结果。-v Level 1
提供了更详细的测试运行,如个别事件被发送到您的Activity。 -v -v Level 2
提供了更详细的设置等信息如Activity选中或未选中的测试信息。 -v -v -v Level 3

  • 打印基本日志 Level 0
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v 300

在这里插入图片描述

  • 打印Level L1级日志
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v -v 300

在这里插入图片描述

  • 打印Level L3日志
C:\Users\admin>adb shell monkey -p com.android.calculator2 -v -v -v 300

在这里插入图片描述

–throttle

作用:
在事件之间插入特定的延时时间(单位毫秒),这样做可以延缓monkey执行事件的速度,默认没有延时,monkey会以最快速度将指定的事件个数执行完。
注:建议使用该参数,建议设置为300,这是模拟人为操作的速度

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --throttle 300 -v 100

在这里插入图片描述

-s

作用:
伪随机数生成器的种子值,如果用相同的种子值再次运行monkey,将生成相同的事件序列。(该种子值对于Bug复现至关重要)

注:如果不指定种子值,系统会随机生成一个种子值,在出现Bug时该种子值会和Bug信息一起被输出,这也是为了便于复现该Bug

  • 示例
# 第一次
C:\Users\admin>adb shell monkey -p com.android.calculator2  -s 10 100
# 第二次
C:\Users\admin>adb shell monkey -p com.android.calculator2  -s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。

–ignore-crashes

作用:
忽略crashes,测试过程中发生crashes继续进行测试【直到执行完指定的事件数】,如果不忽略则遇到crashes,monkey测试则会立即停止

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --ignore-crashes 1000

在这里插入图片描述

–ignore-timeouts

作用:
用于指定当应用程序发生ANR(ApplicationNoResponding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --ignore-timeouts -v 1000

在这里插入图片描述

–ignore-security-exceptions

作用:
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --ignore-security-exceptions -v 1000

在这里插入图片描述

–pct-touch

作用:
触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击

  • 语法
adb shell monkey --pct-touch 百分比 -v -v 500
  • 示例
  • 针对计算器进行占比百分之五十的点击触碰操作
C:\Users\admin>adb shell monkey -p com.android.calculator2  --pct-touch 50 -v 100

在这里插入图片描述

–pct-motion

作用:
动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --pct-touch 50 --pct-motion 40 -v 100

在这里插入图片描述

–pct-pinchzoom

作用:
二指缩放,智能机上的放大缩小手势操作事件

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --pct-pinchzoom 50  -v 100

在这里插入图片描述

–pct-trackball

作用:
轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件

  • 示例
C:\Users\admin>adb shell monkey -p com.android.calculator2  --pct-pinchzoom 50 --pct-trackball 30 -v 500

在这里插入图片描述

–pct-nav

作用:
基本导航,基本导航事件主要来自方向输入设备的上、下、左、右事件

adb shell monkey -p com.android.calculator2  --pct-nav 50 -v 500

–pct-majornav

作用:
主要导航,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

adb shell monkey -p com.android.calculator2  --pct-majornav 50 -v 500

–pct-syskeys

作用:
系统按键,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等

adb shell monkey -p com.android.calculator2  --pct-syskeys 50 -v 500

–pct-appswitch

作用:
应用启动,应用启动事件(activitylaunches)即打开应用,通过调用start Activity()方法最大限度地开启该package下的所有应用

  • 示例
adb shell monkey --pct-appswitch 50 -v 500

在这里插入图片描述

–pct-flip

作用:
翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

adb shell monkey --pct-flip 50 -v 500

常用Money命令合集

adb shell monkey -v -v -v -s 6666 --throttle 300 --pct-touch 30  -p com.android.calculator2 10000 > D:\monkey.txt

这是一个比较完整的monkey测试命令,3个-v显示最详细的测试信息,指定种子值为666,指定触摸事件占30%,只针对测试包名为com.android.calculator2的应用,指定事件数为10000次,输出的测试信息保存到D盘的monkey.txt文件中。

在这里插入图片描述

当然你可以根据你自己的需要添加不同的命令,达到不同的测试效果。

总结

  • 本章总结

    本章主要是将之前有遗漏的方法进行补充,并讲述了如何打印adb的日志,并输入到本地文件,重要的是monkey命令的讲解,大家可以自己尝试进行monkey的测试

代码地址

https://gitee.com/todayisgoodday/PythonAppnium

博客园地址

https://www.cnblogs.com/yushengaqingzhijiao/category/2024559.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罐装七喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值