前言

针对 Web 服务器的性能测试,可以直接通过发送 HTTP 数据包来施加负载,根据所学到的知识和业务特点,选定关键业务来进行负载模拟,完成不同的负载、负载模式的性能测试,获得主要的性能指标数据,包括系统响应时间、数据吞吐量、系统资源(CPU、内存等)使用效率等。
Web 性能测试工具有很多,以 JMeter、 Gatling、 nGrinder、 WebLoad、 LoadRunner 等为代表,本实验选择大家熟悉的、开源的 JMeter 作为本次实验的性能测试工具,建议大家以后可以尝试选择 Gatling、 nGrinder 等作为性能测试工具。

JMeter下载与安装

官方网站:http://jmeter.apache.org/download_jmeter.cgi

下载完成后解压,进入bin文件夹,运行jmter.bat,进入JMeter主界面。

  

注:jmeter需要Java8+的环境变量,若没有相关环境需提前配置。

编写性能测试脚本

我们在使用百度搜索的时候,细心的同学可以发现搜索栏中会出现wd和ie的字样

wd为搜索词,ie表示编码方式,默认为utf-8。

如何编写性能测试脚本?

1.添加线程。右键点击界面左侧的“TestPlan(测试计划)” ->“添加” ->“线程(用户)” ->“线程组”:

  

注:

(1)线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
(2)Ramp-Up 时间(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为 10,准备时长为 2,那么需要 2 秒钟启动 10 个线程,也就是每秒钟启动 5 个线程。
(3)循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 100,那么每个线程发送 100 次请求。总请求数为 10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
(4)延迟创建线程直到需要:直到需要时延迟线程的创建。
(5)调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)。
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
*** 创建进程时均使用默认设置,待测试时配置。

2.添加HTTP请求。右键点击“线程组” -> “添加” -> “取样器” -> “HTTP请求”:

对HTTP请求进行配置:

注:

(1) Web 服务器
协议:向目标服务器发送 HTTP 请求协议,可以是 HTTP 或 HTTPS,默认为 HTTP。
服务器名称或 IP : HTTP 请求发送的目标服务器名称或 IP。
端口号:目标服务器的端口号,默认值为 80。
(2) HTTP 请求
方法:发送 HTTP 请求的方法,可用方法包括 GET、 POST、 HEAD、 PUT、 OPTIONS、 TRACE、DELETE 等。
路径:目标 URL 路径(URL 中去掉服务器地址、端口及参数后剩余部分)。
Content encoding :编码方式,默认为 ISO-8859-1 编码,这里配置为 utf-8。
(3)同请求一起发送参数
在请求中发送的 URL 参数,用户可以将 URL 中所有参数设置在本表中,表中每行为一个参数(对应 URL 中的 name=value),注意参数传入中文时需要勾选“编码”。

3.添加察看结果树。右键点击“线程组” ->“添加” ->“监听器” ->“察看结果树”:

运行HTTP请求:

修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为“软件测试software test”:

4.添加用户自定义变量。 右键点击“线程组”->“添加” ->“配置元件” ->“用户定义的变量”:

新增一个参数 wd,存放搜索词:

HTTP请求中使用该参数,${wd}:

5.添加断言。右键点击“HTTP 请求” ->“添加” ->“断言” ->“响应断言”:

添加参数${wd}到要测试的模式中:

6.添加断言结果。右键点击“HTTP 请求” ->“添加” ->“监听器” ->“断言结果”:

运行,查看断言结果:

7.添加聚合报告。右键点击“线程组” ->“添加” ->“监听器” ->“聚合报告”,用以存放性能测试报告:

以上,完成性能测试脚本编写。

执行性能测试

点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里配置并发用户数为 10,持续时间为 60s:

点击运行,进行测试。待性能测试执行完成后,打开聚合报告可以看到如下内容:

注:

(1) Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
(2) #样本:请求数表示这次测试中一共发出了多少个请求,如果模拟 10 个用户,每个用户迭代 10 次,那么这里显示100
(3) 平均值:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
(4)中位数:也就是 50% 用户的响应时间
(5) 90% Line: 90% 用户的响应时间
(6)最小值:最小响应时间
(7)最大值:最大响应时间
(8)异常%:错误率——错误请求数/请求总数
(9)吞吐量:默认情况下表示每秒完成的请求数( Request per Second),当使用了Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数。

数据可视化:添加“图形结果”,内容如下:

以上。

