我怎么做性能测试

今天和同事交流关于性能测试的东西,以前也做过性能测试,突然想写点自己关于如何做性能测试的认识。

  基于B/S架构的系统,利用loadrunner做性能测试,利用nmon监控系统资源(用linux自带的top,vmstat等命令也可以,写一些简单的shell脚本就行了)。

  那么到底该怎么去做性能测试呢?

  1、首先要了解被测系统的结构和有关知识的储备。

  了解了被测系统,在后期性能出现异常的时候,定位就相对容易一些;而且知道在测试的过程中需要监控什么。

  一个简单B\S系统结构图:

  该系统有一下及部分组成:

  APP:一台nginx,兼做web和应用服务器

  Memcached:负责做数据缓存

  lucene:负责做搜索

  RabbitMQ:负责某些业务的队列处理

  mysql:数据库服务器,一个主库,一个从库

  从以上系统结构来看,要搭建和维护性能测试环境,需要的一些必要的知识。

  对于APP:需要了解nginx的相关知识,怎么修改配置,在哪里看日志

  对于Memcached:怎么搭建Memcached,怎么查看命中率,Memcached的作用是什么

  lucene:这个lucene是干什么用的,要怎么配置

  RabbitMQ:MQ要如何配置,都那些业务用到了MQ。

  Mysql:如何配置主从,为什么要配置主从,主从如何同步等等

  在搭建环境的过程中肯定会遇到这样或那样的问题,要自己找资料,或者相关的开发人员一起解决,并注意做笔记,防止以后同样的问题再出现。

  2、了解了系统结构,开始搭建测试环境,并准备数据。

  测试环境尽量要和生产环境的结构保持一致,还有配置文件等也要保持一致,这样能保证性能测试的结果更加真实和接近生产环境。

  数据准备一定要充足,而且数据量要大于等于生产环境,这样能更真实的模拟生产环境。比如对一个select语句而言,10W的数据,和1000W的数据,查询时间肯定有差别。如果数据量太小就不能反映真实情况下性能了。(可以把线上的数据导入到测试环境,但是要注意把用户比较隐私的数据都替换掉)

  如果有可能的话,测试环境的数据要比生产环境多出20%,做一些性能上边的冗余,防止发生突然的性能尖峰

 3、了解需求,找出测试点

  和产品、技术沟通需要做性能测试的业务;并了解相应的业务的性能指标,如页面的响应时间,TPS(事物处理)或者系统期望能承受多少并发等。

  4、设计性能能测试用例

  根据业务编写相应的性能测试用例。

  功能

  在线用户达到高峰时,用户可以正常发帖,保证200个以内用户可以同时发表帖子。

  目的

  测试系统200个以内的用户同时在线发帖。

  方法

  采用LoadRunner的录制工具录制一个邮件发送过程,然后对脚本进行优化,加上事物点,检查点等。过程中监视B端的响应,还有网络传输,web服务和数据库服务器的性能,并观察服务器相应服务的日志,检查MQ的状态,memcached服务器的状态和性能

  预期结果

  符合业务的预期,日志木有异常等(不详细列举)

  5、编写并优化脚本

  根据测试用例录制发帖的脚本,加入事物点、检查点、参数化,并回放,确保脚本没有问题,可以正常运行。

  6、设计性能测试场景

  设置一个渐进的场景10-30-60-100-150-200,这么做的目的防止一下子上去就是200个并发,出了问题,不知道系统最佳的并发是多少。

  (上边的渐进场景不一定合理,只做示意)

  7、启动监控,并开始跑性能测试场景

  设置场景完毕后,开始在服务器端启动监控,然后开始启动场景。

  8、监控场景执行,监控服务器的资源

  loadrunner可以搜集一些性能测试数据,事物的pass数,fail数,error数,都要做统计。

  监控服务器的资源,可以利用nmon,也可以是用linux自带的命令top,vmstat等。

  也要监控服务器的日志输出,看是否有异常出现。例如:查看mysql的慢日志,nginx的日志等。

  9、搜集结果数据,分析探讨

  最后对性能测试搜集的数据进行分析,找出性能测试的拐点。

  10、对系统进行优化,并重复7-9步,直至测试结束

  PS:性能测试不是一个人的事情,中间设计了,开发,产品,运维,QA,DBA,要大家共同协作,才能做好性能测试。

  限于水平有限,用疏漏之处,多多包涵。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-02 12:27:21

我怎么做性能测试的相关文章

