常见的性能测试是这样的:

有人开发了百度知道,然后,想知道单机的最大并发处理量是多少。这就需要性能测试了。然后,我们常见的性能测试方法是:

1.apache的ab;

2.JMeter;

3.loadrunner;

4.自己开发的工具。

先大致的评价下上面的几个方法:1.apache的ab。这东西,用起来很简单,就一个命令。缺点就是,可定制差,使用不是很方便。2.JMeter真的很强大,我们的性能测试自动化,就是使用JMeter实现的;3.loadrunner,这东西要收费的,功能很强大,但是自动化方面,不清楚。直接入正题,看看怎么实现性能测试自动化。

性能测试是很耗费时间、人力的事情,每次测试都需要有人来值守。在这里,提供一个JMeter和JMeter plugins,一起配合使用达到的性能测试自动化。

为了大家的学习方便,我把我的JMeter打包起来,欢迎大家下载使用。

一、什么是JMeter?

JMeter是开源的性能测试工具,能够完成很多的测试任务。详细的可以参考:http://jmeter.apache.org。

1.1 安装

先安装JMeter plugins,按照这里的步骤来安装。https://code.google.com/p/jmeter-plugins/wiki/PluginInstall

1.2 编写case

在windows下打开jmeter.bat,就可以看到编辑页面了。如下图:

第二步:右键测试计划,新建线程,配置线程数及循环次数。这里我们配置100*100 =10000次请求。

第三步:在线程上右键,选择add->sampler->Http Request Sampler。然后,配置好服务器地址,端口地址,get或者post的参数。如图:

第四步:在线程组上右键,选择add->Assertions->Response Assertion. 配置断言的参数,这样就可以让Jmeter为我们判断哪些请求是错误的。

第五步:在测试计划上右键,选择add->Timer->Constant Throughput Timer,配置每分钟的流量。这样就可以有一个稳定的压力。这里要注意,在测试计划上右键,而不是在线程组,这样这个timer才会生效。我们要400的压力,就需要400*60 = 24000.然后,下面的计算选择:all active threads.

最后,可以点击运行,查看是否我们需要的压力值,查看地址是否正确。 如果OK,就可以点击保存了,保存为performance.jmx。到这里,我们就完成case的编写了。对于复杂的case,可以添加cookie manager等来支持。

二、在linux上执行

我们可以直接执行,然后查看压力等情况。但是,个人的PC机难免会有很多的限制,压力可能起不上去,而且不方便我们持续集成,这里可以在linux上跑。

将jmeter的tar.gz包放到机器上,然后配置好java,这里需要java5以上,公司机器的默认java是不符合要求的。

可以使用如下命令:

sh  ./jmeter.sh  -n  –t  performance.jmx  -l  log.jlt

上面的命令,-n是不适用ui界面,也就是在linux下跑,-t是选择指定的测试计划;-l是将生成的结果保存为log.jlt,这也是我们后面提供给hudson的结果文件。

就可以看到Jmeter已经开始运行了。

三、hudson插件安装

为了分析jmeter的结果,我们需要在hudson上安装一个Hudson Performance Plugin插件,如图:

然后,在job的配置里面,就可以规定我们认为OK的压力值。

四、hudson执行结果

可以看到上图中,有很多直观的数据,让我们对代码的性能有直观的了解。另外,点击Performance Trend,就可以看到更多的数据。比如那些请求是失败的,结果是什么。

至此,完整的压力测试就OK了。

五、后续提升

上面的测试,最多只算是压力测试自动化,而不能成为性能测试自动化。真正的性能测试自动化,应该包含对CPU, IO, Mem等服务器资源的详尽分析。另外,还需要给出其最大的瓶颈是什么,能够承受的极限压力是什么。还需要自动的调节压力,并且在某些情况下,还需要分布式的压力测试。

所以,后期还会继续研究,如何完成:

1.服务端CPU、IO、Mem资源监控;

         2.自动压力调节;

         3.分布式压测

如此,便可以让性能测试完全自动化,并且有一个详尽的报表,能够将人力从手工的性能测试解放出来,提高性能测试的准确度及缩短性能测试的时间,并且可以不用三更半夜的压环境了~

这个就可以查看JMeter plugins的代码,然后,写一个插件,来支持。

