一、性能测试一些概念

性能测试:就是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。

负载测试:确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。负载测试要评估性能特征,如响应时长、事务处理速率和其他与时间相关的性能指标。

压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个web站点在大量的负荷下,何时系统的响应会退化或失败。

容量测试:测试确定系统可处理同时在线的最大用户数。

维基百科解释的性能测试:软件性能测试被用来判断计算机、网络、软件程序或者驱动程序的速度和效率。这一过程会在同一实验环境下进行大量测试,以便于衡量系统功能的响应时长或者MIPS(每秒执行指令数目)等指标。其他系统特性,如可靠性、可量测性、互用性等,也可以用性能测试来衡量。性能测试通常与压力测试一起进行。

性能测试常见指标:

对于B/S架构的软件,一般会关注如下Web服务性能指标

Avg Rps:平均每秒钟的响应次数 = 总请求次数/秒数

Avg time to last byte per terstion(mstes):平均每秒业务脚本的迭代次数

Successful Rounds:成功的请求

Failed Rounds:失败的请求

Successful Hits:成功的点击次数

Failed Hits:失败的点击次数

Hits Per Second:每秒点击次数

Successful Hits Per Second:每秒成功的点击次数

Failed Hits Per Second:每秒失败的点击次数

Attempted Connections:尝试连接数

Throughput:吞吐率

对于C/S架构的程序,由于软件后台通常为数据库,更要注重数据库的测试指标

User Connections:用户连接数,也就是数据库的连接数量

Number of Deadlocks:数据库死锁

Butter Cache Hit:数据库Cache的命中情况

二、性能测试方案

性能测试方案应该详尽的描述如何进行性能测试,包括:测试背景、测试目的、测试范围、测试进入条件、测试退出条件、测试指标要求、测试策略、测试时机、测试风险和测试资源

其中测试范围、测试进入条件、测试退出条件、测试策略、测试风险和测试资源尤为重要

下面是一个性能测试方案的简单例子:

三、开源Web性能测试JMeter基础知识

JMeter简介:

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
 
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
Jmeter的特点:
《1》支持对多种服务类型进行测试
Web-Http,Https
SOAP
Database via JDBC
LDAP
JMS
Mail - POP3(S)and IMAP(S)
《2》支持通过录制、回放方式获取测试脚本
《3》 具备高可移植性,100% 纯java。
《4》完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
《5》精心的GUI设计允许快速操作和更精确的计时。
《6》支持缓存和离线的方式分析/回放测试结果。
《7》具备高可扩展性
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能(包括Javascript)。
5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。[2] 
相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
JMeter常用术语:
采样器:采样器是JMeter测试脚本的基本单元,用户可以用它向服务器发出一个特定的请求,采样器会在超时前等待服务器的响应。
逻辑控制器:用户通过逻辑控制器来控制JMeter测试脚本的执行顺序,便于测试能够按照用户期望的顺序和逻辑执行
监听器:监听器被用来收集测试结果信息,并以用户指定的方式加以展示。
配置元件:配置元件被用来设置一些JMeter测试脚本公用的信息。
断言:断言被用来验证服务器实际返回的信息与用户期望的情况是否相等。
定时器:定时器被用来保存JMeter测试脚本与时间相关的一些信息,例如:思考时间
前置处理器:在前置处理器的作用范围内,任何采样器被执行前,都要先执行前置处理器。
后置处理器:在后置处理器的作用范围内,任何采样器被执行后,都要执行对应的后置处理器。
测试计划:测试计划是JMeter测试脚本的根节点,关于整个测试脚本的一些基础设置,可以在测试计划中设定,例如用户定义变量。
线程组:线程组定义了一个虚拟用户池,其中每个虚拟用户都使用同样的测试脚本。
工作台:工作台被用来保存暂时不使用的测试元素,当测试人员保存测试计划时,工作台中的内容不会被一起保存。
 
JMeter测试结果字段的意义:
 
 
JMeter工作原理:
 
 
 