在做性能测试之后需要知道些什么

         之前写过一篇<在做性能测试之前应该知道什么>有博文,自我感觉讲的不好,举了两个例子,和做性能测试之前需要知道的一些要点.离我的题目有差距.二则觉得讲的不全.其实,要做性能测试需要知道的东西太多了.岂是一篇博文都能说全的.在这里表示一下愧疚之情.          好多测试新手,在做完性能测试之后,不知如何对测试数据进行分析.在这里我想谈谈一些性能测试参数的相关知识.当然,也不是一篇博文就能说清道明的.只希望在你的测试道路上能给你一丝帮助.         不怕啰嗦的再次忠告,

在做性能测试之前需要知道什么

最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新手上来就问关于LoadRunner的使用上的问题.对性能测试的理解也不是太清楚.公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点LoadRunner的使用说明就开始对系统下刀了.对于一些大公司的专业性能测试人员来说,这个很可笑,但是这种情况是存在的,我当初刚到公司时也这么干的. 那时还真把性能测报告给整出来了,现在看来那报告没有任何意义.虽然对现在的我来说性能测试也只是只懂皮毛.但还是希望通

Clojure世界:如何做性能测试

  我们经常需要在程序中测量某段代码的性能,或者某个函数的性能,在Java中,我们可能简单地循环调用某个方法多少次,然后利用System.currentTimeMillis()方法测量下时间.在Ruby中,一般都是用Benchmark module做测试,提供了更详细的报告信息.     同样,在Clojure里你可以做这些事情,你仍然可以使用System.currentTimeMillis()来测量运行时间,例如: user=> (defn sum1 [& args] (reduce + 

Apache使用Ab工具命令做性能测试教程

我们有了自己的服务器,有时候我们需要测试下我们的服务器到底能抗多少数据,这样有利于我们部署和配置服务器,在Apache里面有自带免费的性能测试工具,Ab(Apache Bench)在Apache的bin目录下,它能模拟多个并发请求,也就是说它主要是用来测试你的apache每秒能处理多少请求的. 命令语法 ab [options] [http://]hostname[:port]/path 参数选项 -A auth-username:password 对服务器提供BASIC认证信任. 用户名和密码

性能测试知多少---并发用户

在做性能测试的时候,我们常常听到并发用户.响应时间.吞吐量专业术语,也许大家都理解,这里有一个理解的层次与深度概 念.最近有看断念<软件性能详解与案例分析>一书,看了他的讲解,原来我对这些术语的理解还是比较肤浅,其实,这里也主要受制于自己的知识面.所以,再拿 出来与大家重温一下.  ps:按照惯例先上个图,因为看纯文字的文章比较累!^_^     并发用户数 大家都知道我们的性能测试就通过工具模拟多用户对系统进行操作,对系统造成压力,来验证系统的性能(不太标准的解释). 好多人也简单的把性能测

《全栈性能测试修炼宝典 JMeter实战》目录—导读

版权 全栈性能测试修炼宝典 JMeter实战 • 著 [美] Rogers Cadenhead 译 袁国忠 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明 全栈性能测试修炼宝典 JMeter实战 Rogers Cadenhead: Sams Teach

浅谈应用性能测试 PTS

阅读原文 我们为什么要进行性能测试? 1. 评估系统的能力. 当应用上线有大量用户当问的时候,页面的打开速度直接影响用户体验,进而影响用户的留存.了解用户的真实使用体验,对应用做出针对性的性能评估,有效提升用户体验. 2. 验证系统的稳定性和可靠性. 在整个的网站应用架构体系中,会有一些接口基础服务,它的职责是对外输出一些稳定的查询,一些服务能力,这个时候系统需要有较高的稳定性,比如访问量很多,数据量很大,这个时候就需要关注性能.另外对于一些核心系统,可用性很高,对于性能系统也是非常关键的. 3

怎么做一个合格的测试

试着表述一下自己的测试思路:我期望的测试时怎样来做的.  首先给一个概念,Smart Test.何为聪明的做测试,从以下几个方面来描述:  A.重视投入产出比  首先,需要明确测试实际上是一种服务,一种技术手段,它通过一些方法.手段.工具来发现产品中的缺陷,通过及时暴露缺陷推动开发去修改来提高质量.而质量本身是与测试无关的,测或者不测,质量是在生产完成的那一刻确定的.  因此在投入一定量的测试工作量的情况下,如何让测试的收益更大?答案很容易想到,尽量找出多的缺陷,找出风险高的缺陷.那么如何做到这

性能测试知多少---测试环境搭建

在进行性能则试前,需要完成性能测试的搭建工作,一般包括硬件环境.软件环境及网络环境,可以要求配置和开发工程师协助完成,但是作为一个优秀性能测试工程师,这也是你的必备技能之一.   性能测试环境与功能测试环境的区别                                                  那么性能测试环境与功能测试环境有什么不同呢?性能测试对测试环境的干净.独立性要求更高,更为严格.对于一个相对较规范的公司,都会建立其独立的研发环境.测试环境.线网环境(最终运行软件的环境)