一、为什么又再次写类似的文章?

在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的。

也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢?

加我好友的一般为几类:

  • 微商,你一看朋友圈,各种商品广告,哇,好头疼
  • “大佬,有学习视频资料吗?”,有,200,需要吗?
  • “进群”,我知道你谁呀,干啥的,上来就进群呀。

但这个同学,挺有意思的,是一个关注我公号很久的一个粉丝,总会看我的文章。和我说了下他的情况,也是个自学党,问我有老师讲jmeter课程吗?想系统学一下。

毕竟我不是搞培训,虽然工作多年,不敢称为人师,怕误人子弟呀,只能所作工作稍微久一些吧,作为一个自学党,我自知自学是个多么困难的事,所以想了想就写了这篇文章。

那么就我限有的知识,来诠释怎么做一个功能的性能测试。

二、性能测试的分类

做性能测试,有些名词自然也是需要了解懂得的,后面如果我提到有些名词,不是很熟悉,请自行度娘,对于概念性的东西,我觉得百度说的比我好多了。

简单来说分为以下几类:

1、压力测试

目的:找出临界点。

2、负载测试

目的:找出能承受的最大负载量。

3、稳定性测试

目的:验证系统是否有内存泄露等问题。

4、容量测试

目的:找出数据库能够处理的最大会话能力、最大容量。 

5、配置测试

目的:为系统调优提供参考

三、性能测试流程

在实施性能测试的过程中,整体工作流程是
  • 分析性能测试需求
  • 设计性能测试方案
  • 开发性能测试脚本
  • 搭建性能测试环境-
  • 执行测试-
  • 分析结果后多轮测试进行验证优化
  • 编写性能测试报告
  • 编写性能测试总结报告

1、性能需求分析

这里以我们常用的禅道中添加用例功能为例,进行分享。

调研期望指标(即性能需求)

场景名称 响应时间 cpu使用率 内存使用率 磁盘使用率 事务成功率
登录禅道 小于5秒 小于85% 小于90% 小于90% 100%
添加用例
 
这只是流程中的第一步,如果这一步做好了 接下来的测试方案设计,脚本开发,测试执行,测试报告都会轻松很多; 如果想都不想,直接搞,后面做的一切都是白扯!
关于收据需求指标:
  • 参考前辈的历史数据
  • 参考同行竞品
友情提示:什么所谓的二八原则,没有数据支持依据一切都是屁话,完全没说服力。

2、性能测试方案设计

2.1、测试目的、目标与范围

目的:找出系统潜在的性能缺陷

目标:从安全,可靠,稳定的角度出发,找出性能缺陷,并且找出系统最佳承受并发用户数,以及并发用户数下长时间运行的负载情况,如要并发100用户,如何对系统进行调优

测试功能范围:本次测试计划主要收集分析禅道添加用例并发请求相关数据,做出分析和调优

2.2、测试指标范围

测试范围:禅道中添加用例并发时,服务器各项性能指标的性能测试

Jmeter指标:(由于Apache旗下性能测试工具Jmeter收集的性能指标偏少,下面的数据选取代表性指标)

1.Average/ms:服务器处理事物平均响应时间(表示客户端请求到服务器处理信息且反馈客户端的时间)

2.Throughput/s:服务器每秒处理请求数(表示服务器每秒处理客户端请求数(单位:个/秒))

3.KB/s:服务器每秒接受到的数据流量(表示服务器每秒接受到客户端请求的数据量KB表示)

硬件指标:

1.%Processor time : CUP使用率(平均低于75%,低于50%更佳)

2.System:Processor Queue Length :CUP队列中的线程数(每个处理器平均低于2)

3.Memory:Pages/sec :内存错误页数(平均低于20,低于15更佳)

4.Physical Disk-%Disk Time: 磁盘使用率(平均低于50%)

5.SQL Server:Buffer Manager-Buffer Cache Hit Ratio: (在缓冲区告诉缓存中找到而不需要从磁盘中读取的页的百分比,正常情况次比率超过90%,理想状态接近99%)