Web应用的性能测试相关推荐

  1. 测试学习-114-使用jmeter工具对web项目进行性能测试与稳定性测试

    前言 作为测试工程师,相信大家对jmeter这个工具在熟悉不过了,小编的前几篇博客中也有写到jmeter用于接口自动化测试的实战文章,今天主要用来介绍使用jmeter来进行性能测试和稳定性测试的实战. ...

  2. loadrunner web服务器和数据库是用虚拟机做的 能监控吗,基于LoadRunner的Web考试系统性能测试与优化.PDF...

    基于LoadRunner的Web考试系统性能测试与优化 中国农学通报 2014,30(34):250-256 Chinese Agricultural Science Bulletin 基于LoadR ...

  3. 如何进行Web服务的性能测试?

    随着浏览器功能的不断完善,用户量不断的攀升,涉及到web服务的功能在不断的增加,对于我们测试来说,我们不仅要保证服务端功能的正确性,也要验证服务端程序的性能是否符合要求.那么性能测试都要做些什么呢?我 ...

  4. rest服务器性能,基于真实应用环境下的 WEB REST API 性能测试

    作为一名自由WEB开发工作者,我对各种框架和技术的性能非常感兴趣,但是我们在网络上看到的测试大多数都只是考虑到 Hello World 的例子. 当我们构建真实的应用程序的时候,有更多的方面需要考虑, ...

  5. Web服务的性能测试

    引言 1. 尝试去理解是把更多的努力放在测试上还是在生产中更快的解决问题,权衡两者. 2. 一个失败的测试不会直接影响到用户,但是一旦产品开始工作,便开始影响. 测试应该一直将终端用户的视角铭记于心, ...

  6. Web网站的性能测试工具

    随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器 ...

  7. 如何进行Web服务的性能测试

    涉及到 web服务的功能在不断的增加,对于我们 测试来说,我们不仅要保证服务端功能的正确性,也要验证服务端程序的性能是否符合要求.那么 性能测试都要做些什么呢?我们该怎样进行性能测试呢? 性能测试一般 ...

  8. 软件测试面试题:WEB+网络|接口测试|性能测试|自动化测试

    1. http代码表,常考题目 404:找不到资源 500:服务器内部错误,无法完成请求. 501:服务器不支持请求的功能,无法完成请求. 502:充当网关或代理的服务器,从远端服务器接收到了一个无效 ...

  9. python web 并发 性能_Python Web Server的性能测试

    因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-wsgi,效果还不错.但还是想试试别的,比如传说中超级猛的meinheld什么的. 软硬件环境 硬件: 一台 ...

最新文章

  1. 从windows server的文件服务到分布式文件服务(一)
  2. python入门练习题-Python简单新手入门练习题
  3. Eclipse reports rendering library more recent than
  4. IIS与ASP.NET管道
  5. 单张表超过30个字段_拉链表
  6. [Spark]PySpark入门学习教程---RDD介绍(2)
  7. C和汇编---sizeof运算符和strlen函数
  8. 设计模式学习笔记——状态(State)模式框架
  9. 小鹏吃相难看,消费者难做“鹏”友
  10. ADSL与路由器密码大全及设置
  11. 如何干掉msedge 浏览器首页360流氓导航页
  12. postgreSQL中文拼音排序
  13. T1005: 地球人口承载力估计(信息学一本通C++)
  14. Testflight上架丨苹果官方内测渠道详解
  15. 厉害了!支付宝逆天升级,可一键撤回被骗转账 网友:干得好!
  16. 淘宝客返利机器人哪个好用点?怎么做?
  17. java代码读取excel文件_Java 读取excel 文件流代码实例
  18. 服务器怎么修改内存大小,服务器怎么改内存大小
  19. java.sql.SQLNonTransientConnectionException Public Key Retrieval is not allowed
  20. 由SoC到SOPC、SoC FPGA ,异同优缺点的介绍及常见应用场景

热门文章

  1. 使用txt文档编写java文件
  2. MSE, R2, R等误差指标
  3. java合并单元格的快捷键_浅谈java单元格合并的实现(转载)
  4. 促销活动·短信解决方案
  5. python jupyter notebook怎么调字体大小_jupyter notebook中显示字体如何调整?
  6. 吐槽实践学习中的抄袭与搭车
  7. 自律的人一定优秀吗?
  8. mysql 如何添加子账号_phpmyadmin如何分配子账号
  9. 樱花——代表日本民族性的国花
  10. 申请linux邮件列表