APP测试重点

APP测试:
功能性—web测试
根据产品需求文档编写测试用例而进行测试
功能性包括客户端的单个功能模块,及功能业务逻辑(功能交互)
如:涉及输入的地方需要考虑等价类,边界值,异常或非法等

安装与卸载
软件安装后是否可以正常运行
安装过程是否可以取消
安装空间不足时是否有相应的提示
是否可以卸载应用(可通过桌面卸载,可可以通过软件卸载安装.曾发现在IOS手机上有个应用安装时未完全安装,终止安装后,未完全安装的应用图标一直显示在手机上,且无法成功删除)
卸载是否支持取消功能,单击取消后软件卸载功能是否正常====不可逆
卸载后文件是否全部删除干净(所有的安装文件夹)
安装到本地还是SD卡,有选择可以提供
安装完自动删除安装包
从不同的应用市场下载进行安装
重复安装

软件更新升级
当客户端有新版本时,是否有跟新提示
当版本为非强制升级版时用户可以取消跟新,老板本能正常使用,用户在下次启动APP时,仍能出现跟新提示
当版本为强制升级版时,当给出强制跟新后用户没有做跟新时,退出客户端,下次启动APP时,仍出现强制升级提示
检查跟新后各个功能是否能正常使用
在线跨版本升级后能否正常使用
-----如果是版本重构(需要全部测试)
-----如果是添加新的功能(除了测试新功能,基本功能需要测试一遍,修复的功能也要做细致的测试)

登录测试
1.账号密码登录 2.第三方登录 3.指纹登录 4.手势密码登录 5.快捷登录 6.声音识别登录 7.刷脸登录 8.二维码登录
用户主动退出登录后,下次启动APP时应该进入登录界面 QQ,微信,天猫,外卖
对于未登录状态时,一些页面的操作,是否做了控制
切换账号登录,检验登录的信息是否做到及时跟新
对于多个端(web,IOS,android等)进行操作时,确保数据库操作无误,且每个端可以及时看到数据的跟新
一个账号只允许登录一台机器的软件,需要账号登录多个手机时,是否将原用户踢下线,且能够给出提示信息
用户登录状态太久,sessionid会过期,会出现虽然是登录的状态,系统会提示用户没有登录
第三方授权登录:QQ登录–QQ已登录授权—QQ未登录–QQ未安装

离线测试
是应用程序在本地客户端会缓存一部分数据以提供程序下次调用,对于一些程序,离线转态下可以浏览本地数据
对于离线(无网络)时,刷新获取新数据时,不能获取数据时能给出友好提示
对于界面的数据不提供离线查看,需要给出相应提示且界面跟新后无任何数据
离线下,退出APP再开启APP时可以正常浏览
离线下,锁屏后再解锁回到应用前台可以正常浏览
离线后上线,断点发送,传送,记录(手动,自动断点续传:网盘直播视频APP)

消息推送
默认开关应该是全打开状态(设置)
设置开关可以自由打开关闭,设置开关关闭时,客户端接收不到消息推送
未锁屏时,APP客户端使用过程中,可以接收信息提醒,且点击可查看
锁屏时,推送消息是否支持接收?且点击可查看
手机消息栏是否可以接收到信息提醒,且点击可查看.点击后消息栏中消失
当push推送消息是是否能有针对性的推送,如相应内容推送给相应用户(精准推送)
退出登录后,是否接收push推送(根据需求来)

UI界面
确保产品UI符合产品经理制定的原型图与UI设计效果图/切图
一般涉及界面(如菜单,对话框,窗口和其他可视控件)布局风格,文字 是否正确,页面是否美观,操作是否友好
如:安装APP后的加载页显示,分享页面的产品logo显示

安全性测试
扣费风险:包括发送短信,拨打电话,连接网络,没有网络时能否提醒
例如当网络状况很差的时候,用户在支付界面的多次确认操作必须只能执行一次
隐私泄露风险:包括访问手机信息,访问联系人信息等
是否允许访问相册,拍照
是否允许录音
是否允许定位
是否允许接收通知推送

一般对于大多数非支付类APP来说,安全并不是一个特别大的问题,只需要保证登录鉴权的安全性即可
用户权限—权限是否正常
支付类:金钱计算必须正常,金额是否有做加密处理(具体原型图会有说明)