不需要关注的指标:
  • 业务流程/路径覆盖率。
  • 业务数据的完整、正确性。
  • 其他诸如系统易用性、可管理性等属于专项测试的内容。

2.3、测试资源

条件有限,我就一个测试环境,虚拟机套出来的,所有服务都部署在一块了,正常是分开部署的。

2.4、测试准备

测试环境安装:我这里部署的是一个禅道系统,如何搭建百度之

2.5、测试工具和测试策略

测试工具:Apache-Jmeter2.3.2

测试策略:根据公司内部实际情况,以及业务分布设置数据库访问量即并发用户数

2.6、测试数据收集测试脚本、数据及其预验证

添加测试用例场景设计如下:
场景
添加测试用例 
目的
测试多人同时添加测试用例的性能情况 
虚拟用户和资源
并发用户
CPU使用率
内存使用率 硬盘使用率
网络使用
率 
事务平均响应时间
5人          
10人          
20人          

2.8、基准测试

目的:验证测试脚本,初步检查交易本身是否存在性能缺陷。

测试方法:

采用 5个用户负载执行,取交易的平均响应时间作为衡量指标,并计算吞吐量

2.9、负载测试

目的:获得交易本身的性能表现,诊断交易是否存在性能缺陷。

2.10、稳定性测试

压测系统 7x24 小时

2.11、测试输出成果物

  1. 《性能测试方案》
  2. 《性能测试记录及问题跟踪表》
  3. 《性能测试报告》

2.12、测试进度计划

是度量你性能测试期间,在每个时间点该完成的事。这里根据公司情况来吧,我不给出示例了。

2.13、实施风险及规避措施

是对影响项目测试的各种可能发生的风险进行估计,以及对风险的发生几率和严重程度进行估计,并按照估计结果对风险进行排序

3、脚本开发制作

脚本开发制作:请参考文章《JMeter压力测试实例操作》

4、服务器监控

服务器性能监控:请参考文章《性能测试篇 :Jmeter监控服务器性能》

5、测试报告编写

这里我只介绍可能会涉及的一些点、大家根据自己情况做增减,性能测试报告一般包含以下几项:

测试目标、参考文档、测试环境说明、硬件配置、软件配置、测试策略、人力资源、测试方案、测试场景、测试用例、测试结果及其分析、测试结论及建议等等。至于每项的详细内容,这里就逐项说明,请大家根据公司情况做设计编写。

四、关于性能测试的一些看法

想要把性能测试做好,需要做好多方面的知识储备,而且涉及到面非常广,需比如网络,OS,系统架构,业务逻辑,协议报文,脚本开发,服务和系统的监控等等更多方面的知识。
真正的性能测试做得好,还得是大公司(肯花钱投入到性能测试中),毕竟人家真的是数据量大呀,回忆一下双十一的淘宝和京东,才算的上真正意义的性能测试。
但这里不得不说一句,性能测试真的是水太深了,个中细节,相信做过性能测试的同学自有体味,哈哈哈!!!
本人能力有限,以上仅为自己实际工作中的一些经验,如有不足,还请留言补充,最后谢谢你的阅读!!

