移动APP之专项测试

兼容性测试
1.兼容性测试的准备和手工测试
APP通常考虑
(1)操作系统版本(考虑大版本迭代)
(2)屏幕分辨率 (720p,1080p等)
(3)不同厂家的ROM
(4)网络类型(wifi/2G/G/G)
手机M版网站(主要考虑不同浏览器类型,另外需要考虑屏幕分辨率问题)

2.基于UI自动化脚本的云测试方案
App云测试平台
(借助UI自动化方案,有大量真机的云测试平台,平台提供截图日志等)
testin
(1)脚本的编写和本地调试
简单的testcase封装
(2)上传到云平台运行
(3)查看测试报告

流量测试
流量:一是用户的操作直接导致的流量消耗;二是后台,即在用户没有直接使用情况下流量消耗。

一:Android APP特有的流量测试方法
1.基于系统自带的统计功能
直接读取Android系统上二个文件内容

proc/uid_stat/{
     UID}/tcp_snd
proc/uid_stat/{
     UID}/tcp_rcv

{UID}是每个Android APP在安装时分配的一个唯一编号,用于识别该app。tcp_snd文件中数据表示发送的数据累计大小,以字节为单位。tcp-rcv表示接收到的数据累计大小。
可通过访问/proc/{PID}/status查找PID

2.通过系统API来获取流量数据
通过TrafficStats.getUidRxBytes方法获取该APP对应接收流量数据,然后显示在日志里

3.APP内部通过代码统计接口数据量
在网络访问接口代码加上相关的统计功能来获取流量数据,resp是一个httpresponse对象,resp.getEntity().getContengLength()方法可获得本次响应的数据量

二:通用流量测试方式
在手机上抓包或通过网络代理来统计
1.手机上抓包
常用抓包工具:windows下Wireshark,Linux下tcpdump
2.基于wifi代理的方式获取流量数据
通过代理工具来实现:fiddler代理工具,charles
3.自动化的流量统计方案

三:常见流量节省方法
1.数据的压缩
减少传输的数据量是最基本节省流量的方法
2.不同数据格式的采用
3.控制访问的频次
4.只获取必要的数据
5.缓存
6.针对不同网络类型设计不同的访问策略

电量测试
一:Android电量测试方法
1.基于硬件设备的方法
基本方法:将手机电池取下,并将电量表串接在手机和外部电源之间,查看电量消耗
2.基于GSam Battery Monitor Pro查看电量消耗

弱网络测试
1.借助手机自带的网络状况模拟工具
2.基于代理的弱网络模拟
Windows下的Network Delay Simulator,Mac下Network Link Conditioner

稳定性测试
一:基于Monkey的稳定性测试
Monkey命令随机地向目标程序发送各种模拟键盘事件流,并且可以自定义发送的次数,来观察被测应用程序的稳定性和可靠性
MonkeyRunner

二:Android 的ANR
1.ANR:输入事件5秒内未响应完成,例如点击屏幕,按键等操作;
BroadcastReceiver10秒内未执行完毕
2.Android的ANR日志存放在/data/anr/traces.txt下
导出该日志:

cp /data/anr/traces.txt /sdcard/traces.txt
adb pull /sdcard/traces.txt 本地文件路径

三:基于模糊测试思路的稳定性测试方法探索
模糊:相对于通常功能测试的“确定”而言
模糊测试
1.单个步骤数据的引入随机,包括一些异常情况
2.执行步骤的不确定性
3.多个随机处理的步骤串行的持续运行
4.日志和辅助监控手段

安全测试
一:安装包测试
1.能否反编译代码
android测试中常用反编译方法:dex2jar工具并结合jd-gui工具查看源代码
2.安装包是否签名
发布前校验下签名使用的key是否正确,以防被恶意第三方应用覆盖安装
jarsigner -verify -verbose -certs apk包路径,运行后结果为“jar已验证”说明签名校验成功。
3.完整性测试
为确保安装包不会在测试完成到最终交付过程中因为各种问题发生文件损坏,需要对安装包进行完整性校验。通常做法是检验md5的值,而且一般可以通过做自动化校验
4.权限设置校验
防止用户隐私泄漏,需要对app申请某些特定权限的必要性进行检查。
Android平台可以直接检查manifest文件来读取应用所需的全部权限,并结合需求校验此权限是否为必须。

二:敏感信息测试
1.数据库是否存储敏感信息
2.日志中是否存在敏感信息
3.配置文件是否包含敏感信息

三:软键盘劫持
若用户安装第三方软键盘,在使用我们app输入时信息被第三方键盘截获。
因此需在一些输入带有敏感信息的输入地方检查,例如金融类登录app

四:账户安全
1.密码是否明文存储在后台数据库
2.密码传输是否加密
3.账号锁定策略
4.同时会话
5.注销机制

五:数据通信安全
1.关键数据是否散列或加密
2.关键连接是否使用安全通信
3.是否对数字证书合法性进行验证
4.是否校验数据合法性

六:组件安全测试
Android平台各个组件是否能被外部应用恶意调用从而带来一些安全问题,采用测试方法调用drozer工具

七:服务端接口测试
关注服务端接口是否存在以下问题:
SQL注入
XSS跨站脚本攻击
CSRF跨站请求伪造
越权访问

环境相关测试
一:干扰测试
干扰场景:收到电话/收到短信,收到通知栏消息,无电提示框弹出,第三方安全软件景观框弹出

二:权限测试
一些用户使用app时有意识阻止某些功能

三:边界情况
1.可用存储空间过少
2.没有sd卡/双sd卡
3.飞行模式
4.系统时间有误
5.第三方依赖

四:Android定位测试
App行为与地理位置相互关联
1.白盒方式
定位代码最终获取的是一个位置对象,只需在获取位置对象后手动设置经纬度即可测试,程序中位置对象一般是android.location.Location对象,调用它的setLatitude和setLongitude方法可以设置经纬度
2.模拟器模拟
使用模拟器时可使用DDMS进行经纬度设置
3.自定义位置提供器

你可能感兴趣的:(移动APP测试实战学习笔记,移动APP专项测试)