怎么开展性能测试?
  第一节测试的一般步骤

  性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义(后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源);因此,性能测试首先是基于功能测试的,你必须了解其功能实现才能开展性能测试。
  我们还是来逐步分解说明:
  一个被测系统来了,我们需要分三块来分析

  入口:需要怎么发送请求,施压方应该施加多大的压力,用什么方法施压;
  被测系统:系统怎么应对单个请求,系统业务流程是怎么样的,系统网元节点、数据流向等,整体性能需求有没有,需要考察哪些指标,怎么监控;
  出口:接收数据有哪些,怎么获取和比对;
  OK,是不是感觉像功能测试差不了多少?是的,是先分析单个用户的功能流程以及系统的数据流向(包括后台的数据流向)结构图,然后再考虑大量的用户操作。
  那么一般系统的性能测试步骤大体如下:
  1)确认测试目标
  2)分析被测系统业务需求
  3)分析被测系统的系统结构
  4)分析被测系统的性能测试点
  5)设计测试方案、检测方案和测试案例
  6)选择测试工具
  7)测试开发
  8)测试执行
  9)测试结果分析
  10)测试调优、测试验证、测试分析
  11)测试报告
  第二节测试准备
  测试准备工作越充分后期的测试执行越顺利,一般测试准备工作如下:
  1)确认测试目标
  2)分析被测系统的业务
  3)分析被测系统的结构
  4)分析被测系统可能产生性能瓶颈的节点
  5)设计测试方案、检测方案和测试方案
  我们分步来研究一下:
  确认测试目标
  拿到一个任何任务首先都要确认任务的目标是什么。如果不知道目标,你所做的任何努力得到的结果有可能都不是终所需要的结果。
  性能测试也一样,它首先是有一个目标的。无论是你是随机测试想看看系统的当前性能情况,还是奔着对系统进行优化而去的,还是检验一下系统的性能是否满足需求,等等,这些都是你再做事情之前的一个目标。你后面所做的一切事情,从分析到方案和案例设计,到测试执行监控,再到后的测试分析和报告,都是要围绕这个目标展开的。
  所以,首要的任务是确认测试的目标要求,需要达到怎样的一个测试目的和目标。
  有一些,测试任务没有明确的目标或者要求,并不说明它没有目的和目标,这需要我们进行沟通和分析了。
  沟通是要和项目组达成一致的目的要求;分析,分析需求,分析系统,后也是要明确项目或者系统测试任务的目的要求。
  分析被测系统的业务
  曾经在一次面试中,有一位面试官给了我这样一个题目:“有一个网站,只知道它的总访问量是300万,怎么测试它的性能?”,大家想一想要怎么设计方案?
  ------猜想面试官是想面试者回答,正态分布、二八原理等基本的测试原则应用。
  我当时没有回答任何与正态分布、二八原理相关的东西;记得当时面试官对我的回答好像是“蔑视”的笑了笑;可能是觉着“连基本的正态分布、二八原理都不知道,还搞性能测试?”。其实,性能测试并不是想象的那样简单,并不是一个简单的原理的应用行的,如果这么容易,那岂不是谁都能搞。
  性能测试的基础是基于系统的业务功能基本趋于稳定,首要的任务是性能在系统满足业务功能需求上展开,因此我们必须要分析系统的业务。不管是普通的网站也好还是比较专业的系统也好,它都是有业务功能需求的,所有的性能测试都要基于这些功能才能进行,脱离了业务功能的性能测试没有意义。性能测试所以首要的任务是分析系统的业务功能,分析系统业务上的性能限制,也是业务需求。
  那么怎么分析系统的业务需求呢?
  (1)如果有用户需求规格说明,首要的任务是阅读和理解分析用户需求规格说明;
  (2)如果没有用户需求规格说明,那么需要分析系统功能,提炼出系统的业务需求。如果可能,项目组比较熟悉的人讲述一遍是好的了。
  (3)后无论哪一种,好的方法是按照自己的理解画出系统的业务流程或者系统的功能结构图,拿到项目组进行确认。一定要进行确认,和整个项目组达成一致的认同。
  有人会说,我们自由测试没有项目组可确认的时候怎么办?
  还是一样,需要从分析入手。如果不分析,你不会知道系统的功能数据流向,请求的数据构成,系统的网元结构,以及系统可能出现的瓶颈在哪一个节点,你又怎么进行优化呢?
  当然面对一种全新的知识领域的时候,可能需要我们多积累经验,更多的进行分析;我们可能需要结合实践,多次实际运行系统或者执行测试,在测试中不断的进行优化和完善我们的分析过程、分析结果、测试方案、测试开发甚至是测试执行等等。
  分析被测系统的业务,有时候不是一蹴而,需要我们进行多次反复的分析、确认和再分析、再确认,直到把系统弄明白,甚至有可能在测试执行的后阶段你还需要再次进行分析和确认,然后重新规划测试。