如何使用jmeter做一个功能的性能测试的更多相关文章

  1. Jmeter初步使用二--使用jmeter做一个简单的性能测试

    经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...

  2. 利用jmeter做一个简单的性能测试并进行参数化设置

    1.新增一个线程组,并在下面添加基本原件,包括:监听器.http请求默认值和一个事务控制器 在http请求默认值中填写 ip 地址和端口号,协议类型默认为http 2.添加代理服务器,以便之后进行录制 ...

  3. jmeter完成一个简单的性能测试(jp@gc - PerfMon Metrics Collector的运用)

    场景:公司项目解耦,在项目前期对新的架构进行简单的性能测试 工具:jmeter 1.大致结构如下: 1800秒(半个小时)内持续产生20000的线程 创建了聚合报告,主要是查看服务器响应结果以及相应时 ...

  4. Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)

    转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平 ...

  5. 一个使用Jmeter做接口性能测试的实战案例

    1 安装并配置Jmeter Jmeter的安装不在这里阐述,安装步骤非常简单. 直接进入主题 1.1 数据库连接配置 由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接. 如果不 ...

  6. 使用Jmeter做性能测试

    上周刚刚做完项目的性能测试.今天整理和总结一下,随便分享给大家. 首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析.场景分析大家根据自己的项目系统进行分析设计,我们选用 ...

  7. 用JS做一个简单的电商产品放大镜功能

    使用js制作一个简单的产品放大图 购物网站的产品页经常会放有一个产品展示图区.该图区有一个功能就是产品图的放大功能,移动左侧的焦点区域,可以放大细节部分观看,详情如下图.实现该功能的方法也非常简单. ...

  8. JMeter基础之一 一个简单的性能测试

    JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测 ...

  9. 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <详解>

    Rails5.1增加了Webpacker: Webpacker essentially is the decisions made by the Rails team and bundled up i ...

随机推荐

  1. 曹工改bug--这次,我遇到了一个难缠的栈溢出bug,还是日志相关的,真的难

    前言 前几天,在linux上部署一个war包应用时,tomcat直接起不来,查看tomcat的日志,catalina.out里没啥特别的,但是查看localhost日志,发现栈溢出了. [root@l ...

  2. springboot 文件上传及java使用post请求模拟文件上传

    参考自:https://blog.csdn.net/qq_25958999/article/details/83988974 接收端Controller类中方法: @RequestMapping(va ...

  3. $Luogu2680/NOIp2015$ 运输计划

    传送门 $Sol$ 最暴力的做法就是枚举最长链上的边,然后再算一次所有的链长,更新$ans$. 这里要求最大的最小,容易想到二分答案.对于二分的值$mid$,扫一遍所有的链,若链长小于等于$mid$, ...

  4. acwing 1250. 格子游戏 并查集

    地址 https://www.acwing.com/problem/content/1252/ Alice和Bob玩了一个古老的游戏:首先画一个 n×nn×n 的点阵(下图 n=3n=3 ). 接着, ...

  5. 「Luogu P3395」路障 解题报告

    点开有惊喜 其实是题面 这D1T1给的很有面子! 我居然做的来! 从左上角走到右上角 然后n<=1000 所以果断放弃DFS,选择BFS 思路还是一样的BFS 证明: 走到一个点的时间越早越好( ...

  6. 2019年终总结&小半年流媒体服务器开发经验总结

    目录 2019年终总结&小半年流媒体服务器开发经验总结 19年开发小结 流媒体服务框架设计 登录服开发 ffmpeg音视频服务开发 音视频控制 流媒体服务开发小结 rtp处理 视频的合成&am ...

  7. 不懂Neo4j?没关系,先学增删改查

    从上篇文章中我们了解到了什么是Neo4j.为什么要用Neo4j.什么场景使用 以及怎么安装,如果您还不想熟悉,点击此处,传送过去哦~ 既然Neo4j是一个图数据库,那么毫无疑问,增删改查是必不可少的, ...

  8. nodeJS实现识别验证码(tesseract-ocr+GraphicsMagick)

    背景 最近在写一个爬虫的小工具,卡在登录这里. 想爬的网站需要登录才能获取数据,登录又需要输入验证码. 好在验证码是简单的验证码,还可以自己识别试试. 需求分析 1.保存验证码图片 2.识别验证码 3 ...

  9. 原型,原型链,给予原型和class的继承

    学习react的时候遇到了class方式的继承语法,原理和代码的解释很详细,值得一读. 原型每个函数(构造函数)都有一个 prototype 属性,指向该函数(构造函数)的原型对象.实例没有 prot ...

  10. 原生javascript 基础动画函数封装(一)

    <!DOCTYPE html> <html> <head> <title></title> <style type="tex ...