新手区 黑盒测试人员,第一次做性能测试的疑问?

撞树桐 · 2016年03月03日 · 最后由 Cheny 回复于 2016年03月04日 · 2585 次阅读

自己只做黑盒测试,从未做过性能测试,公司现需要做性能测试。所以经过看书研究,自己写了一份简单的性能测试计划(可能不叫计划,就是指导自己做性能测试的文档)
目前工具选用 Loadrunner11。环境是 web 环境(CentOs+PHP+Nginx+Apche+MySql),在线上做压力测试,目标是获取服务器的最大访问和并发人数。
两个疑问
一、压力是如何计算的,比如 100 个 Vuser,每个 Vuser 产生 4 个请求,平均响应时间是 5 秒钟。那么应该是 QPS =(100 * 4 )/ 5 。最后并发数 = QPS / 4 ,想问一下这么计算正确吗?
二、计划中应该有很多纰漏的问题,请指教


一、了解项目和服务器信息

项目在线上或线下

线上

  1. 线上是否有其他服务运行
  2. 测试受网络情况影响较大,响应时间偏差、压力可能不足
  3. 是否有 CDN 的影响
  4. 项目中是否用到了第三方接口

线下

  1. 服务器硬件、软件配置是否和线上一样或相似
  2. 搭建环境会影响性能测试时间进度
  3. 局域网带宽

项目类型

架构

  1. B/S
  2. C/S
  3. 接口测试

协议

  1. http、https

服务器配置

  • 硬件信息:
    • CPU:CPU 系列、主频、核心数
    • 内存:类型 DDR、主频、大小、通道
    • 磁盘:容量、转速、接口速度、理论读写速度
    • 网卡:
  • 服务器系统信息及版本
  • 服务器容器信息及版本
  • 服务器数据库信息及版本
  • 服务器类型
    • web 服务器
    • 文件服务器
  • 服务器带宽

可参考数据

  • 类似项目的日平均 IP、PV、UV
  • 日峰值时间段、峰值大小、峰值百分比
  • 计算峰值时间段的每秒访问并发数量

二、制定测试计划

  1. 项目的各个功能点,归纳出可测试的功能点
  2. 查看不可测试的功能点,如验证码的功能
  3. 根据功能点划分事务

三、执行性能测试

  1. 录制/回放脚本
  2. 修改脚本
    • 关联
    • 响应乱码(编码方式)
    • 内容检查
    • 参数化
    • 事务
    • 集合点
  3. 基线测试 无压力环境下,对每一个事务单 Vuser 运行 N 次,记录平均响应时间、点击次数和吞吐量。
  4. 压力环境准备
    • 确定测试 Vuser 人数
    • 确定压力机数量,并部署压力机
    • 确定每台压力机分配的 Vuser 数量
    • 设置运行时设置
      • 迭代次数
      • 运行间隔
      • 日志
      • 思考时间
      • 网络速度模拟
      • 浏览器设置(去除下载非 HTML 资源)
  5. 场景压力测试
    • 确定场景方式
      • 渐进式:如先运行 100Vuser 持续一段时间,再增加到 200Vuser 持续一段时间,达到指定值后,最后直接结束所有 Vuser。
      • 爆炸式:持续增加 Vuser 到制定目标值
      • 驼峰式:执行增加 Vuser,缓步减少 Vuser
    • 确定每秒启动的 Vuser 数量、持续时间、每秒结束数量
    • 确定监控指标:
      • CPU:CPU 使用率(cup%,User%,Sys%)、单核 CPU 使用率、进程 CPU 占用率
      • 内存:可用内存、swap 空间、进程占用内存
      • 磁盘:IO 读写、IO 峰值、进程 IO 读写
      • 网络:
    • 确定监控方式(暂时选用 nmon 和命令结合方式)
      • nmon 工具
      • lr 监控
      • 命令行监控
    • IP 欺骗(只适用于线下局域网环境)
    • 集合(配置集合点百分比)
    • 调试
      • 开启日志
      • 错误分析
    • 其他配置(正式运行)
      • 关闭网络诊断
      • 关闭日志(只在出现错误时才显示日志)
    • 正式运行

四、分析结果

  1. Analysis 分析结果
    • QPS 每秒查询率
    • TPS 每秒处理事务数
    • 系统吞吐率(字节)
    • 平均响应时间
  2. nmon 导出性能指标图形

五、报告

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

@monkey 东哥应该在忙,人气不太旺

东哥很忙的,我来帮他回答把。
1: 压力是如何计算的,比如 100 个 Vuser,每个 Vuser 产生 4 个请求,平均响应时间是 5 秒钟。那么应该是 QPS =(100 * 4 )/ 5 。最后并发数 = QPS / 4 ,想问一下这么计算正确吗?
== 先假设没 think time,100 个用户,响应时间是 5 秒,tps 应该是:20 笔/秒。

2:方案中 重点是描述模拟哪些交易,怎么模拟等相关信息。你写的也挺全了。

有问题的,其他人在补充吧。

在用 loadrunner 执行性能测试时,我们常常首先会去定位几个值,一个是当并发量/用户量达到多少,服务器开始无法反馈正常的数据包/服务器响应时间超过 x 秒,就是得到服务器负载的饱和值。另一个是当并发量/用户量达到多少服务器无法正常工作。其实在做性能测试前首先应该通过产品得到预计用户量,最后的报告会结合前面几个值和预估计的值来进行对比得出结论。性能测试还有很多种,但一般都是结合前面的几个值来做,包括稳定性,可靠性,压力负载什么的。

@among29 好的,我再研究一下

@m13890 那应该是用户量达到一定值,服务器无法反馈,这个值就是服务器能承受的最大用户数。

#6 楼 @felixiaot 不是,如果服务器无法反馈。这个不是服务器能承受的最大用户数。因为在迭代到此用户数量之前就已经开始无法返回正常的数据包或者开始丢包了。从无法返回正常的数据包的临界点才是服务器能承受的最大用户数。当然这个也不绝对,其实不同的企业或者项目由自己不同的定义,有的项目是正常响应达到 90% 就算是正常,这个得针对项目来看。

8楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册