移动app测试

一、环境搭建

1、模拟器环境

1)内网环境配置

1.安装phpstudy
2.将ecshop压缩包解压,将解压后的子文件夹upload的所有内容复制粘贴到phpstudy安装目录的WWW目录下
3.将ecmobile文件夹放入phpstudy安装目录的WWW目录下
4.浏览器输入localhost,按步骤安装ecshop站点
5.使用adb pull /system/etc/hosts e:\hosts此命令将hosts文件导入到windows系统的e盘下进行修改
6.在hosts文件中添加两行内容
第一行:10.0.3.2       shop.ecmobile.cn
第二行:此行是空行,不输入任何内容
7.使用adb remount命令获取修改安卓系统内目录权限
8.使用adb push e:\hosts /system/etc/hosts 此命令将windows环境下已修改的文件hosts覆盖安卓系统的hosts文件
9.使用adb install e:\ECMobile3.2.apk 此命令安装ecmobile软件,双击运行,有内容说明环境搭建成功

2)adb命令 Android Debug Bridge(安卓调试桥)

adb devices检查电脑上连接的设备
adb install安装apk文件
        如果有多台设备,adb -s 设备id install
adb uninstall卸载app包名
        需要知道app对应的包名称
        aapt命令:aapt d badging e:\ecmobile.apk | find "package"
adb shell    
    常见目录:
        /data/app(了解),放上传的apk文件
        /data/dalvik-cache(了解),放app的可执行程序dex文件
        /data/data/包名(重要),每个app对应的文件夹
            shared_prefs,放用户设置,是否第一次运行
            databases目录,app对应数据库,sqlite数据库,可用navicat打开

adb pull
    从android系统中取文件
    adb pull /data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml d:\userInfo.xml

adb push
    将文件传到android系统中
    adb push d:\userInfo.xml /data/data/com.insthub.ecmobile/shared_prefs/userInfo.xml

常见问题:
    输入adb,命令找不到,路径,可将adb的路径加入环境变量path
    权限拒绝,chmod修改权限
    修改firstrun的值后,ecmobile退出后再进入发现没变化,需要用kill杀掉ecmobile对应进程
    用adb pull从android系统中取文件时提示文件不存在,使用adb root以root用户重启adb,然后再pull
    开机白屏,升级显卡驱动,虚拟机与模拟器版本不兼容

2、真机环境

  wifi接入内网局域网,跟模拟器环境一样。

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
chmod 777 /system
修改hosts文件覆盖到Android系统中
服务端地址(pc端IP)  shop.insthub.ecmobile

二、app常见测试类型

  功能测试+专项测试

1、安装测试

  安装前,检查文件是否齐全,检查杀毒软件是否认为该安装包是病毒,apk文件病毒检查。

  安装中,安装方式、途径多样,应用商店安装,adb安装,上传apk文件到sd卡安装,浏览器下载安装。

  安装后,运行检查,安装后文件是否正确,权限检查,欢迎界面检查。

  升级,通过adb升级,应用商店,网页下载升级,低版本、同版本、高版本覆盖安装,考虑有无缓存数据或存储数据。

2、卸载测试

  通过adb卸载,第三方应用卸载,系统进行卸载。

3、功能测试

  单功能测试,针对单个功能进行测试,重点在于各种异常情况;

  功能交互测试,针对功能之间的相互影响进行测试;

  业务流程测试,针对业务流进行测试,需要考虑基本流和特殊流。

1)手机app分类

  native app原生app,无法用fiddler抓包。特别为某种操作系统开发的app。不需要安装,直接安装在设备里,可以调用手机终端的硬件设备。ios的Camera。Android的KeePassDroid。良好的用户体验,速度快,性能好,可线下使用,开发成本高。eg:照相机、相册、短信、通讯录。

  web app,需要用到网络。不需要下载,不能调用手机终端的硬件设备。eg:android的google。可以实现跨平台开发。

  hybrid app混合app,需要下载安装,facebook,百度搜索。

  app主要用于前端展示使用,数据仍由服务器处理,处理之后下发到前端,常用的数据格式json。

2)业务测试,fiddler使用

  fiddle环境配置,进入fiddle-Tools-options-connections页面进行相关配置,端口号设为8888。安卓系统网络配置,选择代理服务,ip输入10.0.3.2,端口号设为8888,保存退出设置。打开ecmobile有数据,fiddle中有抓取到包,说明环境配置成功。

  inspector,json数据格式,JavaScript Object Notation,(JS 对象标记)。需要检查每个字段属性的值是否正确。响应数据需要注意是否有压缩。

  autoresponder,fiddler将假数据作为响应发给app,原理:fiddle将服务端处理的响应数据保存,自己给app一个假的响应数据。步骤,将真实的响应数据保存作为修改对象,对保存的响应数据设置自动响应规则做测试。

  filters,过滤器,根据host过滤。

3)功能交互

  与手机系统功能的交互,短信、来电、闹钟,eg:通话时,使用ecshop。与手机管理软件或安全软件的交互,权限,休眠,关闭网络。

4)操作方式

  屏幕旋转测试,锁屏键、home键、back键测试,滑屏、长按、双击、多点触控。

通知栏测试

双卡双待测试