如何使用JMeter开源性能测试工具来构建Web性能测试体系的更多相关文章

  1. 字节跳动Web Infra发起 Modern.js 开源项目,打造现代 Web 工程体系

    10 月 27 日举办的稀土开发者大会上,字节跳动 Web Infra 正式发起 Modern.js 开源项目,希望推动现代 Web 开发范式的普及,发展完整的现代 Web 工程体系,突破应用开发效率 ...

  2. Ceph性能测试工具和方法。

    0. 测试环境 同 Ceph 的基本操作和常见故障排除方法 一文中的测试环境. 1. 测试准备 1.1 磁盘读写性能 1.1.1 单个 OSD 磁盘写性能,大概 165MB/s. root@ceph1 ...

  3. 理解 OpenStack + Ceph (8): 基本的 Ceph 性能测试工具和方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  4. ceph--磁盘和rbd、rados性能测试工具和方法

    我在物理机上创建了5台虚拟机,搭建了一个ceph集群,结构如图: 具体的安装步骤参考文档:http://docs.ceph.org.cn/start/ http://www.centoscn.com/ ...

  5. 基本的Ceph性能测试工具和方法

    测试环境 1. 测试准备 1.1 磁盘读写性能 1.1.1 单个 OSD 磁盘写性能,大概 165MB/s. root@ceph1:~# echo 3 > /proc/sys/vm/drop_c ...

  6. Linux系统性能测试工具(四)——CPU性能测试工具之super_pi、sysbench

    本文介绍关于Linux系统(适用于centos/ubuntu等)的CPU性能测试工具-sysbench.CPU性能测试工具包括: super_pi: sysbench——不仅可以测试CPU性能,而且可 ...

  7. 1 认识开源性能测试工具jmeter

    典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具jmeter. 1.jmeter是什么? A ...

  8. 转 1 认识开源性能测试工具jmeter

    1 认识开源性能测试工具jmeter   典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具j ...

  9. 【转】开源性能测试工具 - Apache ab 介绍

    版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途.本人保留对本文的一切权利.如需转载,请在转载是保留此版权声明,并保证本文的完整性.也请转贴者理解创作的辛劳 ...

随机推荐

  1. Python future使用

    Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动.有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了. 从Python 2.7到Pytho ...

  2. 设置 sql_mode

    MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模 ...

  3. [ML]机器学习书单

    https://anvaka.github.io/greview/hands-on-ml/1/

  4. 题解:[APIO2007]风铃

    你需要选一个满足下面两个条件的风铃:(1) 所有的玩具都在同一层(也就是说,每个玩具到天花板之间的杆的个数是一样的)或至多相差一层.(2) 对于两个相差一层的玩具,左边的玩具比右边的玩具要更靠下一点. ...

  5. Django自定义分页

    分页 自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: ...

  6. 信号(1): signal

    1. 头文件#include <signal.h> 2. 功能设置某一信号的对应动作 3. 函数原型void (*signal(int signum,void(* handler)(int ...

  7. saltstack主机管理项目:动态调用插件解析-模块解析(五)

    一.动态调用插件解析 1.目录结构 1.base_module代码解析: def syntax_parser(self,section_name,mod_name,mod_data): print(& ...

  8. ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE(记忆化搜索)

    https://nanti.jisuanke.com/t/31454 题意 两个人玩游戏,最初数字为m,有n轮,每轮三个操作给出a b c,a>0表示可以让当前数字加上a,b>0表示可以让 ...

  9. 第十六节:语法总结(3)(C#6.0和C#7.0新语法)

    一. C# 6.0 新语法 1. 自动属性初始化可以赋值 /// <summary> /// 自动属性初始化 /// </summary> public class UserI ...

  10. bilibili存储型xss (绕过长度限制打乱顺序限制)

    在个人空间的我的收藏中可编辑视频收藏的名称,之后尝试写入标签. http://space.bilibili.com/ 发现输出到前端的尖括号被转义了,不过出现了一个json接口,他的Content-T ...