Skip to content

性能测试问题

性能测试视频教程

什么是性能测试?为什么要进行性能测试?

性能测试是基于系统功能已经完备或者已经趋于完备之上的

在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响

过早进入性能测试会出现测试结果不准确、浪费测试资源

因此,性能测试首先是基于功能测试的,必须了解其功能需求才能开展性能测试

性能测试的类型有哪些?

列举下用户会面对的性能问题和性能瓶颈?

  1. 数据库的瓶颈一般在磁盘IOPS过高造成进程阻塞
  2. 系统进程数过多一般会消耗系统的内存空间
  3. 消息队列和缓存服务,开启持久化后会需要考察磁盘IOPS,不开启持久化则需要考察内存占用
  4. 频繁的管道开辟和销毁会导致CPU占用较高
  5. 有部分程序结构上不能利用多个CPU

考虑每个业务点或者结构点会不会有大量的数据访问,会不会产生压力,我们的设计会不会产生性能瓶颈

列举下性能测试中常涉及的性能计数?

性能测试中并发用户点击量是什么?如何实现?

性能测试进入和结束的标准是什么?

说一下在选择性能测试工具之前需要考虑哪些东西?

在性能测试中,如何识别性能瓶颈?

在对应用程序进行性能测试期间一般会执行哪些活动?

解释下什么是耐力测试和尖峰测试?

性能测试关注的指标是什么?

  • 从外部看,性能测试主要关注:
    • 吞吐量:每秒钟系统能够处理的请求数、任务数
    • 响应时间:服务处理一个请求或一个任务的耗时
    • 错误率:一批请求中结果出错的请求所占比例
  • 从服务器的角度看,性能测试主要关注
    • CPU
    • 内存
    • 服务器负载
    • 网络
    • 磁盘IO等

性能测试怎么做的?/ 如果你要进行性能测试,你是如何展开操作的?

  1. 确定关键业务,关键路径
  2. 确定测试的关键数据比如 并发量,响应时间,循环次数
  3. 准备测试环境,完成脚本录制或脚本开发
  4. 执行测试,观察或监控输出参数,比如吞吐量,响应时间,资源占有率等
  5. 对执行结果进行分析,分析性能问题

怎样分析性能测试结果?

  1. 查看聚合报告和服务器的资源使用图,检查响应时间,事务成功率,CPU,内存和IO使用率是否达到要求,如果出错率达到了总请求的3%,我们会检查是什么原因导致的,修改好后,重新测试
  2. 如果出现了性能瓶颈,比如响应时间,或者CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致响应时间过长,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给代发修复,修复好了就进行回归测试

如何判断网络是否存在瓶颈?

查看在整个性能测试过程中,网络的吞吐量是多少,如果网络的吞吐量占到了服务器的70%以上,我们就认为网络存在瓶颈,通常会增加带宽或者压缩传输数据

如何判断响应时间不达标?

根据性能测试结果先检查看下是否是服务器带宽存在问题,如果带宽存在瓶颈,则会考虑增加带宽或者压缩传输数据,如果带宽没有问题的话,我们会从服务器上导出日志,开发一起讨论分析是哪个地方导致响应时间过长,确定问题后,就提单给开发修复,修复好了就进行回归测试

如何判断CPU使用率不达标?

CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致CPU使用率不达标,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试

app的性能测试怎么做的?

APP的性能测试分为服务器端的性能和手机端的性能

服务器端的性能:jmeter工具进行测试的,和web端性能测试的方法一样的

手机端APP的稳定测试:使用monkey做

用monkey做app测试,怎么做的?如果有问题的话怎么定位?

  1. 先使用 adb logcat -c 清空手机的logcat日志
  2. 接下来使用 adb logcat -v time 获取 logcat 日志,并导入本地文件使用 monkey 运行被测应用 adb shell monkey -p 包名 -v
  3. 100000 并将执行结果导入到本地测试
  4. 如果中途失败了就要去看monkey日志中有没有 crash 或者 anr 的关键字
  5. 如果还需要定位到是什么原因导致的anr或者crash的问题,将相关日志和logcat日志与进程号提交给开发定位
  6. 如果是anr的问题,还需要从安卓中获取 /data/anr/traces.txt 文件提交给开发定位

app出现ANR的原因?

线程阻塞,内存不足,CPU满负荷(现在手机基本都是8核CPU,基本不会出现CPU满负荷的情况)

app出现CRASH的原因?

空指针值,数组越界,内存不足,CPU满负荷(现在手机基本都是8核CPU,基本不会出现CPU满负荷的情况)

APP常见崩溃原因?

  1. 设备碎片化:由于设备极具多样性,App在不同的设备上可能有不同表现形式
  2. 宽带限制:宽带不佳的网络对App所需的快速响应时间不够
  3. 网络的变化:不同网络的切换可能会影响App的稳定性
  4. 内存管理:可能内存过低,或者是授权的内存位置的使用可能会导致App失败
  5. 用户过多:连续数量过多可能会导致App崩溃
  6. 代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败
  7. 第三方服务:广告或弹出屏幕可能会导致App崩溃

说几个常用的adb指令?

  • adb install(apk的文件路径) 安装软件到手机或者模拟器
  • adb uninstall(包名) 卸载手机或模拟器上的某款软件
  • adb devices 查看与当前电脑连接的移动设备
  • adb ,adb start-server 启动
  • adb,adb kill-server 杀死
  • adb logcat 查看日志
  • adb logcat -v time process >

软件覆盖安装的adb命令?

  • adb install -r xx.apk 覆盖低版本的
  • adb install -r -d 覆盖高版本的

性能测试的adb命令?

  • adb shell dumpsys cpuinfo 查看手机cpu的使用情况
  • adb shell getprop|findstr dalvik 手机系统自己运行的内存使用

说几个monkey指令?

  • Adb shell monkey -p 包名
  • Adb-shell–ignore-crashes 忽略崩溃
  • Adb-shell–ignore-timeouts 忽略延时
  • Adb-shell–ignore-throttle 延时毫秒值
  • Adb-shell–pct-touch–pct-motion 触摸与滑动事件的比例

弱网情况下你是如何测试的?

  • 2G的网速 150kbps,折合下载速度 15-20k/s
  • 3G的网速 1-6mbps,折合下载速度 120k/s-600k/s
  • 4G的网速 10-100mbps,折合下载速度 1.5m/s-10m/s
  1. 使用真实的SIM卡,运营商网络来进行测试
  2. 通过代理的方式模拟弱网环境下进行测试(Charles延迟)
  3. 链接模拟弱网的热点进行测试(如360WiFi助手可以设置)