Web性能测试自动化方案相关推荐

  1. python写ui自动化测试用例_自动化测试(6) | Web UI 自动化测试方案

    Web项目的 UI 自动化测试方案 有用的链接: 项目讨论 项目中符合自动化测试的部分有哪些?(目标和范围 scope, 准入准出标准) 稳定的需求点.变动较少的页面 每日构建后的测试验证 daily ...

  2. web性能测试基础 知识(引用)

    1.1基本概念 并发用户:用户并发一般发生在使用比较频繁的模块中,而且遇到异常通常都是程序的问题. 用户并发数量:在线用户数量是计算并发用户数量的主要依据之一.=使用系统的用户数量*(5%~20%) ...

  3. jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...

    这阶段有幸接手了公司新产品的测试,所以一直都很忙.后台收到一些同学的私信,想多了解下性能测试,正好闲暇之余,终于有时间总结了一些性能测试实践经验和测试过程,就跟大家聊一聊. 性能测试用来保证产品发布后 ...

  4. 前端性能优化学习 03 Web 性能测试

    Web 性能测试 作为网站应用的开发者或维护者,我们需要时常关注网站当前的健康状况,譬如在主流程运行正常的情况下,各方面性能体验是否满足期望,是否存在改进与提升的空间,如何进行快速且准确的问题定位等, ...

  5. Web性能测试基本性能指标及案例分析

    Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤: (1)客户发送请求 (2)web server接受到请求,进行处理: (3)web server向DB获取数据: (4)webse ...

  6. 《WEB性能测试实战》之WEB性能测试分析

    性能测试的结果分析是性能测试的重中之重.在实际工作中,由于测试的结果分析比较复 杂.需要具备很多相关的专业知识,因此常常会感觉拿到数据不知从何下手.这也是我学习性能 测试过程中感觉比较尴尬和棘手的事, ...

  7. web性能测试基础(一)

    web性能测试基本性能指标 Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤: (1)客户发送请求 (2)web server 接受到请求,进行处理: (3)web server 向 ...

  8. Web 性能测试工具

    Web 性能测试 作为网站应用的开发者或维护者,我们需要时常关注网站当前的健康状况,譬如在主流程运行正常的情况下,各方面性能体验是否满足期望,是否存在改进与提升的空间,如何进行快速且准确的问题定位等, ...

  9. web性能测试术语小集合 [ 光影人像 东海陈光剑 的博客 ]

    这些天有幸接触到性能测试,虽然只是简单的配合做一些准备工作,对于我来说却是一大步,于是"翻箱倒柜"扒拉出一些抄录的小文档,呵呵,各位性能测试高手请忽略,希望能对未触及性能测试的兄弟 ...

最新文章

  1. LinuxMint(Ubuntu)安装文泉驿家族黑体字
  2. 云南大学网络课程作业计算机,云南大学842计算机程序设计考研复习经验
  3. AutoML数据增广
  4. LeetCode167 | Two Sum II - Input array is sorted (Easy)
  5. html5游戏制作入门系列教程(六)
  6. 2018-03-02 certtool的用法
  7. eShopOnContainers学习系列(二):数据库连接健康检查
  8. 微服务(Microservices)概述 与 Spring Cloud 简介
  9. access 导入 txt sql语句_从零开始学 MySQL - 数据库的导入导出和备份
  10. iphone4s上市时间_iPhone 4S才是真正意义上的王者, 网友: 现在依旧能打
  11. 用matlab解系统框图,第10章MATLAB的控制系统数学建模课题.ppt
  12. 【持续更新】MARL 算法汇总
  13. springcloud 01 euraka整理
  14. uniapp 登录页跳转到首页
  15. 前端下载excel文件的两种方法
  16. 转 CSS兼容技巧整理--从IE6-IE9 火狐谷歌浏览器兼容
  17. 苹果手机显示无法与服务器建立安全连接,苹果手机那个safari浏览器无法与访问器建立安全链接是什么意思...
  18. Docker入门实战笔记
  19. 32.768kHz晶振
  20. r语言算巢式设计方差分析_应用统计学与R语言实现学习笔记(八)——方差分析...

热门文章

  1. 作者领读 | Prometheus云原生监控
  2. 1.DLL注入相关概念
  3. 对WEB标准以及W3C的理解与认识
  4. 国际短信系统平台后台功能详解-移讯云短信软件
  5. Linux 修改系统时间的两种方式
  6. Linux 命令详解
  7. pscp ssh_init: Network error: Cannot assign requested address
  8. 打开Flutter动画的另一种姿势——Flare
  9. OpenCV模板匹配和轮廓处理
  10. 【大数据分析】Spark的joins研究