兼容性(操作系统,屏幕尺寸,分辨率)
应用是否可以在不同操作系统正常使用,如果开发有android和IOS两个平台的软件,那么在这两个平台都要做兼容性测试
----百度浏览统计局
安卓5,6,7,8,9,
IOS7.1.2 8.3 9.1 10 11
能否适配各种屏幕尺寸
分辨率适配:分辨率不同,界面图标,文字大小会不同,保证主流分辨率下图标展示完整,文字不被遮挡
手机机型选取市面上主流手机:华为,oppo,vivo,小米 iPhone6,7,8,XS

异常中断(网络中断,前后台切换,断点等)
交互异常性测试:客户端作为手机特性测试,包括被打扰的情况;如来点,来短信,低电量测试等,还要注意手机端硬件上,如:待机,插拔数据线,耳机等操作不会影响客户端
异常性测试:主要包含断网,断电等情况下,客户端能否正常处理,保证数据正确性
对于有(主功能)实时数据交换的页面,每个页面都必须要进行前后台切换,锁屏解锁,网络切换,app关闭开启,电话切换,断电切换等中断的测试,这种页面最容易出现崩溃
语音通话,发送语音,音乐视频 冲突 暂停
暂停—中断完成—暂停恢复继续

APP测试和web测试的区别:
相同点:
同样的测试用例设计方法
同样的测试方法,都会依据原型图或者效果图检查UI
测试页面载入和翻页的速度,登录时长,内存是否溢出等
测试应用系统的稳定性
不同点:
app测试中断测试:来电中断,短信中断,蓝牙,闹钟,插拔数据线,手机锁屏,手机断电,手机问题(系统死机重启)
app的安装卸载:全新安装,升级安装,第三方工具安装,第三方工具卸载,直接删除卸载
消息推送测试,手机授权测试,前后台切换,网络环境(wifi/2G/3G/4G/无网络)
兼容性测试:web项目考虑不同浏览器的兼容;app需要考虑手机不同操作系统,不同机型,不同屏幕等
web自动化测试工具较常用QTP,而手机自动化monkey,monkeyrunner

app的云测平台:百度云测,testin云测

APP专项测试
APP客户端压力稳定性测试----monkey
android系统自带monkey程序,模拟用户触摸屏,滑动trackball,按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
adb是用来连接安卓手机和PC端的桥梁,通过adb服务,在PC端命令行界面对手机或者模拟器进行全面的操作
monkey什么时候用?等你们的产品稳定了,没有特别多的bug时候,一般会用monkey去测试待测应用的稳定性,健壮性(是否会发生闪退,奔溃),手机出厂前的整机测试

adb常用的命令
adb --help 查看帮助手册
adb devices 检测连接到电脑的安卓设备,这个是我们会经常用到的检测命令
adb pull <手机路径> <本机路径> 从手机上拉取信息放到本地电脑上
adb push <本机路径> <手机路径> 从本地推送信息到手机上
adb shell —登录设备shell(命令行的人机界面),ll ls 命令都可以用,进入到linux环境,相当于执行远程命令
adb logcat > 路径文件名 将日志打印到文件中
adb install xxx.apk -----为了获取apk的安装包所在地址,可以直接把apk拖到里面获取,返回success就说明安装成功了!
adb uninstall com.tencent.mobileqq —应用包名
adb shell dumpsys activity | find “mFocusedActivity” --查看前台应用包名
adb connect/disconnect 通过wifi进行远程连接手机进行调试
adb shell pm list packages 获取当前应用下的所有包名

monkey常见命令
adb shell monkey {+命令参数} 次数
adb shell monkey -help/-h

参数:
-v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共三个级别—我们三个v详细程度最高
-p 后面接对应的包名,如果是整机测试,就不需要,用此参数指定一个或多个包
-s 用于指定随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同.用于问题重现
–throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒
–ignore-crashes --ignore-timeouts 这里是在monkey测试过程中遇到crash或者timeout的情况时忽略掉,一般不设置时,出现crash或者timeout时,monkey测试会终止,这里是防止monkey测试终止
次数 10000 这里是指点击的次数,根据测试的经验,对于单个应用程序这个次数设置在10000次数就可以了,如果是整机,一般设置在500000次
APP客户端性能测试----指标监控
弱网测试—
在移动互联网时代,用户会在各种网络状况西使用我们的APP。他们使用3G或4G网络,甚至还在用2G,现在的人们更习惯在上下班的路上去关注一些新闻,看看股市,小说,直播,玩游戏等等
那么就会面临一个问题,在地铁里,在巴士上,甚至是电梯,车库等等的场景里。在这个时候,我们就需要针对这些场景,去关注一下软件的运行状态。以及弱网环境下,出现丢包,延时软件的处理机制。避免造成用户的流失

