一、 敏捷开发模型
- 作用:描述公司中产品、开发、测试、运维等相关人员如何协同配合完成软件开发过程
- 应用场景:需求不稳定,时间周期短(快速高效)
1.1 瀑布模型和敏捷模型
- 瀑布模型:需求稳定【无法应对需求变化】,项目周期长【测试介入是从开发编写完代码之后开
始】 - 敏捷模型:需求不稳定,时间短速度快,要求快速反馈,快速试错,快速改进
- 定义:以用户的需求进化为核心, 采用迭代, 循序渐进的方法进行软件开发
- 【APP测试】特点:小步快跑,相互独立
1.3 敏捷开发模型的框架--scrum
- 定义:一个敏捷的,快速迭代的增量开发模型
- 迭代(sprint):项目开发过程中的最小周期,一般为2~4周,一个软件项目开发可以持续若干个迭代
- 3种角色5种会议
- 3种角色:产品经理【PO】、项目经理【SM】、项目小组【DT】
一个scrum小组一般是7~9人 有一个产品经理 有一个项目经理(属于开发团队) 开发和测试人员(3:1~5:1)
- 3种角色:产品经理【PO】、项目经理【SM】、项目小组【DT】
文章图片
组成:OS-linux ,应用服务器:Nginx/Apache,数据库服务器:Mysql,项目代码:PHP
2.2 环境分类
- 开发环境:开发人员编写代码、调试代码的环境
- 测试环境:测试人员测试执行,回归测试的环境
- 预生产环境:即将发布的新代码,连接生产数据库,主要由测试人员用于测试业务流程
- 生产环境:正式用户使用的环境,也叫正式环境【测试偶尔会有,会复现bug或者发布之后验证流程】
文章图片
灰度发布策略:风险低,对于用户使用过程不影响(用户是无感知)
面试题:你们公司项目完成后是怎么上线的?
![APP测试](https://img.it610.com/image/info9/8cde12fd7f4c495faac355ba9474c579.jpg)
文章图片
自己总结:首先让部分服务器下线,用于更新代码,更新之后让这部分服务器上线,同时把剩余的服务器下线,测试需要和用户一样测试已上线更新过后的服务器,如果新服务器出现问题立即下线,继续把原有的服务器上线,如果不出现问题就把剩余的服务器全部更新上线。
三、 专项测试
3.1 安装
![APP测试](https://img.it610.com/image/info9/e35ce218a52f45d1b1a69aa01b209bf0.jpg)
文章图片
3.2 卸载
![APP测试](https://img.it610.com/image/info9/c92e56bada414353883b8f27fd5adf08.jpg)
文章图片
3.3 升级
![APP测试](https://img.it610.com/image/info9/4248b8f2d366479294166a75a71c392e.png)
文章图片
3.4 兼容性测试
APP在不同的软硬件平台上使用能否正常
指标获取:https://tongji.baidu.com/research/app
兼容分类:
- 品牌及机型:市场主流机型(市场排名前三的找出来)
- 操作系统:市场主流操作系统
不同的操作系统,同一操作系统的不同版本 Android :4.4以上 iOS:8.5以上 HarmonyOS(鸿蒙):2.0以上
- 尺寸与分辨率
注意 :
1.一般第一个版本测试涵盖(占比90%)比例分辨率和尺寸 2.更新的版本主要考虑测试主流机型分辨率和尺寸(排名靠前三位)
- 网络(弱网)
文章图片
- 应用兼容:和其他软硬件兼容
- 与手机硬件:音量、开关机键、home键等
- 与外部硬件:耳机、音响、蓝牙设备等
- 与操作系统组件:WLAN设置、系统时间调整、定位服务等
- 与其他APP:当前APP音视频和正在进行的其他音视频软件
指标的获取:https://tongji.baidu.com/rese...
测试工具选择
真机:持续一段时间市场占有率最高的几款机型购买
模拟器:市场占有率不高,但是又需要覆盖的机型可以通过手机模拟器去测试
云测平台:介于上述之间的,可以通过云测平台进行测试(收费)
3.5 交叉事件测试
A.交叉事件测试:也叫冲突测试或干扰测试,指一个功能正常执行过程中,另外一个事件对该过程的干扰测试
B.中断事件处理完成之后,一般会恢复到当前中断的位置继续执行
![APP测试](https://img.it610.com/image/info9/6447ad791bd445b7ac34e832eb42cb75.jpg)
文章图片
3.6 Push消息
app推送给用户的各种提示消息
![APP测试](https://img.it610.com/image/info9/55f45ed7aee44b8682633dc438bec05e.jpg)
文章图片
3.7 用户体验
参考标准
- 调查询问用户
- 使用竞品公司软件对比
![APP测试](https://img.it610.com/image/info9/0e5e8a8b20664a5e889fedc0a268c174.png)
文章图片
四、app性能测试
从时间和空间层面考虑app的正常使用
![APP测试](https://img.it610.com/image/info9/439e349b1a04476eb696c2d8f418fedd.jpg)
文章图片
4.1 CPU
- CPU出现性能问题现象
- 超过90%
- 手机发烫
- 耗电量增加
- 反应变慢
- CPU验证的参考依据
- 程序消耗CPU/总CPU
- 多次运行之后的CPU使用率平均值(根据经验和产品确认)
- 同样的操作参考竞品公司同类软件的CPU使用率,进行比较
- 程序消耗CPU/总CPU
- 结论:CPU的使用率越小越好
![APP测试](https://img.it610.com/image/info9/6c8126b11ae042da84e1a6da5c305e07.jpg)
文章图片
4.2 内存
- 内存出现故障现象
- 内存泄露
- 同一软件或者不同软件申请使用内存后没有完全释放,导致内存空间越来越少的现象
- 内存溢出
- 由于某种原因(内存泄露),导致后续的软件无法申请新的内存空间的现像
- 内存泄露
- 内存验证的依据
- PSS(实际使用内存) = 私有内存 + 共享内存
- 多次运行之后的占用内存比例平均值
- 同样的操作参考竞品公司同类软件的内存占用率,进行比较
- PSS(实际使用内存) = 私有内存 + 共享内存
- 结论:内存的占有率越小越好(相对
文章图片
- 测试分类
- 上行(例如上传,发送文件)
- 下行(也叫下载,一般下行耗费流量最多)
- 标准
文章图片
- 流量优化方法
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网路类型设置不用的访问策略
- 结论:同类型产品运行过程耗费流量越小越好
- 标准:要求运行的app耗费电量越少越好(mAh : 毫安时)
- 耗电场景
- 定位,尤其是调用GPS定位
- 网路传输,尤其是非wifi环境
- 屏幕亮度
- CPU运算:复杂的运算逻辑,死循环等会直接导致CPU负载过高,会导致耗电
- 锁屏-截屏时间和次数
- 验证电量指标
- 和产品沟通,获取历史的基础数据确定标准
- 和竞品公司做同样测试电量测试进行对比,查看耗电量的高低
- 结论:一般产品app耗电量越少越好
通过FPS描述每秒钟图片的数量 (有关联的连续图片按照一定的时间连续切换时会产生动态效果)
FPS : 每秒帧数(图片数)
frame per second
常见应用程序:游戏类、播放类
- 人类肉眼有感知:10~12帧
- 基本流程达到:24帧
- 达到非常流程程度:推荐60帧以上
- 结论:一般软件应用流畅度能达到24帧以上即可
![APP测试](https://img.it610.com/image/info9/d70682a53fcc463b89076d44d7fcd750.jpg)
文章图片
五、ADB
什么是ADB?
Android Debug Bridge,Android调试桥,用来管理控制Android的模拟器或者Android的设备
ADB包含三部分:
adb客户端(cmd窗口界面,负责输入编写adb命令);
adb服务器(负责传输adb命令到模拟器/Android设备终端);
adb daemon(负责执行adb命令的模拟器终端/手机终端);
为什么需要ADB工具?
通过命令形式操作管理移动端设备
APP的性能测试需要用adb相关命令
环境变量:以命令行的形式快速启动软件应用程序【例如:adb程序
![APP测试](https://img.it610.com/image/info9/28851b7a42104f66978f94e482a23a06.jpg)
文章图片
5.1 ADB命令
# 在安装了雷电模拟器的路径下进入cmd
# 1.检查设备是否接入,如果offline,可以重启雷电模拟器之后重试
# 正确结果显示:emulator-5554 device 或 127.0.0.1:5555 device
adb devices
# 2.查看当前移动设备安装的软件包,pm :package management
adb shell pm list packages
# 3.查看当前已经打开的某个APP的包名和Activity名(活动页面)
adb shell dumpsys window w | findstr mFocusedApp
# 查看启动上述包的时间
adb shell am start -W 包名/Activity名
# 对于稳定性测试,模拟人随机操作1000次
adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts --throttle
400 -v 10000
# 查看monkey进程的编号(PID)
adb shell ps | findstr monkey
# 结束money命令(将上述输入的PID填写后结束)
adb shell kill 进程PID
# app软件安装/卸载
adb install 软件路径
adb uninstall包名
# 获取app的日志
adb logcat
5.2 启动速度测试
- 启动分类
手动操作开始到显示出所有结果的时间过程,叫做启动测试
- 冷启动:app没有运行(已经被杀死),在运行启动的过程
- 热启动:app在后台运行,通过界面打开启动的过程
- 查看当前已经打开的APP软件包名和界面名
adb shell dumpsys window w | findstr mFocusedApp
- 测试app的启动时间
adb shell am start -W com.pingxixi.malls/.SPMainActivity
ThisTime:表示程序启动时间
TotalTime:程序启动时间+资源初始化时间
结论:启动速度越快越好(具体标准由产品定)
5.3 稳定性测试
稳定性测试(伪随机测试):模拟人工操作进行长时间运行APP程序,看会不会出现闪退,无响应
(ANR)等现象的过程
闪退:crash,突然间退出
无响应:ANR,Application Not Response的简称
- 通过monkey工具测试:长时间模拟人的各种操作(点击、滑动、输入等操作)
- 稳定性测试时间:一般在APP基本稳定没有太多bug时,就可以进行monkey的稳定性测试
- 演示monkey测试
对于商城APP稳定性测试,模拟人随机操作10000次
adb shell monkey -p com.pingxixi.malls --ignore-crashes --ignore-timeouts --throttle400 -v 10000 > d:\aaa.txt # -p :后面指定包名 # --ignore-crashes :忽略闪退(crash),即闪退后monkey继续发送测试事件直到完成 # --ignore-timeouts :忽略超时(ANR),即超时后monkey继续发送测试事件直到完成 # --throttle 400 :随机延迟延迟400ms # -v : 表示记录反馈日志的详细程度 ,-v -v -v 最详细 # 100000 :伪随机的事件次数
对于测试过程中常见的日志信息可以搜索一些关键词确认是否有问题 error:错误 failed:失败 crash:闪退 timeout:超时(ANR)