浅谈手机APP测试(流程)

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。

前言

APP测试是一个广泛的概念,根据每个app的应用场景不一样,测试的方向也略微的不同,在测试过程中需要灵活应用自身所知的测试手段。

今天就跟大家简单聊聊手机APP测试的一些相关内容。

APP开发流程

(1) 拿到需求分析需求

(2) 开需求评审会议

(3) 开发做设计,测试做测试设计

(4) 开发设计评审

(5) 测试补充用例

(6) 用例评审

(7) 开发提测,测试搭建测试环境

(8) 冒烟测试

(9) 执行测试用例

(10) 发现bug提交并跟踪

(11) 回归测试

(12) 预发布环境下测试(主要验证主要功能)

(13) 验收测试

(14) 编写测试报告

(15) 线上发布测试(主要验证主要功能,若主要功能无法实现,版本回滚)

(16) 项目总结

手机APP测试的工具

jdk简介

JDK是整个Java的核心,包括了Java开发环境和运行环境JRE、Java工具和Java基础类库。JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序。

adb连接模拟器和手机

adb(Android Debug Bridge,安卓调试桥)用于通过电脑代码脚本(或者电脑程序等)控制手机进行操作

(1) abd连接模拟器

adb connect ip地址:端口号

(2) adb连接手机

1、 手机和电脑在同一个局域网

2、 手机打开开发者模式,在开发者选项中允许usb调试和仅充电模式下运行ADB调试、连接USB时总是弹出提示

3、 把数据线连接电脑和手机,如果跳出选择模式,选择MTP传输文件

4、 在cmd输入adb tcpip 5555

5、 拔掉数据线

6、 adb connect 手机的ip地址

adb常用命令

抓取启动、加载时间:adb logcat -v threadtime -b events>名.txt

-s 系统版本 shell(查手机系统版本、截图、获包、获运行)

adb start-server 开启adb服务

adb kill-server 关闭adb服务

adb version 查看adb版本

adb connect ip地址:端口号 连接模拟器

如:adb connect 127.0.0.1:62001

adb devices 查看adb连接状态(device已经连接、offline断开连接、unauthorization已连接但手机不信任此电脑)

adb connect ip地址 adb连接设备()

adb disconnect 断开所有连接

adb disconnect IP地址:端口 断开指定连接

adb shell 进入安卓系统

exit 退出安卓系统

adb shell pm list packages -3 获取手机上的安装包(第3方)

adb shell pm list packages 获取手机上的安装包(外)

pm list packages 获取手机上的安装包(内)

获取正在运行的包名和activity:

adb logcat (获取日志在系统外)

logcat | grep ActivityManager(在系统内部)

adb logcat -c event 清空日志

adb shell dumpsys activity activities 获取正在运行软件

adb install 路径+包名 安装app

adb install -r 路径+包名 覆盖安装app(replace替换)

adb -s ip地址:端口 install 路径+包名 安装到指定

adb uninstall 包名 卸载app

adb push 本地路径 /设备路径 从PC 推送文件 到设备

adb pull /设备地址 本地地址 从设备 拉取文件 到PC

adb shell screencap /sdcard/名.png 屏幕截屏

adb shell getprop ro.build.version.release 查看系统版本

adb -s 192.168.2.135 shell getprop ro.build.version.release查看手机版本

adb -s 127.0.0.1::62001 shell getprop ro.build.version.release查看模拟器版本

启动指定软件:

1.打开软件并运行

2.输入adb shell dumpsys activity activities获取活动软件活动

(cmp=com.tal.kaoyan/.ui.activity.SplashActivity

3. adb shell am start -W -n 活动

adb shell am start -W -n com.tal.kaoyan/.ui.activity.SplashActivity(上一个命令的)

monkey 命令

monkey命令格式如下:

adb shell monkey [options] <event-count>

一般情况下:

adb shell monkey -p 包名 事件数

[options] 是指monkey可传入的参数,是可选项

<event-count> 是指随机发送事件数。

 操作事件

aafmmn prstt

①  --pct-touch 触摸事件(踏起)

②  --pct-motion 手势事件——滑动(摸醒)

③  --pct-rotation 屏幕旋转事件

④  --pct-pinchzoon 二指缩放事件(拼起入嗯)

⑤  --pct-trackball 轨迹事件

⑥  --pct-nav 基本导航事件(上下左右键)()

⑦  --pct-majornav 主要导航事件(键盘的中间键、回退按键、菜单按键)

⑧  --pct-syskeys 系统按键事件(Home键、返回键、音量调节键等)

⑨  --pct-flip 键盘事件(如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等)

⑩  --pct-anyeven 其他事件(如按键、其他不常用的设备上的按钮等)

⑪  --pct-appswith 启动Activity事件

1) 触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。

