测试的执行
  测试的具体执行步骤是测试场景的核心环节。一般而言测试的步骤包括以下几个:
  1、测试准备
  测试准备通常用来完成铺底数据。铺地数据是测试的基础,例如测试创建并挂载卷场景时,数据卷创建并挂载依赖云主机,否则数据卷挂载阶段无法完成,因此测试该接口前的测试准备阶段需要铺底一定量的云主机。
  2、并发加压
  并发加压主要是指对接口进行一定压力的并发访问,该过程通常依赖测试工具完成。常见的测试工具如Grinder、ab、http_load等。ceph性能测试过程中使用的测试工具是Grinder,通过设置grinder.properties中的grinder.threads值,即可实现对接口不同压力的访问。
  3、测试数据收集
  测试工具通常会输出测试结果,例如Grinder工具在成功运行之后会在指定的log路径下生成后缀为.out的文件,该文件中包含测试过程中的测试结果信息。
  然而,有时候测试工具输出的信息并不全面。例如对于异步接口,测试工具仅能输出Http请求的TPS、响应时间等信息。对于后端动作持续时间通常需要测试人员手动统计。对于异步动作时间的统计需要根据测试场景的不同进行设计。常见的异步动作时间的统计方法如下:
  --代码中打点统计
  代码中打点通常是开发人员来完成的,开发人员在代码运行到一定位置时在日志中记录相应的时间信息,测试人员可以据此统计代码的执行时间。
  --测试脚本中通过时间戳统计。
  测试脚本中通过时间戳统计时间是指在开始执行异步动作前记录当前时间戳,然后轮询检查状态变化,当动作完成后记录完成时间,根据两个时间戳的差值获取动作执行的时间。
  优点:
  时间统计简单、直观。
  缺点:
  1)无法获得动作执行过程中的内部细节。
  2)如果出现异常服务的状态卡住,轮询不到完成状态测试代码会一直卡住。
  3)统计误差受状态轮询时间影响。
  --自定义策略统计
  自定义策略根据是根据具体的测试制定相应的统计策略。本次ceph性能测试过程中,统计虚拟机ping不通时间制定如下策略。从一台虚拟机ping新创建的虚拟机。后统计ping通次数和总次数,根据比例关系和持续时间计算虚拟机ping不通时间。
  使用ping统计时间需要注意,ping命令可以指定ping间隔,ping次数和ping间隔的乘积可以获取ping的持续时间。然而ping次数越多这个时间的误差越大。通常情况下ping命令的输出结果中会有ping时间的统计,该时间是比较严格的ping持续时间。
  4、测试环境清理
  由于性能测试需要执行多轮,每轮之间需要保证测试环境一致。因此一轮测试结束后需要清理测试环境,删掉创建的资源。
  多场景串联测试
  性能测试过程中有些测试场景具有因果关系,串联测试会减少测试准备的时间,提升测试效率。例如测试创建并挂载卷场景、卸载卷场景、删除卷场景时,三者直接顺序完成恰好可以避免清理测试环境。
  优点:
  测试效率高,节约测试时间。
  缺点:
  1)不同测试场景的并发量存在差异,各个场景并发量可能不一样。
  2)需要频繁修改配置文件。每个场景的脚本配置,时间统计,都星对独立。每次执行下一个场景测试前需要更改相关配置。
  3)场景互相干扰。三个场景测试过程中如果其中一个场景出错,需要其他测试场景重新配合执行。
  总之,多场景串联测试需谨慎!