移动端测试

一:ADB 命令

A ndroid D ebug B ridge 安卓调试桥
  • adb devices () list all connected devices罗列所有已连接的设备 (检查电脑上连接的Android设备)
  • adb kill-server 停止 ADB 服务
  • adb start-server 开启ADB服务
  • adb connect() 连接 Android 设备
  • adb disconnect 断开已连接的Android设备
  • adb shell () 进入 Android Linux 交互环境
  • adb remount 重新挂载获得文件系统的读写权限,需要有 root 权限
  • adb pull() Android 系统中获取文件 adb pull []
  • adb push() 将文件推送到 Android 系统中 adb push adb version 查看当前adb版本
  • adb install () 安装apk文件到Android系统
  • adb uninstall 卸载apk文件
#adb version 查看当前 adb 得版本
D:\apk>adb version
Android Debug Bridge version 1 .0.31
# adb devices 列出当前电脑连接得所有 Android 设备
D:\apk>adb devices
List of devices attached
127 .0.0.1:21503 device
D:\apk>adb devices
List of devices attached
127 .0.0.1:21503 device
127 .0.0.1:21513 device
#M7BBB18C09150533 真机设备名
D:\apk>adb devices
List of devices attached
127 .0.0.1:21503 device
127 .0.0.1:21513 device
M7BBB18C09150533 device
# 连接设备 adb connect 设备名,如果已连接,再次连接,提示 already connected to
设备名
D:\apk>adb connect 127 .0.0.1:21503
already connected to 127 .0.0.1:21503
# 断开连接设备 adb disconnect 设备名
D:\apk>adb disconnect 127 .0.0.1:21503
D:\apk>adb devices
List of devices attached
127 .0.0.1:21513 device
M7BBB18C09150533 device
D:\apk>adb disconnect 127 .0.0.1:21513
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 device
# 连接设备 adb connect 设备名,如果未连接得,进行连接,则提示 connected to 设备
D:\apk>adb connect 127 .0.0.1:21503
connected to 127 .0.0.1:21503
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 device
127 .0.0.1:21503 device
D:\apk>adb connect 127 .0.0.1:21513
connected to 127 .0.0.1:21513
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 device
127 .0.0.1:21503 device
127 .0.0.1:21513 device
#adb kill-server 结束正在运行中 Android 服务
D:\apk>adb kill-server
#adb kill-server 结束, Android 设备已下线 offline
D:\apk>adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
M7BBB18C09150533 offline
#adb start-server 启动 Android 服务
D:\apk>adb start-server
# 启动后再次查看设计连接情况,发现还是 offline ,则需要再次连接 adb connect
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 offline
# 再次连接 adb connect
D:\apk>adb connect M7BBB18C09150533
unable to connect to M7BBB18C09150533:5555
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 device
# 再次连接 adb connect
D:\apk>adb connect 127 .0.0.1:21503
connected to 127 .0.0.1:21503
D:\apk>adb devices
List of devices attached
M7BBB18C09150533 device
127 .0.0.1:21503 device

二:内网测试服务器设置

