性能测试

关于性能

  • 做性能测试之前需要做的事
    • 问清楚被测软件的要求与标准
    • 被测软件的定位
  • 软件性能:速度,资源耗费,持久
  • 影响性能的因素
    • 硬件:cpu、ram、hd、net
    • 系统:window、unix、linux
    • 架构
      • 前端
        • B/S:HTML、CSS、JS
        • C/S:app(Window、Max OS、linux、IOS、Android)
      • 后端
        • Web + app + 数据库
          • nginx + apache :spotlight、nmon·perfmon
          • app:tomcat、weblogic、jetty…(监控JDK、JVM…)
          • 数据库:oracle、mysql
      • 代码层:java
  • 维度考虑:时间(响应时间),空间(系统资源耗费)
  • 性能测试最近要求:min(系统资源耗费)–> max(响应时间)
  • 行业对响应时间的标准:2s(流畅)、5s(一般)、8s(无法忍受)
  • 去功能的关系:用于叙述该功能的优秀程度
  • 衡量性能的视角:
    • 用户只考虑时间响应
    • 运维考虑时间响应和状态
    • 测试考虑时间兼耗费,以及它们的稳定性
    • 开发考虑优化
  • 本质:业务模拟对服务器形成一定的负载去测试服务器在实际时是否满足高指标工作
  • 分类!!!
    • 性能:模拟大量用户并发请求模拟实测软件在online模式是否达到预期
    • 负载:通过对被测试系统不断加压,直到达到or超过预定指标or资源饱和状态
    • 压力:在饱和状态下测试系统处理业务的能力,是否崩溃等等
    • 并发:同时用一个指令对服务器访问(狭义),同时做不同操作(广义)
    • 配置:不同环境or系统下测试它的稳定性
    • 可靠性:测试系统在一定的压力下长时间测试,看是否足够稳定
  • 主要指标!!!
    • 响应时间 -> RT(s/ms)
    • 吞吐量 :衡量服务器的处理能力
      • TPS每秒事务数(VU/RT,并发用户/响应时间)
      • RPS每秒请求数
      • PPS每秒页面数
      • TPS每秒请求数(点击率)
      • BPS每秒接受发送的字节数
    • 并发用户数:Vitrual User 虚拟用户数(同一时间访问服务器的用户数)
    • 资源利用率(消耗):CPU、RAM、HD(磁盘)、NET(网络带宽)
  • 指标关系!!!
    • 并发min响应max吞吐量min
    • 并发up响应=max吞吐量up
    • 拐点(趋于饱和):并发up响应down吞吐量up-
    • 过饱和区间:并发max响应min+吞吐量down++=0
  • 七种测试方法
    • 前端性能测试(面对B/S架构和前端开发人员,关注渲染时间)
    • 后端(服务端)性能测试(性能的主要测试,非GUI)
  • 流程
    • 需求分析(提取)
      • 测试对象:根据业务模型去分析需要考虑性能测试的功能的必要性
      • 确定性能指标(难点)
      • 测试场景
        • 单一场景:如登录,注册等
        • 混合
    • 测试计划
      • 目标
      • 人员组织
      • 进度安排
      • 压力机(测试机器):配置,要求,数量
      • 风险
    • 测试方案
      • 测试工具:loadrunner、jmeter
      • 测试环境
      • 测试策略
      • 监控工具
        • linux(Nmon、rpc、jvisualVm、SpotLight)
        • window(Perfmon,SpotLight)
        • 用例设计
        • 测试脚本
        • 场景测试
      • 测试执行
        • 写脚本
        • 场景设计
        • 运行场景
        • 监控场景
        • 测试报告
      • 定位分析问题
      • 流程汇总

性能术语

  • 虚拟用户(Vitrual User / Vuser):由性能测试工具模拟出的
  • 并发:强调大量用户同时操作(请求)并对服务器产生压力

LoadRunner

  • 录制脚本
    • ​ VuGen以C为脚本语言,可选html(一个操作一个函数) or url(一个请求一个函数) 模式
      脚本
      脚本函数
      参数
      网页路径
      思考时间
      提交表单
      点击按钮
      文本检查(操作函数之前,预注册函数)
      文本检查
    • 创建测试场景,运行和监控场景
      • ​ Controller
    • 分析测试结果
      • ​ Analysis
    • 自带的B/S订购系统
      • ​ start HP Web Tours Server,唯一账户jojo/bean
        127.0.0.1:1080/WebTours/indexs.htm
  • 关联方式
    • 全自动 scan扫描
    • 半自动 响应的数据包中找到 动态的变化数据 右键创建关键web_reg_save_param_ex()
    • 手动 使用步骤生成器 web_reg_save_param (变量名,左右边界,LAST)
    • 原理:从响应的数据中使用边界值提取器将服务器返回的动态变化的数据保存到一个变量中,在后续的请求中会调用这个变量的值
    • 应用场景:录制两个一样业务操作的脚本对比不同的部分就是需要关联的部分
  • 内容检查(运行后)
    • ​ html view -> 右键 -> 内容检查(web_reg_find)-> retrun 成功
      ​ 插入一个check text(web_find)-> 运行setting -> preferences -> enable image text check -> 是否报错
      ​ or -> image check -> alt/src -> return 成功or报错
  • 事务 transaction
    • 重要指标:RTS(平均事务响应时间)、TPS(每秒事务数,吞吐量重要指标)
    • 定义事务
      • 以HTTP协议的请求,到响应结束的时间,算一次事务
      • 以业务需要,例12306订票成功,看做一个事务
    • 设置事务:在某函数前添加“开始事务”,and在它的后面添加“结束事务”并添加状态
    • 并发:同时用一个指令对服务器访问(狭义),同时做不同操作(广义)
    • 集合点:实现真正意义上的并发,可设置多个,在vug里不能使用(只有一个用户)
      • //Rendezvous点击lr_rendezvous("|name|");

接口性能测试

  • jmeter
    • 汇总报告:响应时间、标准偏差、异常、吞吐量(TPS)、数据
    • 聚合报告
    • 用表格查看结果:接口的详细信息