移动端测试

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ​一:ADB 命令Android Debug Bridge 安卓调试桥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 命令

Android Debug Bridge 安卓调试桥

    • 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.apk6048 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文件存放在dapk文件夹中,所以在安装时,必须使用绝对路径安装(原因

    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 pushhosts 文件上传到远程/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、切换到dapk目录安装

    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系统中某安装的包的信息

        重点关注目录databasesshared_prefs,大部分软件

        中都有这两个目录

        /data/system/ 软件包相关信息

        /data/dalvik-cache/x86 优化的已编译字节码,可执行的dexart

        后缀的文件

        目录databasesshared_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

        #datadata目录

        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中的目录,其中有databasesshared_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个账户:ecshopvip

        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个账

        户:ecshopvip

        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

        image.gif

        日志级别

        描述

        ERROR

        红色,表示错误,可能仍然允许应用程序继续运行

        WARN

        黄色,表示告警,具有潜在危害的情况

        INFO

        绿色,表示信息,应用程序运行情况的信息

        DEBUG

        蓝色,表示调试,应用程序调试的信息

        VERBOSE

        灰色,最详细的信息

        帮助命令 adb logcat -help

        清空日志缓存信息adb logcat -c

        5.2 资源占用

        5.2.1 Android 内存

        测试场景

        正常使用软件一段时间,查看运行内存占用

        占用内存较多的操作

        App 打开某个超大的图片时可能产生内存溢出OOMOut Of

        Memory),App 要使用的内存空间超过堆内存设置

        5.2.1.1 运行内存占用()

        查看某个应用运行内存的使用情况

        adb shell dumpsys meminfo 包名

        image.gif

        Pss Total : 实际使用的物理内存

        private dirty:私有驻留内存

        Heap Size: 占用总内存(Heap堆)

        Heap Alloc: 分配内存

        Heap Free: 空闲内存

        Total PSS 信息

        这个值就是应用真正占据的内存大小,通过这个信息,可以轻松判别手机中哪些程序占内存比较大了。

        VSS - Virtual Set Size 虚拟耗用内存(包含全部共享库占用的内存)

        RSS - Resident Set Size 实际使用物理内存(包含全部共享库占用的内存)

        PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

        USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

        一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

        image.gif

        查看单个应用最大内存限制

        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/

        image.gif

        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)

                      清除缓存 清除数据

                      通过系统菜单,和清除数据同一个页面

                      image.gif

                      #命令 清除缓存

                      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登录,能够模拟各种网速下的各种场景

                      注意事项:关闭手机中的代理设置。

                      image.gif

                      相关实践学习
                      部署Stable Diffusion玩转AI绘画(GPU云服务器)
                      本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
                      相关文章
                      |
                      6月前
                      |
                      Web App开发 测试技术 定位技术
                      移动端测试金字塔
                      移动端测试金字塔
                      |
                      6月前
                      |
                      域名解析 JSON 测试技术
                      常见移动端APP测试场景
                      常见移动端APP测试场景
                      124 0
                      |
                      11月前
                      |
                      编解码 Shell Android开发
                      『移动端测试必备』ADB常用命令和使用
                      『移动端测试必备』ADB常用命令和使用
                      329 2
                      |
                      14天前
                      |
                      Java 测试技术 持续交付
                      【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
                      本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
                      53 4
                      【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
                      |
                      1月前
                      |
                      机器学习/深度学习 弹性计算 自然语言处理
                      前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
                      llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
                      |
                      4月前
                      |
                      前端开发 开发者
                      移动端-------app开发02,了解apicloud功能和使用,真机测试
                      移动端-------app开发02,了解apicloud功能和使用,真机测试
                      |
                      6月前
                      |
                      编解码 测试技术 Android开发
                      Appium Inspector与Weditor:移动端测试的利器
                      本文介绍了两款移动端自动化测试的元素定位工具:Appium Inspector和weditor。Appium Inspector是官方推荐的辅助工具,而weditor是基于Python的ATX生态工具,支持Android和iOS界面分析。weditor安装需Python 3.6以上版本,可能遇到的GBK编码问题可通过更改系统区域设置解决。它提供设备界面、元素详情和代码运行三个主要部分,便于元素定位、属性查看及交互代码执行。这两款工具对于提升开发和测试效率具有积极作用。
                      |
                      6月前
                      |
                      编解码 测试技术 API
                      模拟手机设备:使用 Playwright 实现移动端自动化测试
                      本文介绍了使用Python的Playwright库进行移动设备模拟和自动化测试的方法。通过Playwright,开发者能模拟不同设备的硬件和软件特性,如屏幕尺寸、用户代理,以确保网站在移动设备上的表现。示例代码展示了如何模拟iPhone X并访问网站,之后可在此基础上编写测试代码以检验响应式布局和交互功能。Playwright的设备参数注册表支持多种设备,简化了移动端自动化测试的流程。
                      |
                      11月前
                      |
                      设计模式 监控 Java
                      『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
                      『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
                      333 1
                      |
                      11天前
                      |
                      JSON Java 测试技术
                      SpringCloud2023实战之接口服务测试工具SpringBootTest
                      SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
                      42 3
                      下一篇
                      无影云桌面