adb install 命令安装方式
#ECMobile3.2.apk 文件存放在 apk 文件夹中,所以在安装时,使用相对路径安装
D:\apk>adb install ECMobile3.2.apk
3972 KB/s (8427488 bytes in 2 .071s)
Success
# 当有多个设备时,可在安装时,指定设备, adb -s 设备名 install apk 文件名
D:\apk>adb -s 127 .0.0.1:21503 install ECMobile3.2.apk 6048 KB/s (8427488 bytes in 1 .360s)
Success
#ECMobile3.2.apk 文件存放在 apk 文件夹中,所以在安装时,也可以使用绝对路径安装
D:\apk>adb install d:\apk\ECMobile3.2.apk
4486 KB/s (8427488 bytes in 1 .834s)
Success
#ECMobile3.2.apk 文件存放在 d apk 文件夹中,所以在安装时,必须使用绝对路径安装(原因
c 盘与 d 盘没有相对路径,只能用绝对路径来表达)
C:\users\wjh>adb install d:\apk\ECMobile3.2.apk
4486 KB/s (8427488 bytes in 1 .834s)
Success
# 安装完成后, ecmobile 内网仍无法访问,本项目中还需要进行内网配置,需修改配置文
/etc/hosts
#adb shell 表示进入到 shell 窗口,如果有多个设备, adb -s 设备名 shell
D:\apk>adb shell
PCRT00:/ # ls
ls
acct fstab.intel init.zygote32.rc sepolicy
cache init lib service_contexts
charger init.bluetooth.rc mnt storage
config init.environ.rc proc sys
d init.intel.rc property_contexts system
data init.rc root ueventd.intel.rc
default.prop init.superuser.rc sbin ueventd.rc
dev init.trace.rc sdcard vendor
etc init.usb.configfs.rc seapp_contexts
file_contexts.bin init.usb.rc selinux_version
PCRT00:/ # cd etc
cd etc
PCRT00:/etc # ls
ls
NOTICE.html.gz excluded-input-devices.xml mkshrc
apns-conf.xml fonts.xml permissions
audio_effects.conf gps.conf ppp
audio_policy.conf hosts preloaded-classes
bluetooth init public.libraries.txt
clatd.conf media_codecs.xml seccomp_policy
compiled-classes media_codecs_google_audio.xml security
dhcpcd media_codecs_google_video.xml vold.conf
event-log-tags media_profiles.xml vold.fstab
#cat hosts 查看 hosts 文件
PCRT00:/etc  # cat hosts
cat hosts 
127 .0.0.1 localhost
::1 ip6-localhost
PCRT00:/etc #
#shell 中, vim/vi 没有此命令
PCRT00:/etc  # vim hosts
vim hosts 
/system/bin/sh: vim : not found
#exit 退出 shell 窗口
127 |PCRT00:/etc # exit
exit
# 使用 adb pull /etc/hosts 文件拉到本地进行修改
# 修改内容注意事项,在文件中增加一行 172.31.128.199 shop.ecmobile.cn ,再必须多一
个空行,如果没有空行,无法识别该指定 hosts 路径
D:\apk>adb pull /etc/hosts hosts
11 KB/s (56 bytes in 0 .004s)
# 使用 adb push hosts 文件上传到远程 /etc/hosts 文件中,但发现没有读写权限
D:\apk>adb push hosts /etc/hosts
failed to copy 'hosts' to '/etc/hosts' : couldn 't create file: Read-only file
system
#adb remount 重新挂载,获取读写权限
D:\apk>adb remount
remount succeeded
# 再次上传
D:\apk>adb push hosts /etc/hosts
13 KB/s (91 bytes in 0 .006s)
# 再次进入到 shell 窗口中查看相应 /etc/hosts 文件,有 172.31.128.199
shop.ecmobile.cn 记录
D:\apk>adb shell
PCRT00:/ # cat /etc/hosts
cat /etc/hosts
127 .0.0.1 localhost
::1 ip6-localhost
172 .31.128.199 shop.ecmobile.cn
# 验证 Android 系统的 hosts 文件生效
PCRT00:/ # ping shop.ecmobile.cn
ping shop.ecmobile.cn
PING shop.ecmobile.cn (172.31.128.199) 56 (84) bytes of data.
64 bytes from 172 .31.128.199: icmp_seq = 1 ttl = 62 time = 14 .3 ms
64 bytes from 172 .31.128.199: icmp_seq = 2 ttl = 62 time = 16 .2 ms
64 bytes from 172 .31.128.199: icmp_seq = 3 ttl = 62 time = 14 .0 ms
64 bytes from 172 .31.128.199: icmp_seq = 4 ttl = 62 time = 14 .0 ms
64 bytes from 172 .31.128.199: icmp_seq = 5 ttl = 62 time = 12 .4 ms
64 bytes from 172 .31.128.199: icmp_seq = 6 ttl = 62 time = 11 .0 ms
^C
# 另一种方式,验证 Android 系统的 hosts 文件生效
D:\apk>adb shell ping shop.ecmobile.cn
PING shop.ecmobile.cn (172.31.128.199) 56 (84) bytes of data.
64 bytes from 172 .31.128.199: icmp_seq = 1 ttl = 62 time = 15 .6 ms
64 bytes from 172 .31.128.199: icmp_seq = 2 ttl = 62 time = 14 .2 ms
64 bytes from 172 .31.128.199: icmp_seq = 3 ttl = 62 time = 12 .4 ms
64 bytes from 172 .31.128.199: icmp_seq = 4 ttl = 62 time = 14 .3 ms
remount 成功,但仍无法推送文件到 Andriod 系统时,可使用直接 echo 写入文件方式,步骤如下:
C:\Users\wjh>adb shell
VOG-AL00:/ # cd /etc
cd /etc
VOG-AL00:/etc # echo "172.31.128.199 shop.ecmobile.cn">>hosts
echo "172.31.128.199 shop.ecmobile.cn">>hosts
VOG-AL00:/etc # echo -e " ">>hosts
echo -e " ">>hosts
VOG-AL00:/etc # cat hosts
cat hosts
127.0.0.1 localhost
::1 ip6-localhost
172.31.128.199 shop.ecmobile.cn

三:安装测试

