性能测试学习--整体认识

压力工具

压测工具: jmeter,loadrunner fiddler
分析调优工具: visualvm, yourkit, jps, jstat

技能要求

制定测试计划及其策略,
进行测试执行及其分析,
并能对系统性能瓶颈进行定位及其优化.

  1. 开发语言:java等
  2. 操作系统:centos等
  3. 数据库:mysql,pg等
  4. 测试工具:jmeter等
  5. 网络知识:知道网络负荷,数据大小,能允许多少负荷
  6. 业务知识:脱离业务的技术就是扯淡

性能测试目的

发现性能瓶颈
测试范围:

  1. 负载测试: 逐步加压, 达到既定性能阈值.阈值的设定应该是小于等于某个值.举例.cpu使用率小于80%, 内存使用率小于70%
  2. 压力测试: 逐步加压,使得系统的某些资源达到饱和,甚至不能使用. 简单的说就是,把系统整崩溃.
  3. 并发测试: 同一时间,多个虚拟用户同时访问同一模块,同一功能,通常测试方法是设置集合点.
  4. 容量测试: 通常数据库层面, 获取数据库的最佳容量能量.
  5. 可靠性测试: 又称为稳定性或者疲劳测试, 高压情况下,系统稳定运行时间,比如cpu使用率80%以上,7*24小时运行,是否稳定.
  6. 异常测试: 又称为失败测试. 系统架构方面的测试. 宕机,挂机等情况 系统的反应.(容灾能力)

工作流程

需求分析 → 性能指标指定 → 脚本开发 → 场景设置(模拟生产环境) → 监控部署(看得到) → 测试执行
→ 性能分析 → 性能调优 → 测试执行… → 测试报告

常见系统应用分层架构

显示层(view): web Android ios h5

逻辑控制层(controller): API

数据存储层(model): mysql, mongodb, redis …

可以知道需要监控: 数据库 程序 服务器 页面加载 图片加载速度等等

性能测试指标定义

前提:事务的概念
从客户端发起一个或者多个到客户端接收到从服务器返回的响应.
举例: 银行转账.

TPS(Transaction Per Second)
每秒中系统能够处理的事务数.
注意: 事务数不一定等于请求数,因为一个事务可能不只一项请求.

响应时间
客户端发起开始,到客户端收到服务器返回的响应,整个过程消耗的时间.

事务响应时间
事务可能是一个或多个请求组成, 事务响应时间主要是针对用户而言的,例如转账

并发
多用户在系统进行统一操作, 例如秒杀
多用户在系统上进行不同操作,例如针对不能商品秒杀,浏览不能商品

并发用户数
同一单位时间内对系统发起请求的用户数量. 例如,1秒最多访问多少次

吞吐量
一次性能测试过程中网络传输的数据量的综合. 例如:最多同时下载多少图片
这个和网络带宽,磁盘IO等有关系

吞吐率
单位时间内网络上传输的数据量
吞吐率 = 吞吐量/传输时间
例如:十秒总共下载了500m图片,那么吞吐量就是50m/s

点击率
每秒用户像服务器提交的请求数量.
web应用中,每秒用户在页面进行了多少次点击. 注意,每次点击,可能发送了多次请求.比如:插入数据,写log,更新之前的数据

资源使用率
系统资源使用情况,和硬件有关
cpu,内存, IO等

性能测试的需求分析

  • 明确测试指标
  • 明确测试场景

测试重点是在什么场景,达到什么要求就算过关.

新系统方法:

  • 同行比较
  • 业务预期

老系统:

  • 对此以往的用户使用行为以及用户量

性能测试工具

人类最大的进步就是学会了制造使用工具
性能测试学习--整体认识
参考: https://www.zhihu.com/question/279196504