您现在的位置是:首页 >技术杂谈 >软件测试5.0学习笔记-阶段3·APP功能测试网站首页技术杂谈

软件测试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信息,成功; 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。