一、性能测试一些概念

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

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

压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个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. HDU6278 Just h-index

    主席树+二分 每次对给定区间从1-区间长度len二分mid,查询区间内第mid大的数是不是大于等于mid.. #include <bits/stdc++.h> #define INF 0x ...

  2. Magento 2 安装数据表

    Magento 2 安装数据表 第1步:安装脚本 首先,我们将为CRUD模型创建数据库表.为此,我们需要插入安装文件 app/code/Mageplaza/HelloWorld/Setup/Insta ...

  3. Codeforces 1037E Trips

    原题 题目大意: 有\(n\)个人,起初他们都不是朋友.总共有\(m\)天,每天会有两个人成为朋友.他们计划在晚上出去旅游,对于一个人,有如下两种情况: 1.要么他不出去旅游 2.要么有至少\(k\) ...

  4. SQL学习指南第三篇

    再谈连接 外连接 之前的范例都是没有考虑条件可能无法为表中的所有行匹配的问题 左外连接与右外连接 SELECT a.account_id, a.cust_id, b.name FROM account ...

  5. golang与python多线程的并发速度

    一.golang的代码 package main import ( "fmt" "time" ) func Text_goroute(a int, b int) ...

  6. makefile $@, $^, $<, $? 表示的意义

    ref:https://www.cnblogs.com/gamesun/p/3323155.html $@  表示目标文件$^  表示所有的依赖文件$<  表示第一个依赖文件$?  表示比目标还 ...

  7. [物理学与PDEs]第1章习题8 磁场分布 $\ra$ 电流分布

    设在真空中有一圆柱形磁场 $$\bex B(P)=\sedd{\ba{ll} \cfrac{2I}{Cr},&r\geq R,\\ \cfrac{2I}{CR^2}r,&r<R, ...

  8. -bash: Chmod: command not found

    是增加该文件的所有者拥有运行权限 如果所有者是root ,还要加sudo chmod u+x drlinuxclient.bin (sudo) chmod u+x drlinuxclient.bin ...

  9. luogu P5286 [HNOI2019]鱼

    传送门 这题真的牛皮,还好考场没去刚( 这题口胡起来真的简单 首先枚举D点,然后对其他所有点按极角排序,同时记录到D的距离.然后按照极角序枚举A,那么鱼尾的两个点的极角范围就是A关于D对称的那个向量, ...

  10. 设计模式三: 代理模式(Proxy) -- JDK的实现方式

    简介 代理模式属于行为型模式的一种, 控制对其他对象的访问, 起到中介作用. 代理模式核心角色: 真实角色,代理角色; 按实现方式不同分为静态代理和动态代理两种; 意图 控制对其它对象的访问. 类图 ...