2) 手势事件

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

adb shell monkey -p com.tal.kaoyan --pct-touch 70 --pct-motion 30 20

3) 二指缩放事件

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。

4) 轨迹事件

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。

5) 屏幕旋转事件

屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。

6) 基本导航事件

基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。

7) 主要导航事件

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。

8) 系统按键事件

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。

9) 启动Activity事件

启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。

10) 键盘事件

键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。

11) 其他类型事件

其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。

ps:各事件百分比之和<=100正常,大于100会提示:** Event weights > 100%

参数

lgnore忽略

1) 设置间隔 如果你希望在每一个指令之间加上固定的间隔时间,可以用--throttle(注意,前面是--)命令。

adb shell monkey -p 包名 --throttle 3000 5

--throttle:后面接时间,单位为ms(<milliseconds>),表示事件之间的固定延迟(即执行每一个指令间隔的时间),若不接该选项,monkey将不会延迟。

2) 包约束 -p包名

-p:后面接一个或多个包名(<allowed-package-name>),如果应用需要访问其他包里的Activity,那相关的包也需要在此同时指定。如果不指定任何包,monkey将允许系统启动全部包里的Activity。

一个包:

adb shell monkey -p com.tal.kaoyan 500

多个包:

adb shell monkey -p com.tal.kaoyan -p com.tencent.mm 500

3) 应用程序崩溃后继续发送事件

如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令

adb shell monkey --ignore-crashes <event-count>

4) 超时错误继续发送事件

如果你希望monkey在任何超时错误发生后继续发送事件,则需要用到--ignore-timeouts命令。

adb shell monkey --ignore-timeouts <event-count>

5) 应用程序权限错误发生后继续发送事件

如果你希望monkey在应用程序权限错误发生后继续发送事件,则需要用到--ignore-security-exceptions命令。

adb shell monkey --ignore-security-exceptions <even-count>

<event-count>--ignore-security-exceptions:在设置此选项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类权限错误将停止运行。

monkey参数应用综合案例

测试场景

测试考研帮app Android版。测试希望通过monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。

需求分析

1) 测试是指定应用,因此需要使用-p指定被测app包名:

com.tal.kaoyan

2) 这个测试的目的是希望模拟用户操作,因此需要让monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对monkey执行的事件百分比做一些调整:

触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和--pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过--pct-appswitch将Activity切换的事件占比调整到30%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过--pct-rotation把横竖屏切换事件调整到5%。

3) 使用--throttle参数来控制monkey每个操作之间的时间间隔 指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过--throttle设置monkey每个操作固定延迟0.4秒。

4) 使用--ignore-crashs和--ignore-timeouts参数使monkey遇到意外时能继续执行 在执行monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。

5) 使用-v指定log的详细级别 monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为 -v -v.

测试命令

adb shell monkey -p com.tal.kaoyan

--pct-touch 40 --pct-motion 25

--pct-appswitch 30

--pct-rotation 5

--throttle 400

--ignore-crashes

--ignore-timeouts

-v -v 200

写在最后

1、进入任何行业都需要不断地学习和努力,软件测试工作也不例外,后期的你如果能学习计算机、数据库、开发等知识,将对你的个人提升有极大帮助。

2、时刻保持对行业的热情,既然想在这个行业混,那就就得多去了解行业的新动态,更新自己的技术。你得知道想要站得更高,就需要学习更高水平的技术。

希望有勇气改变的你,能发展得更好,持续学习必不可少,不要让自己很容易被替代!!!

努力的人有的是机会,但不努力的人是一定没机会的!!!

#测试##测试开发##软件测试##测试工程师#
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 17 评论
分享
牛客网
牛客企业服务