软件测试学习日志_手工测试阶段_day06

Day06课堂笔记

目标

  • 会APP类型项目的性能测试

  • 会使用ADB命令对APP进行专项及性能测试

一、APP性能测试

1.APP性能测试介绍

  • 通过工具命令测试APP软件对于移动端硬件占用程度。

    • 工具:

      • Android系统solopi(开源)、GT、PerfDog(收费)

      • iOS系统:Xcode开发者工具

      • harmony next系统:DevEco Studio NEXT Developer、DevEco Testing Developer

    • 命令:

      • Android:adb命令

2.APP性能指标

2.1 内存测试
  • 内存异常现象:闪退(crash)、内存占比超80%

    • 问题:内存泄露、内存溢出

  • 使用APP,通过solopi的内存指标监控值

    1. 空间单位换算进率

      1GB=1024MB、1MB=1024KB、1KB=1024B

    2. 模拟器总内存查看:设置中心--> 性能 --> 性能配置 【默认显示6GB】,总内存:6X1024MB=6144MB

    • 获取图表数据,看平均值(MB/s)

    • 计算:平均值/总内存大小 *100% < 80% 【表示当前APP内存指标达标】

      如下图测试后内存占用率:
      (87.16/6144)*100% = 1.4% 
      结论:远远小于80%预期值,同时也没有出现内存泄露问题,当前APP内存指标达标,测试通过。
2.2 CPU测试
  • 异常现象:

    • CPU占比超高:超过80%

    • 设备发热、耗电量大

    • 程序运行慢、卡,程序出现ANR(无响应)

  • 直接通过solopi查看运行APP之后CPU占比平均值,不超过80%达标

2.3 流量测试
  • 原则:希望APP运行过程中占用流量越少越好

  • 指标达标依据:和同行APP或者和自己过去版本比较是否有改进

  • 流量优化策略

    ① 数据进行压缩(减少流量)

    ② 采用不同数据格式(减少流量)

    ③ 控制访问的频次

    ④ 运用缓存机制(主要文件缓存本地,减少实施获取)

    ⑤ 设置访问策略进行请求后台(WiFi网络、移动网络数据量变化)

2.4 电量测试
  • 介绍:APP使用时,对电池电量的平均消耗程度

  • 原则:APP使用耗电量越少越好

  • 指标达标依据:和同行(竞品)APP或者和自己过去版本比(运营数据)是否有改进

  • 电量优化策略

    • APP定位仅使用时开启

    • 网络传输需要时传输(而非后台实施传输)

    • 屏幕亮度(根据需要自动调节)

    • 尽量不频繁唤醒屏幕/频繁的锁屏解锁

      • 看一段时间内电量耗费程度(mW)

  • 电量测试:需要通过真机测试,模拟器不支持(模拟器没有电池)

2.5 流畅度测试
  • 介绍:运行画面是否流畅(无卡顿/失真等)【主要针对游戏类、视频类APP】

  • 原则:APP运行越流畅越好,需要通过FPS(24帧以上)体现,数值越大越流畅(FPS:60帧最佳)

  • 普通APP:静态页面较多,FPS数值低正常

    特定APP:动态页面较多(游戏类、视频类等)FPS数值最少24帧

2.6 启动速度测试

APP响应快,用户的体验更好

  • 介绍:从启动app到主页面加载完成的速度

  • 分类

    • 冷启动:启动APP进程(进程未运行到运行)

    • 热启动:APP从后台切换到前台(进程运行中,页面从后台转前台)

  • 原则:启动速度越快越好

  • 指标达标依据:和同行(竞品)APP或者和自己过去版本比(运营数据)是否有改

  • # 冷启动tpshopAPP时间大约为:6s左右
    # 热启动tpshopAPP时间大约为:2s左右
    注意:这里面有误差(有人操作占用时间)

2.7 稳定性测试
  • 介绍:APP持久运行不出现异常问题【无:crash、ANR、卡顿、崩溃等】

  • 测试方式

    • 命令行工具:Android系统APP通过Android自带的monkey工具测试

    • 作用:模拟用户进行随机操作(触摸屏幕、滑动、 按键等)

    • 命令格式:adb shell monkey -p 包名 -v 次数 > 日志文件.log

      • 包名:任意APP唯一标记(类似于人的身份证号),一般按域名倒序命名【如:com.xxx.xxx】

      • 次数:模拟用户操作APP的次数(事件),一般是百万次数据量

      • 参数-v:表示日志详细程度。-v -v -v 最详细

    • 测试结果:通过检查日志是否存在关键词【ANR,timeout,Exception,out leak,error】,存在日志发APP开发并进一步确认是否是bug。

  • 稳定性测试总结

    面试场景题:

    1. APP稳定性测试目的是啥?—— 检查APP长时间运行是否出现【ANR、crash、timeout】

    2. 如何排查是否出现稳定性的问题?—— monkey运行后的日志中搜索关键词(ctrl+f)【ANR,timeout,Exception,out leak,error】,需要提交日志信息和Android开发确定是否是bug

    3. 一般一个APP稳定性测试多少次?—— 一般要求百万次以上(大约8小时左右),持续三轮以上。通过添加延迟参数 --throttle 延迟毫秒

    4. 如何确保monkey执行时,出现异常后,还能继续完成后续次数?—— 增加忽略闪退、忽略超时,让操作次数全部执行完毕 --ignore-crashes --ignore-timeouts

二、adb命令

