一、环境搭建
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