3.1 安装测试
安装前
安装包文件病毒检查 Windows 系统或 Android 系统使用 杀毒软件
检查
安装空间是否足够 一般在手游项目或者安装包大小在 GB 级别可考
安装中
安装方式和途径
1. 应用商店安装 ( app 上线后再去下载测试 )
官方的 Google Play ,小米的应用商店, 360 手机助手,豌豆荚 ...
2. 浏览器下载安装 ( app 上线后再去下载测试 )
3. 上传安装包文件到 SD 卡安装
# 把文件推送到 sdcard
C:\Users\wjh>adb push d:\apk\ECMobile3.2.apk /sdcard/ecmobile3.2.apk
2704 KB/s (8427488 bytes in 3 .043s)
C:\Users\wjh>adb shell
VOG-AL00:/ # cd sdcard
cd sdcard
VOG-AL00:/sdcard # ls
ls
360 Download Podcasts catlog
solopi
360Download LiveCloud QQBrowser com.qihoo.appstore
storage
360DownloadCache Movies Ringtones ecmobile3.2.apk tbs
Alarms Music Seafile insthub
xysdk
Android Notifications Tencent marketSp
DCIM Pictures baidu qnet_save
VOG-AL00:/sdcard #
# 进入到相应的文件管理器中找到 ecmobile3.2.apk ,进行安装
4. adb 安装 adb install 安装包文件名
#1 、安装被测软件 ECMobile3.2.apk Success 表示安装成功
C:\Users\wjh>adb install d:\apk\ECMobile3.2.apk
4096 KB/s (8427488 bytes in 2 .009s)
Success
#2 、切换到 d apk 目录安装
C:\Users\wjh>d:
D:\> cd d:\apk
# 当前目录为安装包的所在目录时,直接写入软件名称即可
d:\apk>adb install ECMobile3.2.apk
3283 KB/s (8427488 bytes in 2 .506s)
Success
#3 、当有多台设备时,必须指定 -s 来安装被测软件
d:\apk>adb devices
List of devices attached
127 .0.0.1:21503 device
127 .0.0.1:21513 device
d:\apk>adb -s 127 .0.0.1:21513 install ECMobile3.2.apk
2809 KB/s (8427488 bytes in 2 .929s)
Success
安装后
  • 启动检查 (广告、欢迎界面)
  • 权限检查 (是否允许访问相册、相机、网络、定位等的权限)
  • 欢迎界面检查(可选)
  • [安装后的逆向思路]
  1. 卸载后再安装
  2. 应用管理里清除数据/清除缓存后再安装
