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助手可以设置)