您现在的位置是:首页 >技术杂谈 >软件测试5.0学习笔记-阶段3·APP功能测试网站首页技术杂谈
软件测试5.0学习笔记-阶段3·APP功能测试
一.熟悉APP项目测试
1.1了解开发模型
分为瀑布模型和敏捷模型:
瀑布模型:将一个项目作为一个整体,下一个环节依赖上一个环节的完成。
敏捷模型:将一个项目拆分成多个子项目,每一个迭代周期完成一个子项目。(大多企业采取敏捷模型进行开发,效率高)
1.2熟悉APP项目
信息来源:
新项目:文档 --- 需求文档;人 --- 产品经理
已经存在的项目:文档 --- 使用说明书,用户手册,需求文档;人 --- 测试老员工,产品经理,开发;以及软件
熟悉的思路:
用户是谁,用户如何使用。
熟悉的目的:
了解项目的核心业务(用户使用的过程),核心功能(如果该功能缺失,会导致用户无法使用)。以便更好的展开测试工作。
1.3测试计划 -- 测试用例设计 --测试用例执行 --缺陷管理 --测试报告
【例】TPShop项目APP端:
核心业务:
下单流程,会员流程,售后流程,订单查询,会员管理,商品管理,评价流程。
核心功能:
注册,登录,会员,购物车,支付,评论,添加商品,抢购,轮播图,搜索。
二.APP专项测试
(1)兼容性
- 手机型号不同品牌商,不同机型。
- 操作系统版本:
- 安卓:根据在线统计平台数据获取。
- iOS
- 分辨率
- 屏幕:
- 尺寸:5.1,5.5,4.7
- 类型:刘海屏,水滴屏,曲面屏,折叠屏
- 网络:移动数据和WiFi
- 应用兼容性:
- 手机硬件:手机上的物理安建(音量键,home键,电源键)
- 外部硬件:蓝牙设备,有线设备
- 操作系统设置:wlan ,时间,定位
- 其他APP:具有后台播放功能的APP,比如音乐。
(2)安装
- 正常场景
- 从不同渠道安装
- 不同操作系统安装
- 不同安装路径安装(手机/SD卡)
- 异常场景
- 中断安装(关机,断网),中断之后能否恢复安装
- 存储空间不足安装
- 安装时,手动取消或者暂停,恢复后能否正常安装
- 正在运行时能否覆盖安装(后台运行,前台运行,需要考虑是否会打断用户操作)
- 低版本覆盖新版本
- 卸载后再安装,是否会有数据残留
(3)卸载
- 正常卸载(手机卸载使用第三方软件卸载)
- 运行时卸载(后台运行)
- 取消卸载(第三方软件二次弹窗确认时取消)
- 中断卸载(关机,黑屏)
- 卸载后数据残留(给用户提示确认,如果用户同意残留,可以保留数据;如果用户拒绝残留,不可以保留数据)(如果不做任何确认提示,默认需要清空残留数据)
(4)升级
- 从临近版本升级(上一次发布的版本)
- 跨版本升级(历史发过的版本,跨几个版本)
- 从不同渠道升级
- 升级前是否提醒(消息推送提示强制升级不提醒)
- 升级成功提醒(红点提示消息提示)
(5)干扰测试(交叉事件测试)
- 接打电话
- 收发短信
- 音视频电话
- 查看应用推送(当前软件推送其他软件的推送)
- 连接蓝牙设备
- 接收文件弹窗提醒(确认接收拒绝接收)
- 旋转屏幕
- 切换网络(移动数据和WiFi自动切换)
- 手机自带应用(打开相机手机电筒计算器等)
- 低电提醒
- 插拔充电器(充电动画)
(6)Push推送
- 推送服务器(是否按照规则去推送)
- 推送内容
- 推送的时间
- 推送频率
- 推送的对象
- 手机端
- 不接收消息时,将不会收到任何推送
- 接收消息时:
- APP在前台运行时,消息如何显示
- APP在后台运行时,消息如何显示
- APP离线,消息如何显示
- 消息能否打开
- 接收设置
- 接收消息但不提醒:手机提醒不会触发
- 接收消息且提醒:接收消息的同时触发提醒(结合手机模式:静音模式;震动模式;铃声模式)
- 接收消息但不显示消息具体内容(如:微信发来一条消息)
(7)用户体验测试
- UI界面测试(原型图设计是否合理)
- 横竖屏测试(内容展示是否异常,缩放效果等)
- 易用性测试(空数据提示;菜单层次是否过深;业务操作步骤是否过多;按钮位置是否适中)
- 手机上的辅助功能(色盲模式;盲人模式)
(可以采取真人体验:针对目标用户去找符合条件的人;找小白用户体验--公司内部其他未接触过该项目的人)
三.APP性能测试
性能测试指标描述:一定是某种时间内,某种条件执行某种操作,性能指标如何。
性能测试可以考虑和稳定性结合,monkey测试时使用性能检测工具监控性能数据。
例如:2小时内持续刷新操作,性能如何?持续运行8小时,性能如何。
3.1了解soloPi -- 性能测试工具
3.2性能测试指标
(1)CPU数据查看:
基线:如果有基线要求,CPU曲线是否存在长期超过基线的现象。
如果没有基线,行业默认90%
CPU占用过高可能出现的问题:手机发烫,页面卡顿,电量消耗严重;快速恢复办法:清空后天运行的进程。
(2)内存数据查看:
(3)流量和电量消耗:
注:流量测试一定是在真机上测试,需要有流量卡。
流量:
- 使用了多长时间,消耗了多少流量
- 测试怎么测:例如一个小时持续刷新,查看流量消耗
- 流量优化方法:
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
电量:
- 使用了多长时间,消耗了多少电量
- 测试怎么测:例如一个小时持续刷新,查看电量消耗
- 常见的电量消耗较大的场景
- 定位,尤其是调用GPS定位
- 网络传输,尤其是非WiFi环境
- 屏幕亮度
- CPU运算,复杂的逻辑运算,死循环等,直接导致CPU负载过高,会导致耗电
- wake_locker(锁屏-解锁)时间和次数
- 注:如果公司有基线,对比基线,如果没有基线,可以使用竞品对比测试。
(4)获取启动时间:
冷启动:APP离线状态下启动;时间长
热启动:APP后台运行状态下启动;时间短
命令获取:adb shell am start -W 包名/activity名
(TP商城包名/Activity名为:com.tpshop.malls/com.tpshop.malls/SplashActivity)
(5)流畅度:
SoloPi提供流畅度的监控指标:帧率FPS
- FPS:
- frame per second:GPU在一秒内绘制的帧率。
- FPS值越高画面越流畅。
让大脑觉得画面是连续的,需要至少每秒10-20帧;流畅效果,24帧+;流畅度最佳是60帧+。
补充:模拟器使用常见异常处理
1.device offline(设备离线) 处理办法 -- 重启模拟器
2.device not found(找不到设备) 处理办法 -- 重启模拟器
3.more than one devices emulater(连接了多个设备) 处理办法 --
获取设备列表:adb devices
断开不需要的设备:adb disconnect 手机Ip
(6)稳定性(使用monkey性能测试工具)
是通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。例如闪退crash,无响应ANR等。
稳定性测试工具--Monkey:
- monkey是一个命令行工具,由安卓官方提供;
- 用来模拟用户的触摸,点击,滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力测试和稳定性测试。(具体monkey在APP自动化章节介绍)
- 开发人员结合monkey打印的日志和系统打印的日志,来修改测试中出现的问题。
稳定性测试时机:
需要等产品稳定了,bug比较少时,再用monkey去测试待测试应用程序的稳定性。
测试要点:
- 注意性能数据监控
- 注意日志收集
四.常用的APP命令格式
ADB工具介绍:
- ADB(Android Debug Bridge)是一个通用命令行工具,也是Android软件测试开发工作者常用的调试工具。
- ADB可以用来安装卸载软件、管理安卓系统软件、启动测试、抓取操作日志等。
ADB环境准备:
命令格式:
1.查看已连接的设备列表 -- adb devices (结果会显示设备ip)
2.断开连接设备 -- adb disconnect 设备ip
3.无线连接设备 -- adb connect 设备ip(需要手机和电脑处于同一网段)
4.开启adb服务 -- adb start-server
5.关闭adb服务 -- adb kill-server
6.安装软件包 -- adb install 目标软件包的文件路径(路径可以手动拖入)
(参数:-r 保留数据,-t 强制覆盖;)即 adb install -r -t 目标软件包的文件路径:保留安装过的历史数据并且强制重装目标软件
7.获取包名:
- 获取手机里所有包名:adb shell pm list packages
- 获取手机里所有系统应用的包名:adb shell pm list packages -s
- 获取手机里除系统应用外所有第三方应用的包名:adb shell pm list packages -3
8.卸载软件包 -- adb uninstall 软件包名(包名需要命令获取)
9.获取当前打开的应用窗口:
- Windows上:adb shell dumpsys window | findstr mCurrentFocus
- Mac/Linux上:adb shell dumpsys window | grep mCurrentFocus
10.清除应用数据与缓存 -- adb shell pm clear 软件包名
11.启动应用 -- adb shell am start 应用包名/Activity名
(参数 :-W 是获取启动时间;-S 是启动前强行停止应用 即冷启动;-R 是启动次数,便于多启动几次算冷启动的平均启动时间;Activity名是应用中某个页面的名字)
12.停止应用 -- adb shell am force-stop 应用包名
13.获取内存:adb shell dumpsys meiinfo 应用包名
14.获取cup占用情况:adb shell dumpsys cpuinfo
(或者 adb shell top -s cpu 或 adb shell top -s 9)
15.获取流量消耗:
- 获取userId:adb shell dumpsys package 包名 | findstr userId
- 获取上行:adb shell cat proc/uid_stat/userId/tcp_snd
- 获取下行:adb shell cat proc/uid_stat/userId/tcp_rcv
16.稳定性测试ADB命令(Monkey):adb shell monkey -p 包名 -v 次数数字 > C:日志.txt
常用的:adb shell monkey -p 包名 10000 -v -v -v -throttle 500 > 本地文件路径
(-v -v -v:最详细的,最高级别日志;-throttle 数字:两个操作之间的时间间隔)
17.将日志导出到桌面:adb pull 日志文件路径 目标存放路径;
(真机连接数据线并开启 设置-开发者选项 才能使用adb命令:)
命令 总结:
五.fiddler抓取https
需要fiddler安装证书!
六.手机抓包操作
【简答:】
手机安装证书+手机更改无线网代理
---------------------------------------------------
前提:
手机和电脑在同一网段。
使用ipconfig 获取电脑的ip地址,
知道fiddler的端口号
(Tools->TelerikFiddler Options->Connections,port中值就是端口号,一般
默认为8888;)
接下来开始操作手机:
1.使用投屏软件(比如 微软投屏)然后打开手机浏览器输入 http:// 电脑ip:fidder端口号
2.点击FiddlerRootcertificate下载证书;
3.点击下载之后,安装证书并起个名字,随便写就行,点击确定;
4.要求设置一个手机密码,自己设置一个,记住密码就行,最后不用了去系统-安全-密码
中去掉即可;
5.更改手机无线网的代理
手机系统设置-无线网-点击高级,代理选择手动,主机名就是fiddler的电脑ip地址,端口号,就是fiddler的端口
号,与浏览器中ip:端口号保持一致,点击确定即可
6.操作手机,电脑fiddler中会显示一些http信息,成功;