3、测试设计

  主要从上面提到的几个方面进行分析,针对系统的特点设计出合理的测试场景。为了让测试结果更加准确,这里需要很细致的工作。如建立用户模型,只有知道真实的用户是如何对系统产生压力,才可以设计出有代表性的压力测试场景。这涉及到很多信息,如用户群的分布、各类型用户用到的功能、用户的使用习惯、工作时间段、系统各模块压力分布等等。只有从多方面不断的积累这种数据,才会让压力场景更有意义。后将设计场景转换成具体的用例。

  测试数据的设计也是一个重点且容易出问题的地方。生成测试数据量达到未来预期数量只是基础的一步,更需要考虑的是数据的分布是否合理,需要仔细的确认程序中使用到的各种查询条件,这些重点列的数值要尽可能的模拟真实的数据分布(数据统计信息、执行计划相关的内容,此处不细说了),否则测试的结果可能是无效的。

  此外,性能测试执行过程中,需要监控收集的各种指标数据,也需要明确下来。

  4、测试环境准备

  部署测试环境,生成测试数据,环境预调优等等。

  5、测试执行、监控

  准备测试脚本,执行之前设计好的各个用例,监控并收集需要的数据。

  6、问题分析定位、调优

  发现问题或者性能指标达不到预期,及时的分析定位,处理后重复测试过程。

  性能问题通常是相互关联相互影响的,表面上看到的现象很可能不是根本问题,而是另一处出现问题后引起的反应。这要求监控收集数据时要全面,从多方面多个角度去判断定位。

  调优的过程其实也是一种平衡的过程,在系统的多个方面达到一个平衡即可。

  7、性能报告

  将测试过程中记录的各种数据汇总成报告,将各方面需要的结果清楚的展现出来。

  上面所有内容中,如果排除技术上的问题,性能测试中难做好的,是用户模型(或者叫系统使用模型)的分析。它直接决定了压力测试场景是否能够有效的模拟真实世界压力,而正是这种对真实压力的模拟,才使性能测试有了更大的意义。可以说,性能测试做到一定程度,差距体现在了模型建立上。

  至于性能问题的分析、定位或者调优,很大程度是一种技术问题,需要多方面的专业知识。数据库、操作系统、网络、开发都是一个合格的性能测试人员需要拥有的技能,只有这样,才能从多角度全方位的去考虑分析问题。

  当然,对于测试人员来说,技术能力只是辅助手段,测试思想才是根本的。敏锐的嗅觉、严谨的逻辑、合理的推测、大胆的实践是一个合格测试工程师的必备要素。