3.2 升级测试 ( )
通过 adb 升级 adb install -r 安装包文件
# 初次安装,版本 ecmobile3.2.APK
C:\Users\wjh>adb install d:\apk\ecmobile3.2.apk
4191 KB/s (8427488 bytes in 1 .963s)
Success
# 同版本覆盖安装,成功
C:\Users\wjh>adb install -r d:\apk\ecmobile3.2.apk
3880 KB/s (8427488 bytes in 2 .120s)
Success
# 低版本到高版本的升级,从 3.2 升级到 4.0
C:\Users\wjh>adb install -r d:\apk\ecmobile40.apk
4147 KB/s (16163478 bytes in 3 .805s)
Success
低版本、同版本、高版本覆盖安装
低版本到高版本的升级
假如当前最新版本是 V4.1.1
1 、某手机中的应用版本是 V3.0 ,能否升级到当前最新版;
2 、某手机中的应用版本是 V3.2 ,能否升级到当前最新版;
3 、某手机中的应用版本是 V4.0 ,能否升级到当前最新版;
4 、某手机中的应用版本是 V4.1.0 ,能否升级到当前最新版;
# 低版本到高版本的升级,允许。
# 先安装低版本 3.0 版本
D:\apk>adb install ecmobile30.apk
4028 KB/s (5149479 bytes in 1 .248s)
Success
# 验证升级后,版本是否已升级成功 , 可在手机中的设置 - 应用 -ecmobile 中查看,见下
图。
# 3.0 升级至 3.2
D:\apk>adb install -r ECMobile3.2.apk
4227 KB/s (8427488 bytes in 1 .946s)
Success
# 验证升级后,版本是否已升级成功,先使用 aapt 命令查看版本号,再在设置 - 应用 -
ecmobile- 应用信息中查看
D:\apk>aapt d badging ECMobile3.2.apk|findstr "package"
package: name = 'com.insthub.ecmobile' versionCode = '6'
versionName = '3.2'
# 3.2 升级至 4.0
D:\apk>adb install -r ecmobile40.apk
4435 KB/s (16163478 bytes in 3 .558s)
Success
# 验证升级后,版本是否已升级成功,先使用 aapt 命令查看版本号,再在设置 - 应用 -
ecmobile- 应用信息中查看
D:\apk>aapt d badging ecmobile40.apk|findstr "package"
package: name = 'com.insthub.ecmobile' versionCode = '10'
versionName = '4.0.0'
同版本的升级
# 当前已安装 4.0 版本
# 再次安装 4.0 ,提示已经安装包已存在,无法再次安装,安装失败
D:\apk>adb install ecmobile40.apk
4171 KB/s (16163478 bytes in 3 .784s)
Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install
com.insthub.ecmobile without first uninstalling.]
# 4.0 版本得基础上,使用命令 adb install -r ecmobile40.apk 覆盖安装,安装
成功
D:\apk>adb install -r ecmobile40.apk
4460 KB/s (16163478 bytes in 3 .538s)
Success
高版本到低版本的升级(降版)
# 4.0 降版至 3.2 ,系统提示失败,不能降版 , 报错
INSTALL_FAILED_VERSION_DOWNGRADE 安装失败版本降级
D:\apk>adb install -r ECMobile3.2.apk
3958 KB/s (8427488 bytes in 2 .078s)
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
升级的特殊情况
强制升级 不升级无法使用,必须升级后才能使用 有需求再测
试,如果此版本无此需求,则无需考虑
非强制升级 有提醒,关闭后提醒后,也能使用,但再次打开应
用,仍有提醒。 有需求再测试,如果此版本无此需求,则无需考虑
应用商店升级 ( 上线后再测试 )
网页下载升级 ( 上线后再测试 )
升级后的注意事项!!!
升级后,文件、数据是否有丢失,功能使用要正常!
缓存数据或存储数据是否存在数据清除等。
在安装后或者升级后,要关注手机中的相关目录
手机 /data 目录下几个目录的作用
/data/app/ 存放 APK 安装包(非系统安装的安装包)
/data/data Android 系统中所有安装的包的信息(包括系统
自带和自己手动安装)
/data/data/ 包名 Android 系统中某安装的包的信息
重点关注目录 databases shared_prefs ,大部分软件
中都有这两个目录
/data/system/ 软件包相关信息
/data/dalvik-cache/x86 优化的已编译字节码,可执行的 dex art
后缀的文件
目录 databases shared_prefs 的操作记录
# 进入到 shell 窗口
D:\apk>adb shell
PCRT00:/ # ls
ls
acct fstab.intel init.zygote32.rc sepolicy
cache init lib
service_contexts
charger init.bluetooth.rc mnt storage
config init.environ.rc proc sys
d init.intel.rc property_contexts system
data init.rc root
ueventd.intel.rc
default.prop init.superuser.rc sbin ueventd.rc
dev init.trace.rc sdcard vendor
etc init.usb.configfs.rc seapp_contexts
file_contexts.bin init.usb.rc selinux_version
# 存放数据的目录 data
PCRT00:/ # cd data
cd data
PCRT00:/data # ls
ls
adb app-private local misc_de ss
user_de
anr backup lost + found ota system
app cache media ota_package system_ce
app-asec dalvik-cache mediadrm property system_de
app-ephemeral data misc resource-cache tombstones
app-lib drm misc_ce security user
#data data 目录
PCRT00:/data # cd data
cd data
PCRT00:/data/data # ls
ls
com.android.location.fused com.cyanogenmod.filemanager
com.android.packageinstaller com.insthub.ecmobile
com.android.pacprocessor com.microvirt.download
com.android.phone com.microvirt.guide
com.android.printservice.recommendation com.microvirt.installer
com.android.providers.blockednumber com.microvirt.launcher
com.android.providers.calendar com.microvirt.launcher2
com.android.providers.contacts com.microvirt.market
com.android.providers.downloads com.microvirt.memuime
com.android.providers.downloads.ui com.microvirt.tools
# 进入到 ecmobile 文件包中
PCRT00:/data/data # cd com.insthub.ecmobile
cd com.insthub.ecmobile
# 查看 com.insthub.ecmobile 中的目录,其中有 databases shared_prefs
PCRT00:/data/data/com.insthub.ecmobile # ls
ls
app_push_dex app_push_update app_webview code_cache files
shared_prefs
app_push_lib app_textures cache databases lib
# 进入到 databases 目录,查看到有 db 文件
PCRT00:/data/data/com.insthub.ecmobile # cd databases
cd databases
PCRT00:/data/data/com.insthub.ecmobile/databases # ls
ls
ecmobile.db ecmobile.db-journal
PCRT00:/data/data/com.insthub.ecmobile/databases # exit
exit
# 本地查看 db 文件,先需要将文件 pull 到本地,再使用 DBeaver 查看 ecmobile.db 中的 user
表中数据,存在 2 个账户: ecshop vip
D:\apk>adb pull /data/data/com.insthub.ecmobile/databases databases
pull: building file list...
pull: /data/data/com.insthub.ecmobile/databases/ecmobile.db-journal - >
databases/ecmobile.db-journal
pull: /data/data/com.insthub.ecmobile/databases/ecmobile.db - >
databases/ecmobile.db
2 files pulled. 0 files skipped.
3106 KB/s (639520 bytes in 0 .201s)
# 再次覆盖安装或升级,观察其数据是否有被清除,注意事项,在将 db 文件, pull 到本地前
先登录 ecmobile ,以便保留数据
D:\apk>adb install -r ECMobile3.2.apk
4845 KB/s (8427488 bytes in 1 .698s)
Success
# 再次 pull 文件到本地,使用 navicat 查看 ecmobile.db 中的 user 表中数据,仍存在 2 个账
户: ecshop vip
D:\apk>adb pull /data/data/com.insthub.ecmobile/databases databases
pull: building file list...
pull: /data/data/com.insthub.ecmobile/databases/ecmobile.db-journal - >
databases/ecmobile.db-journal
pull: /data/data/com.insthub.ecmobile/databases/ecmobile.db - >
databases/ecmobile.db
2 files pulled. 0 files skipped.
2846 KB/s (639520 bytes in 0 .219s)
# 再次进入 shell 窗口
D:\apk>adb shell
PCRT00:/ # cd /data/data/com.insthub.ecmobile
cd /data/data/com.insthub.ecmobile
PCRT00:/data/data/com.insthub.ecmobile # ls
ls
app_push_dex app_push_update app_webview code_cache files
shared_prefs
app_push_lib app_textures cache databases lib
# 进入 shared_prefs 目录
PCRT00:/data/data/com.insthub.ecmobile # cd shared_prefs
cd shared_prefs
PCRT00:/data/data/com.insthub.ecmobile/shared_prefs # ls
ls
WebViewChromiumPrefs.xml com.insthub.ecmobile.xml
userInfo.xml
com.insthub.ecmobile.push_sync.xml pst.xml
# 查看 userInfo.xml 文件内容
PCRT00:/data/data/com.insthub.ecmobile/shared_prefs # cat userInfo.xml
cat userInfo.xml
<?xml version = '1.0' encoding = 'utf-8' standalone = 'yes' ?>
<map>
<string name = "netType" >wifi</string>
<string name = "email" >vip@ecshop.com</string>
<string name = "uid" >2</string>
<string name = "sid" >d047729f4db0ce64eb321f7e20602390a2ebc491</string>
<boolean name = "isFirstRun" value = "false" />
</map>
PCRT00:/data/data/com.insthub.ecmobile/shared_prefs # exit
exit
# userInfo.xml 拉到本地
D:\apk>adb pull
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml userInfo.xml
55 KB/s (315 bytes in 0 .005s)
# 修改 userInfo.xml 中的 <boolean name="isFirstRun" value="false" />false 改为
true ,再上传到手机终端中
D:\apk>adb push userInfo.xml
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
154 KB/s (314 bytes in 0 .001s)
# 查看上传后的 userInfo.xml <boolean name="isFirstRun" value="false" />
false 显示为 true
D:\apk>adb shell cat
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
<?xml version = '1.0' encoding = 'utf-8' standalone = 'yes' ?>
<map>
<string name = "netType" >wifi</string>
<string name = "email" >vip@ecshop.com</string>
<string name = "uid" >2</string>
<string name = "sid" >d047729f4db0ce64eb321f7e20602390a2ebc491</string>
<boolean name = "isFirstRun" value = "true" />
</map>
# 在手机中启动 ecmobile (若 ecmobile 在手机中已启动,则要结束进程后,再启动),观
察到有欢迎界面,再次查看 userInfo.xml ,由 true 修改为 false
D:\apk>adb shell cat
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
<?xml version = '1.0' encoding = 'utf-8' standalone = 'yes' ?>
<map>
<string name = "email" >vip@ecshop.com</string>
<string name = "netType" >wifi</string>
<string name = "uid" >2</string>
<string name = "sid" >d047729f4db0ce64eb321f7e20602390a2ebc491</string>
<boolean name = "isFirstRun" value = "false" />
</map>
3.3 卸载测试
卸载方式
通过 adb 卸载 adb uninstall 包名
1. 获取 App 对应的包名称
首选方法 使用 aapt 命令 Android asset packaging tools
卓资源打包工具
# 查看上传后的 userInfo.xml <boolean name="isFirstRun" value="false" />
false 显示为 true
D:\apk>adb shell cat
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
<?xml version = '1.0' encoding = 'utf-8' standalone = 'yes' ?>
<map>
<string name = "netType" >wifi</string>
<string name = "email" >vip@ecshop.com</string>
<string name = "uid" >2</string>
<string name = "sid" >d047729f4db0ce64eb321f7e20602390a2ebc491</string>
<boolean name = "isFirstRun" value = "true" />
</map>
# 在手机中启动 ecmobile (若 ecmobile 在手机中已启动,则要结束进程后,再启动),观
察到有欢迎界面,再次查看 userInfo.xml ,由 true 修改为 false
D:\apk>adb shell cat
/data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml
<?xml version = '1.0' encoding = 'utf-8' standalone = 'yes' ?>
<map>
<string name = "email" >vip@ecshop.com</string>
<string name = "netType" >wifi</string>
<string name = "uid" >2</string>
<string name = "sid" >d047729f4db0ce64eb321f7e20602390a2ebc491</string>
<boolean name = "isFirstRun" value = "false" />
</map>
# 查找包名,带过滤
D:\apk>aapt d badging ECMobile3.2.apk|find "package"
package: name = 'com.insthub.ecmobile' versionCode = '6' versionName = '3.2'
# 查找该包所有的信息
D:\apk>aapt d badging ECMobile3.2.apk
其他方法 列出第三方应用的包名称
2. 卸载安装包
第三方应用卸载(如:手机管家)
系统进行卸载 设置 | 应用 | APP| 卸载
长按,点 x 进行卸载
卸载完成后,检查卸载是否干净,有无历史缓存数据( 需再次安装来验
证测试

四:功能测试

结合具体情况

五: 性能测试(app客户端的性能)

5.1 时间
通过 Activity 的时间来做估算,可进行多次平均。日志中过滤 Displayed
关键字查看。
5.1.1 首次启动时间(冷启动) ( )
安装好 App 后第一次运行的启动时间
5.1.2 非首次冷启动时间
App 对应进程未运行
可以手机界面操作关闭后台进程,也可以命令行查看进程号后关闭后台进
C:\Users\wjh>adb logcat |findstr "Displayed"
12 -12 11 :42:26.730 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/com.insthub.BeeFramework.activity.StartActivity:
+ 1s45ms
12 -12 11 :42:28.933 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.GalleryImageActivity: + 278ms
12 -12 11 :42:33.207 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.EcmobileMainActivity: + 303ms
C:\Users\wjh>adb logcat |findstr "Displayed"
12 -12 11 :44:36.262 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/com.insthub.BeeFramework.activty.StartActivity: + 263ms
12 -12 11 :44:38.610 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.EcmobileMainActivity: + 394ms (total + 451ms)
5.1.3 非首次热启动时间
App 对应进程处于运行状态
C:\Users\wjh>adb logcat |findstr "Displayed"
12 -12 11 :45:40.324 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/com.insthub.BeeFramework.activity.StartActivity: + 182ms
12 -12 11 :45:42.465 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.EcmobileMainActivity: + 145ms (total + 211ms)
5.1.4 页面切换时间
不同界面切换
有请求发送,响应数据量较大
有缓存的情况先清除缓存
使用系统菜单清除缓存或删除 /data/data/ 包名 /cache 目录下内容
测试方法 查看 Android 系统日志,通过 Activity 的时间来做估算启动
时间
C:\Users\wjh>adb logcat |findstr "Displayed"
12 -12 11 :45:40.324 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/com.insthub.BeeFramework.activity.StartActivity: + 182ms
12 -12 11 :45:42.465 550 571 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.EcmobileMainActivity: + 145ms (total + 211ms)
C:\Users\wjh>adb logcat|find "Displayed"
09 -22 10 :01:50.782 384 418 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.EcmobileMainActivity: + 177ms (total
+ 288ms)
09 -22 10 :01:56.336 384 418 I ActivityManager: Displayed
com.insthub.ecmobile/.activity.B1_ProductListActivity: + 168ms
5.1.5 系统日志 ( 补充知识点 )
查看 Android 的日志
adb logcat
C:\Users\wjh>adb logcat
--------- beginning of system
09 -22 10 :14:00.186 72 72 I vold : Vold 3 .0 (the awakening)
firing up
09 -22 10 :14:00.186 72 72 V vold : Detected support for : ext4
vfat
09 -22 10 :14:00.193 72 83 D vold : e4crypt_init_user0
先执行 adb shell ,再执行 logcat
C:\Users\wjh>adb shell
PCRT00:/ # logcat
logcat
--------- beginning of system
09 -22 10 :14:00.186 72 72 I vold : Vold 3 .0 (the awakening)
firing up
09 -22 10 :14:00.186 72 72 V vold : Detected support for : ext4
vfat
09 -22 10 :14:00.193 72 83 D vold : e4crypt_init_user0
安装 catlog.apk 需要 root 权限才能查看其他应用的日志
C:\Users\wjh>adb install d:\apkcatlog.apk
3676 KB/s (319702 bytes in 0 .084s)
Success
日志级别
描述
E RROR
红色,表示错误,可能仍然允许应用程序继续运行
W ARN
黄色,表示告警,具有潜在危害的情况
I NFO
绿色,表示信息,应用程序运行情况的信息
D EBUG
蓝色,表示调试,应用程序调试的信息
V ERBOSE
灰色,最详细的信息
帮助命令 adb logcat -help
清空日志缓存信息 adb logcat -c
5.2 资源占用
5.2.1 Android 内存
测试场景
正常使用软件一段时间,查看运行内存占用
占用内存较多的操作
App 打开 某个超大的图片 时可能产生内存溢出 OOM Out Of
Memory ), App 要使用的内存空间超过堆内存设置
5.2.1.1 运行内存占用 ( )
查看某个应用运行内存的使用情况
adb shell dumpsys meminfo 包名
Pss Total : 实际使用的物理内存
private dirty: 私有驻留内存
Heap Size: 占用总内存( Heap 堆)
Heap Alloc: 分配内存
Heap Free: 空闲内存
Total PSS 信息
这个值就是应用真正占据的内存大小,通过这个信息,可以轻松判别手机中哪些程序占内存比较大了。
VSS - V irtual S et S ize 虚拟耗用内存(包含全部共享库占用的内存)
RSS - R esident S et S ize 实际使用物理内存(包含全部共享库占用的内存)
PSS - P roportional S et S ize 实际使用的物理内存(比例分配共享库占用的内存)
USS - U nique S et S ize 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律: VSS >= RSS >= PSS >= USS
查看单个应用最大内存限制
adb shell "getprop|grep heapgrowthlimit"
同命令 adb shell getprop |find "heapgrowthlimit"
上图所示,输入命令: getprop|grep heapgrowthlimit 得到结果该机型为 192M
pss Total(dalvik heap ) 这一列超过单个程序内存的最大限制时, OOM 就很有可能会出现了 .
5.2.1.2 存储空间占用 ( )
主要关注 /data/data/ 包名 目录空间大小
使用系统菜单查看
使用 命令查看
数据占用得存储空间 adb shell du -sh /data/data/ 包名
D:\apk>adb shell du -sh /data/data/com.insthub.ecmobile
5 .0M /data/data/com.insthub.ecmobile
应用占用存储空间 adb shell du -sh /data/app/app名
D:\apk>adb shell du -sh /data/app/com.insthub.ecmobile-1
13M /data/app/com.insthub.ecmobile-1
5.2.2 CPU 占用 ( )
SoloPi 【推荐使用】
阿里 ( 蚂蚁金服 ) 研发。不需要 root 权限,但需要 ADB 权限 adb tcpip
5555 和悬浮窗权限。
SoloPi 更新下载地址: https://github.com/alipay/SoloPi/releases
# 安装 SoloPi
D:\APK>adb install solopi.apk
4480 KB/s (4722009 bytes in 1 .029s)
Success
# 已知问题 : 中文文件名乱码
D:\APK>adb pull /sdcard/solopi/
5.2.3 GPU 占用
GPU 过度绘制
界面区域重复绘制多次, 造成 GPU 占用过多, 浪费 GPU 资源,
产生无效的电量消耗
测试方法 开发者选项中打开显示 GPU 过度绘制
5.2.4 流量
使用流量 前台使用
待机流量 后台运行
5.2.5 功耗
安装功耗 测量安装前后的电量,然后相减
使用功耗 前台使用
待机功耗 后台运行
5.3 性能测试指标
性能测试指标需要进行横向和纵向的对比,形成基准
横向:竞争对手
纵向:以前版本
一般 app 的性能指标参考: https://note.youdao.com/s/cuxO5yRU

