性能测试你了解多少?

  开头总是千篇一律,毕业于一个不起眼的学校,在学校的几年是彻底的浪费了,因为一入门接触的就是软件测试各种理论知识所以后面学习的也就是这方面的东西了,毕业后和其他年轻人一样怀着梦进行北漂,因为北漂女朋友都没有了。刚开始工作时和大家一样都是向往着做性能测试、自动化测试不愿意做功能测试,总觉得那没钱途,就各种学习性能测试,刚开始总想着学好了loadrunner就可以做性能测试了,在一个专业的性能测试员看来这是多么可笑的问题,这也是多么天真的想法呀!虽然现在的我对性能测试也只是只懂皮毛。但还是希望通过这篇文章能让一些新手们对于性能测试有个入门的了解。多的不说了!

  在做性能测试之前一定要弄清楚几个问题:

  性能测试的目的  

  接下来再谈其他的。

  某天领导对你说,去给我们系统做个性能测试,千万别直接说“好!”然后,就走了,我以前这么干过,(而且还把测试报告弄出来了,不过现在回看发现那报告根本没有任何意义)(那时不懂,打肿了脸充胖子),回到座位后,不知从何下手了。那么,我们需要知道什么呢?

  首先要知道具体的需求。(简单的说一下其实性能测试现在我接触到的其实有两种,一种是web页面前端的性能,二是我们正常所理解的后台处理业务的能力,就是常说的要观察的并发、最大用户数、吞吐量、内存、数据库、中间件等)

   1、有明确要求

    系统要求同时满足1000用户登陆,平均每个用户登陆时间不能超过5秒。这个需求很明确,但是至于怎么达到这样的结果就不是我们考虑的了,优化系统还是加硬件什么的再讨论!

   2、只是想知道目前系统性能(容量测试)

    就是求得最大用户数和最佳用户数。这是比较模糊的一个需求,我们需要对系统做出分析,找出系统的压力点。

   3、找出系统性能瓶颈

  当我看见这样的需求时我头疼,可能是因为对这个还不专业。这个同样需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试。前提是你对这个体统非常的熟悉,无论是业务还是功能。

   4、了解系统在长时间的压力下性能状况(强度测试)

    这一般是验证系统的稳定性,因为系统一旦上线,就有可能会长期处在大用户的访问状态,可能以前没发现的一些问题就会暴漏出来。比较典型的就是内存溢出。以前这样的问题我遇见过,同样的并发数跑2、3个小时没有问题,但是用户数小一些跑了8个小时结果服务器果断挂掉了。最后发现是app连接池出了问题。

  二、性能测试的环境    

  确定了测试目的,当然需要搭建测试环境。这里的环境,我们需要考虑几点

  1、硬件环境

  我们需要了解被测服务器硬件配置,用于加压客户端的机子配置,CPU 内存  等

  2、软件环境

    我们需要了解被测系统的架构,前端、中间件、服务器(这里指运行系统软件服务器,如tomcat)、数据库,以及他们的部署位置。

   用于加压的客户端采用什么性能测试工具进行加压。

  3、网络环境

    网络环境很重要。在上面的几个目的中,除了找出系统性能瓶颈可以在广域网进行,因为这个目的可以不用设置太多的虚拟用户,只要找出系统哪个地方影响了整个系统的性能就行。 

    其他目的的测试都需要在,局域网进行,不然你压力工具所发送的请求都会卡死在网络的传输过程中。还有一点就是做测试时最好晚上做,不然你做性能测试时将带宽都占用了你们单位的人就没办法办公了!

  三、寻找系统的压力点  

  我们需要对系统的哪个页面或业务进行加压。这个不是自己想出来的,需要与开发人员的沟通。系统的首页?系统的登录?还是系统的交易过程?各个业务的用户比例是多少?只有获得有效的性能需求,才容易寻找和定位压力点!如果你对这几点都很清晰了,那么打开你的性能测试工具开始录制(或编写)你的性能测试脚本吧!

  四、必备知识

   在刚开始都说了性能测试不只是说你会loadrunner就可以了。你必备的:

    1、性能测试工具

      这个大家都明白,好比现在用得比较多的Loadrunner,但这只是其中一个,还有很多:web Bench、ab、Siege、JMeter、loadrunner~~~~~等等

    2、掌握一门编程语言

      至于为什么呢?其实你只要做了性能测试你都知道在很多情况下是不能够进行录制的,或者说没有录制到,所以这个时候就需要我们动手写脚本了。还有就是虽然工具虽然强大,但是他也不是万能的,像商用的loadrunner他的功能已经很强大了,可是他是商业用途,价格你懂的。多掌握一门没错!

    3、计算机原理以及操作系统知识

      这方面的东西必须懂,不然别人说起什么内存泄漏、死锁、乱码等问题你都不知道那真的~~~~~

    4、有良好的网络基础知识

      这个为什么其实我们经常遇见的就是关联问题,这下懂了吧!

    5、数据库知识

    6、中间件知识

  我说的可能还只是一部分,也需要不断的学习了解、探索。如果连这些不懂那么更加不能谈后面的瓶颈定位、优化。

  好比定位一个系统的瓶颈时你需要去查找是:1、硬件上的性能瓶颈?2、软件上的性能瓶颈?3、程序上的性能瓶颈?4、操作系统上的性能瓶颈?5、网络设备上的性能瓶颈?

  所以如果要做性能测试这些东西都是必不可少的!

    备注:这只是个人的观点,有什么错误的地方还请大家指出来!