一、性能测试一些概念

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

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

压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个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. 忘掉Ghost!利用Win10自带功能,玩转系统备份&恢复 -- 系统重置

    之前几篇介绍的如何备份.恢复系统,在遇到问题的时候可以轻松应对. 如果系统出现问题,还可以正常启动,但是之前没有备份过系统,那该怎么办? 碰到这种问题,可以使用Win10系统的“系统重置”功能: 按照 ...

  2. hotplug/mdev机制

    目录 hotplug/mdev机制 框架 kobject_uevent_env mdev_main make_device mdev.conf 配置文件学习 更改属性 @:创建设备节点之后执行命令 $ ...

  3. javascript节点移除

    var itemdel = document.getElementById("test"); itemdel.removeChild(lis[0]); 兼容性较好 itemdel. ...

  4. [物理学与PDEs]第5章习题3 第二 Piola 应力张量的对称性

    试证明: 在物质描述下, 动量矩守恒定律等价于第二 Piola 应力张量的对称性. 证明: 由 $$\beex \bea \int_{G_t}\rho\sex{{\bf y}\times\cfrac{ ...

  5. 获取reporting services导出pdf的url的方法

    public static string genRptUrl(string strRptServer, string strRptPath, string strRptName, ParameterV ...

  6. 项目改bug期间总结

    kotlin中使用labda 表到时注意参数,另外setOnClickListener() 和 setOnClickListener{} 差别很大的,使用要细心, 因为这个问题拿了大半天闷, 最后还是 ...

  7. Servlet中文件上传下载

    1.文件下载: package FileUploadAndDown; import java.io.FileInputStream; import java.io.IOException; impor ...

  8. 论文阅读笔记:《Contextual String Embeddings for Sequence Labeling》

    文章引起我关注的主要原因是在CoNLL03 NER的F1值超过BERT达到了93.09左右,名副其实的state-of-art.考虑到BERT训练的数据量和参数量都极大,而该文方法只用一个GPU训了一 ...

  9. Java消息队列--ActiveMq 初体验

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  10. c++ 智能指针用法详解

    本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用. 为什么要使用智能 ...