六:兼容性测试

6.1 兼容性测试考虑因素
  • 操作系统
主流 Android 版本 13/12/11/10
市场占有率网站地址: https://gs.statcounter.com/
  • 手机品牌
主流手机品牌 Huawei/OPPO/VIVO/Xiaomi
Android 系统碎片化 Android 开源,各厂家的软硬件不同
  • 屏幕

分辨率 长和宽上像素的多少 1280*720, 1920*1080,

       2160*1080, 2400*1080

比例 长和宽的比例 16:9, 18:9, 19:9
尺寸 对角线的物理尺寸, 4.7 寸屏, 5.8 寸屏, 6.5 寸屏等
屏幕分类 水滴屏、曲面屏、全面屏、刘海屏、折叠屏、叹号屏
  • 权限设置
不同用户对于设备权限的控制不一定相同,如禁止所有非系统应用
使用摄像头等
6.2 兼容性测试方法
  • 购买或租用真机测试
  • 借助于云测平台
阿里 MQC https://www.aliyun.com/product/mqc
腾讯质量开放平台 https://wetest.qq.com/
Testin 云测 https://www.testin.cn/
贯众云测试 http://cloudtest.komect.com/
百度 MTC http://mtc.baidu.com/
兼容性测试范围
软件的安装,卸载,基本功能, 界面的遍历
兼容性测试脚本 ( 了解 )
基本的兼容性测试,可以用 Windows 批处理脚本方式执行
如在某手机中执行安装卸载的兼容性测试,可使用如下脚本,编辑
test.bat ,命令行输入 test.bat 执行
for /L %%i in (1,1,10) do (
adb install d:\apk\ecmobile3.2.apk
adb shell am start -W -S -R 10
com.insthub.ecmobile/com.insthub.BeeFramework.activity.StartActivity
adb uninstall com.insthub.ecmobile)

