一: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
安装后
- 启动检查 (广告、欢迎界面)
- 权限检查 (是否允许访问相册、相机、网络、定位等的权限)
- 欢迎界面检查(可选)
- [安装后的逆向思路]
- 卸载后再安装
- 应用管理里清除数据/清除缓存后再安装
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
登录,能够模拟各种网速下的各种场景
注意事项:关闭手机中的代理设置。