0
点赞
收藏
分享

微信扫一扫

从http、浏览器调试到压力测试(三)

技术只适用于干活 2021-09-21 阅读 9

三、压力测试

1. 性能测试 vs 压力测试

性能测试(Performance Test)主要测试系统是否满足性能要求,同时可能为了保留系统的扩展空间而进行的一些稍稍超过“正常”范围的测试,比如:当前系统使用用户100人,可能未来人数会增多到300人,所以要让系统能够在300人情况下正常运行。

压力测试(Stress Test)是测试在一定的负载下系统长时间运行的稳定性。压力测试尤其关注大业务量情况下长时间运行的系统性能变化,如:是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复。

通俗地讲,压力测试是性能测试的一部分,但它们有所区别:

  • 性能测试是验证应用系统满足性能需求;
  • 压力测试更加“暴力”,它是为了发现在什么条件下应用系统的性能变得不可接受,是找到极限值。

2. 压力测试的步骤

2.1 明确测试目标
  1. 确定存量数据的规模:一般会要求制造出3~5年的存量数据;
  2. 确定需要进行压力测试的业务:一般是用户使用最频繁,或者业务操作复杂的业务;
  3. 确定操作用户的的数量、各类操作用户的比例;
  4. 确定峰值业务量的要求:一般是1个小时内最多要处理的笔数;
  5. 确定对交易类业务响应时间的要求:如在峰值情况下,单笔业务的处理时间小于2秒;
  6. 确定对于批量类业务响应时间的要求:如进行日终、月终、年终的处理时间,与外系统间批量数据传输的时间。
2.2 构建压力测试场景

为了进行压力测试的技术准备,需要阅读如下资料:

  1. 系统概要设计:了解系统技术架构,确定测试方法;
  2. 操作手册:了解系统使用过程;
  3. 程序/接口设计文档:如果是自己团队开发的;
  4. 分析http交互过程:如果是别人家的程序。

为了开发压力测试脚本需要:

  1. 准备测试环境,压力测试一般要求环境配置较高,最好与生产环境一致或者接近;
  2. 参数化脚本;
  3. 脚本回放,验证脚本是否可以成功的执行。
2.3 执行压力测试:
  1. 单用户运行压力测试场景;
  2. 多用户运行测试场景,查看系统资源消耗等
  3. 阅读压力测试报告,开始调优工作。

3. 压力测试关键指标

压力测试结束后会产生一个测试报告,报告中应该至少包含如下的指标:

  • 样本(Samples):表示测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么样本总数就是100;
  • 平均值(Average):平均响应时间;
  • 中位数(Median):50%用户的响应时间;
  • 90%百分位(90% Line):90%用户的响应时间;
  • 95%百分位(95% Line):95%用户的响应时间;
  • 99%百分位(99% Line):99%用户的响应时间;
  • 最小值(Min):最小响应时间;
  • 最大值(Max):最大响应时间;
  • 异常 %(Error %):本次测试中出现请求错误的数量/请求的总数;
  • 吞吐量(Throughput):默认情况下表示每秒完成的请求数;
  • 接收(Received) KB/sec:每秒从接收到的数据量;
  • 发送(Sent) KB/sec:每秒发送给服务器端的数据量。

明白如上测试指标的含义,可以帮助我们读懂测试报告,分析性能瓶颈,进而提供优化方向。

4. 压力测试工具JMeter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。其实有很多压力测试工具,选择jmeter的主要原因是开源、免费,而且易用、足够用。

下载及安装方法:

  1. 注意:jmeter依赖java运行,因此要先安装jdk。
  2. 打开浏览器,输入网址“https://jmeter.apache.org/”;
  3. 在页面的左侧菜单中,点击“Download Releases”链接;
  4. 在下载页面,找到类似“apcahe-jmeer-5.x.x.zip”的链接,然后点击开始下载;
  5. 下载完成后,把文件解压到某个盘符下的“apcahe-jmeer-5.x.x”目录中;
  6. 进入子目录“bin”,双击“jmeter.bat”即可运行程序。

5. 压力测试实战

我用“携程网站查询航班”的功能为例,给大家演示如何使用“浏览器调试+jmeter”进行压力测试。

6. 压力测试小结

如果是对我们自己开发的应用程序进行测试,那么在构建好测试参数后,可以逐步增加测试并发量,进行多轮次的压力测试,直到关键测试指标值达到不可接受的程度,那么就得到了应用系统的性能上限。

本章节只是对使用jmeter进行压力测试的入门,jmeter本身还提供了更多的功能,详情可参考官方的用户手册

举报

相关推荐

0 条评论