丢包:
丢包应该是最常见的问题。在TCP协议中,需要不停的发送请求,来确认连接状态,一旦发生丢包,就需要重传。这个时候就需要去检查产品的处理机制,给与什么提示,如果未响应怎么处理这些。

延时:
延时也是很常见的问题由于网络太差,产生了网络波动,导致数据包在传输的时候出现抖动。可能导致请求出现超时的现象。这个时候就需要给与相应懂得提示,或者是其他的处理方式
fiddler—模拟网络延时的场景
network emulator toolkit—模拟网络丢包场景
延时模拟:
1、在fiddler的tools option选择connection —>修改端口号为7777 将act on system proxy反勾选
2、打开模拟器,在设置–wifi–长按热点–修改网络–勾选显示高级选项–选择手动配置–填入自己的windows的IP地址,端口号为7777
修改完成之后最好是重启模拟器和fiddler
3、fiddler里面rules–customize rules --找到m_SimulateModem配置,修改上传延迟和下载延迟
4、rules–performance–simulate modem speeds生效

APP性能测试
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能能否满足生成性能要求,即在特定的运行条件下验证系统的能力状况
测试时间:
与功能测试并行
测试范围:
产品的核心功能。用户使用最频繁,与用户交互最多
按APP构成特点,将性能测试分为客户端性能、服务器性能两大块
客户端性能分为:整机性能、硬件性能、APP性能
我们关注点是:客户端APP性能测试

APP性能指标:
流畅度:
FPS/SM指标
界面过度绘制
布局层级合理性
渲染性能
HierarchyViewer/GPU Rendering/Systrace

启动时间:
热启动
冷启动
首次启动
adb/traceview

CPU:
CPU使用率
CPUjifies
adb dumpsys cpuinfo

耗电量:
检测唤醒锁
GPS
优化电量消耗
battery historian

内存:
内存泄露、溢出、抖动
monitor/MAT/leakcanary

网络:
流量测试
弱网测试
tcpdump/wires hark fiddler

APP日志分析:
android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用
使用方式:
[adb] logcat []…[]…
logcat是以如下开头的
1.-----beginning of XXX

开发者选项,有个选项叫做“日志记录器缓冲区大小”,默认是256K,日志是循环写入环形缓冲区的。在通常情况下,写满是最旧的日志会被删除以给新输出的日志留内存空间

logcat缓冲区:
android log输出量巨大,特别是通信系统的log,因此,android把log输出到不同的缓冲区,目前定义了四个log缓冲区:
Raido:输出通信系统的log
System:输出系统组件的log
Event:输出event模块的log
Main;所有的java层的log(不属于上面3层的log)
tips:如想输出通信系统的log:adb logcat -b radio

logcat日志的分析:
由五部分组成
1、写下日志的时间,如05-11 09:39:35.209
2、优先级,在android中,日志的优先级从低到高分以下几种:
V—Verbose(最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出)
D—Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)
I—Info(信息,一般提示性的消息)
W—Warning(警告)
E—Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
3、标签(tag),标明日志发起者和方便日志的过滤筛选,如上中ActivityMangager
4、PID(进程ID),如上中491
5、正文,本日志的主体内容

何为ANR
ANR全名Application Not Responding,也就是应用无响应应当在操作一段时间内系统无法处理时,系统层面会弹出ANR的对话框
为用户在主线程长时间被阻塞时提供处理交互,提高用户体验
android系统一种自身检测机制

系统发生ANR时,会通过三种方式记录信息
Logcat日志
Trace文件
DropBox服务

通过Trace文件进行分析;
Dump stack trace 信息
Dump的进程包括:当前应用进程,父进程,主进程,persistent进程,以及CPU占用率排在前几的(最多5个)进程

data/anr/traces.txt文件里面只能保留最后一次发生ANR时的traces信息
通过dropbox可以收集系统一段时间内的异常信息(包括ANR)
/data/system/dropbox是dropbox指定的文件存放位置

你可能感兴趣的:(测试理论)