android四大组件:

activity 界面:
    catlog的工具查看android的日志,通过包名查看,displayed关键字
    一个activity对应一个界面,一个界面可以对应多个activity
    查看进程:ps | grep ecmobile
    用户id:/data/system/packages.list,列:包名、用户id、调试标记、包的数据路径,
        用户 id,可以很好的把不同 app隔离开,方便通过权限控制来保护各个 app 的数据。
    packages.xml记录系统当中安装APK的所有属性,权限等信息。
        当系统中的APK安装、删除、升级时,文件被更新

service 后台服务:
    微信消息提醒,微信后台service在运行

broadcast receiver 广播:
    锁屏、home键、back键会发出广播
    点击解锁,fiddle抓包

content provider app间数据共享

4、性能测试

  包含:负载测试(测试系统能力)、容量测试(测试数据库的最佳容量)、压力测试(测试耐力)、并发测试、配置测试、基准测试。

  针对:响应时间、资源消耗、吞吐量。

1)时间

  通过activity的时间来做估算(日志中displayed关键字查看),可进行多次平均。

  启动时间:首次启动时间,安装好app后第一次运行的启动时间。非首次启动时间,冷启动时间,热启动时间。冷启动时间,app对应进程未运行,可以在安卓系统中用kill杀死进程,kill 进程号。热启动时间,app对应进程处于运行状态。

  切换时间:不同界面切换。

2)存储空间

  Android内存:native堆内存、dalvik堆内存:

native:/data/data/app包名/lib中.so文件产生
dalvik:运行java程序时产生
    头部限制:/system/build.prop
     cat build.prop | grep heap
    超过最大内存heapgrowthlimit,可能产生内存溢出,OOM

  内存占用:

查看每个应用内存(Pss字段)的使用情况:
adb shell procrank
adb shell top -n 400 | grep packagename
adb shell dumpsys meminfo | grep packagename

当app打开某个超大的图片时可能产生内存溢出
app要使用的内存空间超过heap堆内存设置

  GC(垃圾回收):

挂载块设备文件mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
修改权限chmod 777 /system
生成GC日志文件logcat -v time -v threadtime | grep GC>GCFile.txt
生成的GCFile文件需要在外部利用adb pull导出

  运行空间占用:

主要关注/data/data/包名 目录空间大小
du -sH  其值不断变化,需要多次获取

3)CPU(中央处理器)占用

  emmagee:APP性能测试工具,/sdcard导出.csv文件到windows目录下。

  GT、百度的测试助手、公司研发的平台等。

4)GPU(图形处理器)占用

  关注点,GPU过度绘制。界面区域重复绘制多次,造成GPU占用过多。浪费GPU资源,产生无效的电量消耗。

5)功耗

  安装功耗:安装前测试电量与安装完成后测试电量相减。

  待机功耗、使用功耗

还有

  流量,使用中流量、待机流量。性能测试需要进行横向和纵向的对比,横向:竞争对手,纵向:以前版本,形成基准。

5、兼容性测试

  环境兼容性,操作系统、浏览器、屏幕尺寸。

  android系统碎片化,开源,各厂家的软硬件不同。屏幕尺寸,4 寸屏、5 寸屏等。屏幕像素,像素的大小,像素越大,屏幕越清晰;屏幕分辨率,长和宽上像素的多少。权限设置,不同用户对于设备权限的控制不一定相同,eg:用户会禁止所有非系统应用使用摄像头等。

  查看点击<手机覆盖分析>

  借助于云测平台,阿里云mqc、百度云测、testin、腾讯优测、公司研发的平台等。

6、易用性测试

  操作是否便捷。按钮点击范围是否合理,打开显示布局边界。

  界面是否美观易懂。图标是否准确。

7、可靠性测试

  稳定性测试。成熟性,软件内部问题处理的能力。容错性,软件外部问题处理的能力。易恢复性。

  异常测试。断电、断网、数据丢失、程序异常退出。

1)稳定性测试

  点击查看

是Android中一个命令行工具,可以运行在模拟器或实际设备中,
是Android自动化测试的一种手段
monkey通过向系统发送伪随机的用户事件流,如按键输入、
触摸屏输入、手势输入等,实现对app的稳定性测试
adb shell monkey -p 包名 --throttle 500 -s 9 -v -v -v 30000>G:\monkey_log.txt
在monkey_log文件最后一行出现monkey finished,表示设备运行正常
日志中遇到Crash或者ANR(Application Not Responding),自动终止运行
一般情况:3万次以内出现Crash,认为系统可靠性比较糟糕
可通过simiasque避免monkey操作通知栏,导致无效测试

2)异常测试

  断电重启、网络中断、程序异常退出、Apk文件名包含中文、清除缓存。eg:app无法访问网站,首页显示以前的数据,网络恢复后,首页不会进行更新,仍然显示以前的数据。

8、网络测试

  网络分类。WiFi 强、弱,2G,3G,4G。

  不同网络间切换。

  关注。不同网络下app的使用(可通过微软的network emulator模拟):上行速率、下行速率、延时、丢包率。网络切换下app的使用。弱网/无网测试。

 

笔记

2020-01-12

你可能感兴趣的:(移动app测试)