# 介绍adb命令原因
1.命令使得测试更高效
2.应对面试
3.解决工具的能力边界
4.工具的操作本质还是调用命令
1.ADB介绍
  • ADB(Android Debug Bridge):Android调试桥,Android软件测试开发工作者常用的调试工具

  • 应用场景:安装卸载软件管理安卓系统软件启动测试抓取操作日志等【APP专项+稳定性】

  • ADB环境:

    • 下载解压软件包

    • 配置环境变量

      作用:让软件/程序在任意路径下都能够启动运行(配置环境变量)

      构成:三部分

      • adb 客户端

      • adb 服务端

      • adb daemon(系统自带守护程序)

      注意:

      1. daemon程序在Android手机/模拟器中自带

      2. 还可以连接真机(Android手机--用数据线,手机需要开启开发者模式)

2.ADB常用命令
  • 连接设备及状态检查

# 检查接入的设备
adb devices
​
# 接入设备状态不正常(offline)
# 1.重启模拟器/手机
# 2.重启ADB服务
adb kill-server
adb start-server
​
# 连接设备
adb connect IP:端口
  • adb安装卸载APP

    场景:测试Android设备过多,建议使用adb命令安装更高效

    面试:

    1. adb安装APP软件和卸载APP软件有啥区别?

      • 关键不一样,安装install,卸载uninstall

      • 安装和卸载跟的内容不一样,卸载后跟包名

    • 安装:adb install apk路径

    • 卸载:adb uninstall 包名

  • 查看安装的APP软件包

    • 查看第三方软件包:adb shell pm list packages -3

    • 查看正在打开软件包:

      • windows:adb shell dumpsys window | findstr mCurrentFocus

      • mac/Linux:adb shell dumpsys window | grep mCurrentFocus

  • app的启动和停用

    场景:模拟人启动/停用APP

    注意:

    • 启动:需要知道包名和页面名(注意是APP的启动页,不是进入的首页)

    • 停用:只需要知道包名即可

    • 启动:adb shell am start 包名/页面名

    • 停用:adb shell am force-stop 包名

  • 模拟APP启动测试

    • 启动:adb shell am start -W 包名/页面名

      • -W:显示启动时间,主要看:TotalTime

  • 查看APP端日志

    面试场景:

    1. 针对APP类型项目,测试过程中出现了不可复现的bug时,最好提前通过adb logcat打开日志并记录

    2. 最好将日志重定向到指定的文件中,通过搜索关键词查询时间段/日志内容,提交开发进行进一步确认是否是bug

    3. 日志内容包含:操作系统的日志和APP应用的日志

    • 命令格式:adb logcat > 日志文件名.log

    • 注意:强制结束用 ctrl+c

  • 文件上传下载

    场景:如何将电脑文件传到手机/模拟器上;或者把手机/模拟器文件传到电脑上

    注意:下载文件到电脑时,需要指定文件夹,否则可能会报错

    • 上传:电脑文件上传手机 adb push 电脑路径 手机路径

    • 下载:手机文件下载电脑 adb pull 手机路径 电脑路径

  • 内存查看

    场景:获取正在运行的app占用内存比例

    • 查看格式:adb shell dumpsys meminfo 包名

      • 如果不写包名:能看到设备总内存【Total RAM】

      • 带包名:能看到当前app实际使用的内存(total pss)

      • 计算:当前app占用内存% = Total PSS/总内存 *100%

        如下截图:
        tpshopapp内存占比= Total PSS / Total RAM = 82069/6093056 * 100% = 1.3%
  • 查看CPU信息

    场景:获取正在运行的app占用CPU比例

    • 查看格式:adb shell top

    • 说明:能够动态实时查看CPU及内存占比

Day06-APP补充

目标

  • 知道项目开发模式(互联网+)

  • 能说出项目的发布方式(互联网+)

一、ADB命令

# 介绍adb命令原因
1.命令使得测试更高效
2.解决工具解决不了的问题(工具操作Android本质还是调用adb命令)
1.ADB命令如何学习

命令作用:提效+解决工具解决不了问题

方法:

  1. 啥场景下用?(比如:批量安装APP、查询APP占用内存情况等)

  2. 怎么用?(以练习方式记忆,先模仿敲,再多重复多次记忆)

2.ADB命令记哪些
  • XMind中优先级最高的(其他的可以先放一放,后续面试前复习时再记忆)

二、项目发布(互联网+)

  • 敏捷开发

    理念:小步快跑(大项目拆分小块,不同敏捷小组同步进行实施)

    迭代周期:一般2周(10个工作日)

    • 三种角色

      • PO、SM、DT

    • 五种会议

      • 需求决策会(立项)

      • 需求计划/评审会议

      • 每日立会(15分钟左右)

      • 迭代发布会

      • 迭代回顾会

  • (服务器)上线前的发布策略:灰度发布

    • 测试环境:

      • 本地测试环境

      • 预发布测试环境(测试团队完成整个系统测试后,准备上线前的最后一次测试)

    • 正式环境:(用户使用)

      面试题:

      1. 如何跟进项目的上线过程?

      2. 项目上线的流程是啥?

      • 策略:灰度发布(预发布环境测试之后的版本发布上线的一种策略)

        前提:一般项目中正式环境的服务器是一台还是多台?--> 多台
        1.先下线一部分服务器,更新新版本,然后上线测试
        2.同时将未更新的另一部分服务器下线
        3.测试已经上线后的新服务器(上线测试:新功能要测试+原有业务功能正常),测试需要提前上线使用的测试用例(选择正向优先级最高的)。
        4.如果测试没有问题,将下线的另一部分服务器更新后完成上线(再进行一次全部的上线测试)
        5.如果第三步测试不通过,将新上线的服务器立即下线,然后恢复已下线旧服务器【回滚】
        6.排查问题【本次上线之后的问题】
    • APP发布

      测试要求:发布之后,需要下载安装进行基本功能验证

      • Android版本:apk

      • iOS版本:ipa

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值