七:易用性测试

  • 操作
按钮点击范围是否合理 开发者选项中打开 显示布局边界
按钮位置是否合理
单手操作是否方便
  • 界面
界面美观

八:可靠性测试

8.1 稳定性测试 ( )
测试工具 Monkey 命令
Monkey Android 中一个命令行工具,是 Android 自动化测试的一种
手段
Monkey 通过向系统发送伪随机的用户事件流,实现对 App 的稳定性测
命令行 adb shell monkey -p 包名 --throttle 时间间隔 -s 随机种子数 -v -v -
v 次数 > 日志文件名
时间间隔 throttle 一般间隔时间 300-1000ms
s 意思为 seed ,随机种子数,可以是任意的数字;当有出现
bug 时,一定要使用 同样的随机种子数 ,再复现一次 bug
-v -v -v 表示查看最详细日志
次数 意思为 count 表示事件数
通知栏屏蔽
使用 simiasque 遮住状态栏,避免 Monkey 操作通知栏,导致无效
测试
测试结果分析
正常结果 一般情况下会出现 monkey finished ,表示执行完成,
Crash 或者 ANR (应用程序无响应) 或者 ERROR 或者
Exception
异常结果 日志中遇到 Crash 或者 ANR (应用程序无响应) 或者
ERROR 或者 Exception
测试指标
可以按操作次数或操作时间来规定指标
D:\APK>adb shell monkey -p com.insthub.ecmobile --throttle 1000 -s 12345 -v
-v -v 100
>d:\apk\monkey.log
***
执行结束后,出现 Monkey finished ,表示无错误
// Monkey finished
如果有错误,直接运行结束,不会出现 Monkey finished
# 查看 monkey 的帮助命令,命令可扩展
C:\Users\wjh>adb shell monkey -help
# 忽略 crash 或超时,可加入 --ignore-crashes --ignore-timeouts ,当有错误时, monkey
令仍会继续跑,执行运行结束为止。
C:\Users\wjh>adb shell monkey -p com.insthub.ecmobile --throttle 300 -s
12345 --ignore-crashes --ignore-timeouts -v -v -v 20000 >d:\apk\monkey2.log
8.2 异常测试
测试点
断电重启
网络中断
程序异常退出 kill -9 进程号
C:\Users\wjh>adb shell ps |find "com.insthub.ecmobile"
u0_a91 8112 112 1036388 77584 SYSC_epoll c7725a3c S
com.insthub.ecmobile:bdservice_v1
u0_a91 8175 112 1036252 73804 SYSC_epoll c7725a3c S
com.insthub.ecmobile
C:\Users\wjh>adb shell kill -9 8112 8175
安装包文件名包含中文
C:\Users\wjh>adb install d:\apk\ 副本 .apk
3211 KB/s (8427488 bytes in 2.562s)
Error: failed to write; /data/local/tmp/ ?.apk (No such file or
directory)
清除缓存 清除数据
通过系统菜单,和清除数据同一个页面
# 命令 清除缓存
D:\APK>adb shell ls /data/data/com.insthub.ecmobile/cache/
ECMobile aquery uil-images
D:\APK>adb shell rm -rf /data/data/com.insthub.ecmobile/cache/
# 命令 清除数据
D:\APK>adb shell ls /data/data/com.insthub.ecmobile
app_push_dex app_push_update code_cache lib
app_push_lib cache databases shared_prefs
D:\APK>adb shell rm -rf /data/data/com.insthub.ecmobile/*
或使用下列命令
# 清除缓存
C:\Users\wjh>adb shell
HD1910:/ # cd data/data/com.insthub.ecmobile
cd data/data/com.insthub.ecmobile
HD1910:/data/data/com.insthub.ecmobile # ls
ls
app_push_dex app_push_update app_webview code_cache files
shared_prefs
app_push_lib app_textures cache databases lib
HD1910:/data/data/com.insthub.ecmobile # rm -rf cache
rm -rf cache
# 清除数据
HD1910:/data/data/com.insthub.ecmobile # ls
ls
app_push_dex app_push_update code_cache lib
app_push_lib cache databases shared_prefs
HD1910:/data/data/com.insthub.ecmobile # rm -rf *
rm -rf *
HD1910:/data/data/com.insthub.ecmobile # ls
ls

九:网络测试

测试点
不同网络下使用 WiFi/3G/4G/5G
网络切换下使用 状态迁移法设计测试用例
弱网 / 无网测试
关注内容: APP 应用的友好性!
测试工具
Fiddler
1. 菜单 Customize Rules
// Delay sends by 300ms per KB uploaded. KB 上传的数据延迟 300ms 发送
oSession [ "request-trickle-delay" ] = "300" ;
// Delay receives by 150ms per KB downloaded. KB 下载的数据延迟 150ms 接收
oSession [ "response-trickle-delay" ] = "150" ;
2. 勾选 Simulate Modem Speed
菜单 Rules > Performance > Simulate Modem Speed
Fiddler 不能模拟丢包或误码的网络场景, 只能模拟网速的变化,
只支持 HTTP/HTTPS 协议
QNET 【推荐使用】
需要 QQ 登录,能够模拟各种网速下的各种场景
注意事项:关闭手机中的代理设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值