近期接触的项目,进行了比较多的性能测试,性能测试的步骤做一下总结和分析,也希望对以后的工作有益。

  性能测试,是一种“正常”的测试,主要是测试正常使用时,系统及时性(响应时间、吞吐率)是否满足要求,同时可能为了保留系统的扩展空间进行一些稍稍超出“正常”范围的测试。

  系统性能测试中的几大步骤:

  1、明确测试目标;了解性能测试需求;

  2、编写性能测试计划;

  3、分析性能测试需求;

  4、编写性能测试方案、设计测试场景;

  5、相关资源准备(硬件资源、软件资源);

  6、执行性能测试并收集测试结果;

  7、分析结果;

  8、系统调优及再测试;

  关于步骤的解析:

  1、明确测试目标;了解性能测试需求;

  性能测试启动阶段要确定测试的负责人和组织结构。明确测试的总体目标和范围,确认资源情况。获取性能测试需求:业务列表、性能指标、测试环境、数据量等详细需求。为策划规划做准备。

  性能调优是是无止境的,所以在测试之前应确定一个明确性能调优目标,作为基准。

  2、编写性能测试计划;

  性能测试计划中包含测试目的和测试目标的相关信息,还确定了实施和执行测试时使用的策略,方法;同时还要确定测试工具、所需资源、日程表计划等。

  3、分析性能测试需求;

  性能测试需求分析主要目的是要找出可能造成系统瓶颈的因素,为后面的测试场景设计提供依据。影响系统性能有很多种原因,在此应关注如下几个关键点:

  A 环境配置性能需求:

  应用配置需求:例如应用整体框架、涉及到哪些第三方的组件、应用层与数据库层的接口、使用了什么数据库等;

  B 系统配置需求:例如用户客户端配置、客户端与服务器端的网络配置、应用服务器或数据库服务器操作系统等等;

  C 服务器性能指标要求:

  预期的在上线系统中服务器资源使用情况、吞吐量、软件运行情况等等。

  D 系统设计需求:

  系统架构、系统的技术实现、与其它系统接口关系及其技术实现、本系统测试数据及其与相关系统测试数据关系等等。

  E 工作负载需求:

  用户使用情况需求:例如用户分布情况;哪些模块用户使用比较频繁;在用户操作的数据有哪些特点等等;这些需求需要具体定位到系统的哪些功能模块、功能点;

  F 客户端性能指标要求:

  请求响应时间分布;请求的准确率等等。

  4、编写性能测试方案、设计测试场景;

  明确测试目的和测试的范围以及项目功能需求,分析测试环境中可能出现瓶颈的位置,据此来编写性能测试方案。在设计测试场景时,尽可能把测试按照类型划分,每个类型下又设计N个场景。一般来说测试中会使用的一些场景:

  预期性能指标测试、单一功能加压测试、复杂场景测试、压力测试、负载测试、大数据量测试、配置测试等。根据对业务数据的分析,设计与真实情况类似的场景,来测试系统的整体性能。

  5、相关资源准备(硬件资源、软件资源);

  硬件资源包括被测应用的主机和应用环境的部署,压力发生环境的准备和网络环境的部署以及监控系统环境的部署等。

  软件资源包括测试程序的开发,挡板的开发,测试脚本的编写、测试数据的准备和参数化数据在各测试用例中的调整、数据分析准备等。

  6、执行性能测试并收集测试结果;

  在测试执行前,需要确认用例和场景、测试环境、测试数据、测试脚本、测试工具监控工具的正常。

  在测试过程中,每个场景的执行和使用的用例都要做记录,并且做好结果的搜集,关键数据要做截图。

  在测试完成后,注意数据的恢复和备份、环境的清理、结果的整理和相关文档的生成。

  7、分析结果;

  测试结果的分析其目的主要是根据测试获取到的数据去判断造成系统出现瓶颈的位置,挖掘造成系统瓶颈的原因。当然这个过程是技术含量高的一环。

  8、系统调优及再测试

  根据测试的分析结果,有针对性的去进行优化。比如:针对缓存上的问题,可以设置多级缓存;针对数据传输的问题,可以把大数据块分块传输,减小网络传输;如果是硬件资源的问题,可以增加更多的硬件资源;如果是服务器的应用访问压力问题,还可以做服务器应用的负载均衡水平扩展。在系统调优后,还可以再行测试以便达到更好的效果和切中指标。

  总之,性能测试是个繁琐和细致的工作过程,测试工具在测试中也只是一个辅助性的作用,而对测试得到的数据进行分析进而准确的定位问题和系统瓶颈才是关键。