霍格沃兹测试开发学社
霍格沃兹测试开发学社
adb 由哪几部分组成?
霍格沃兹测试开发学社
java 官方下载地址:
注意:windows 下载 exe 安装包即可
社区提供下载地址:
%JAVA_HOME%
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
java -version
ANDROID_HOME D:\adt-bundle-mac-x86_64-20140702\sdk
PATH %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
霍格沃兹测试开发学社
问题 1:常用的模拟器有哪几种
问题 2:如何查看设备的状态
霍格沃兹测试开发学社
格式 :
adb [-d|-e|-s <serialNumber>]<command>
-d 指定当前唯一通过 Usb 连接的 android 设备为命令目标(了解)
-e 指定当前唯一运行的模拟器为命令目标(了解)
-s 指定相应的设备为命令目标(重点)
普通安装
adb install <apk路径>
覆盖安装/替代安装
adb install -r <apk路径>
卸载应用
adb uninstall 包名
卸载应用(不删除配置文件,保存数据缓存信息)
adb uninstall -k 包名
问题 1:使用哪个命令可以实现 覆盖安装应用
问题 2:命令哪个命令可以实现卸载包并清空缓存:
霍格沃兹测试开发学社
adb shell "dumpsys window | grep mCurrentFocus"
adb logcat ActivityManager:I | grep "cmp"
adb logcat ActivityManager:I | findstr "cmp"
命令:
adb shell am start -n <包名>/<avticity名>
霍格沃兹测试开发学社
adb shell pm list packages
adb shell pm list packages -s
adb shell pm list packages -3
adb shell "dumpsys window |grep mCurrentFocus"
霍格沃兹测试开发学社
霍格沃兹测试开发学社
adb logcat
格式:
adb logcat --help
adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...
adb logcat 打印默认日志数据
adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f <filename> 将日志输出到文件
adb logcat > log.log 保存日志到PC上
adb logcat -c 清理已存在的日志
adb logcat -v time "*:W" 打印 Warning 及以上级别的日志
adb logcat ActivityManager:D '*:S' 过滤tag 为ActivityManager,level为Debug及以上级别的日志
https://developer.android.com/topic/performance/vitals/crash
FATAL EXCEPTION: main
12-09 09:20:14.689: E/AndroidRuntime(31223): java.lang.IllegalStateException: Activity has been destroyed
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
12-09 09:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.init(DongTaiFragment.java:209)
12-09 09:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.onCreateView(DongTaiFragment.java:68)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.handleCallback(Handler.java:605)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.dispatchMessage(Handler.java:92)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Looper.loop(Looper.java:154)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.app.ActivityThread.main(ActivityThread.java:4624)
12-09 09:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invokeNative(Native Method)
12-09 09:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invoke(Method.java:511)
12-09 09:20:14.689: E/AndroidRuntime(31223): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
12-09 09:20:14.689: E/AndroidRuntime(31223): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
12-09 09:20:14.689: E/AndroidRuntime(31223): at dalvik.system.NativeStart.main(Native Method)
霍格沃兹测试开发学社
adb shell tap x坐标 y坐标
adb shell input text <输入内容>
adb shell swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
https://developer.android.com/reference/android/view/KeyEvent
霍格沃兹测试开发学社
adb shell dumpsys cpuinfo
adb shell dumpsys meminfo
adb shell dumpsys meminfo <应用名>
命令
adb shell dumpsys battery
Hogwarts $ adb shell dumpsys battery
Current Battery Service state:
AC powered: true
USB powered: false
Wireless powered: false
Max charging current: 2000000 # 最大充电电流; mA
status: 2 #电池状态:2:充电状态 ,其他数字为非充电状态
health: 2 #电池健康状态:只有数字2表示good
present: true #电池是否安装在机身
level: 81 #电量: 百分比
scale: 100
voltage: 4108 #电池电压
temperature: 353 #电池温度,单位是0.1摄氏度
technology: Li-poly #电池种类
官网:
https://developer.android.com/docs
霍格沃兹测试开发学社
Monkey 是 Google 提供的一个用于 稳定性与压力测试 的命令行工具
adb shell --help
adb shell monkey [参数] {随机发送事件数}
adb shell monkey [参数] {随机发送事件数}
adb shell monkey <事件数>
adb shell monkey -v <事件数>
adb shell monkey -vv <事件数>
adb shell monkey -vvv <事件数>
指定一个包
adb shell monkey -p 包名 [数件数]
指定多个包
adb shell monkey -p 包名 -p 包名 [事件数]
--throttle <milliseconds>:每个事件结束后的间隔时间
adb shell monkey -p 包名 --throttle 时长(秒)
-s <seednumber>:用于指定伪随机数生成器的seed(种子)值
--pct-touch:触摸事件 ( 设定点击事件百分比)
--pct-motion :滑动事件(设定动作事件百分比 )
--pct-trackball :轨迹球事件( 设定轨迹球事件百分比 )
--pct-nav :导航事件( 设定基本导航事件百分比,比如输入设备上、下、左、右键 )
--pct-majornav:主要导航事件( 设定主要导航事件百分比,比如中间键、返回键、菜单键 )
--pct-syskeys:系统按键事件( 设定系统导航事件百分比,比如HOME键、BACK建、拨号键及音量键 )
--pct-appswitch:activity之间的切换( 设定启动Activity事件百分比)
--pct-pinchzoom:缩放事件
--pct-rotation:屏幕旋转事件
--pct-flip:键盘事件
--pct-anyevent :任意事件 (设定不常用事件百分比)
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--dbg-no-events:初始化启动的activity,但是不产生任何事件
--hprof:指定该项后在事件序列发送前后会立即生成分析报告
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:直到连接了调试器才执行monkey测试
–bugreport:当ANR,系统无响应,Crash的时候获得bugreport
方式一:
adb shell monkey 1000> 文件路径/文件名
方式二:
adb logcat -v time '*E' > monkey.log
如何通过monkey 测试 包名为com.xueqiu.android 发送 1000个事件