Docker领路,走进压力测试的现代化

发表于:2019-7-19 09:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王 练    来源:51Testing软件测试网原创

  摘要:
  Docker技术为软件开发测试提供了非常便捷的功能,使用现成的镜像让我们的工作事半功倍。本文针对在项目中进行压力测试使用Docker进行说明,重点记录从手工搭建环境,到使用Docker提高测试效率,再对Docker脚本进行多次优化,最终达到测试效果的过程。
  从中可以看到Docker带给我们的便利,学习到Docker在压力测试中的应用,同时也体现了技术精益求精、永不止步的趋势。
  一、Docker简介
  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的?Linux?机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
  对于目前项目的压力测试来说,看重是有很多现成的镜像供我们使用,还有就是在一个物理机上运行的多个容器可以实现隔离。
  二、压力测试需求说明
  需求说明:项目上需要对网络设备监管系统进行压力测试,测试的指标是系统能否完成1W设备的性能指标监控。
  需求分析:实际网络运行时,需要对被管设备进行性能采集,指标包括设备的CPU、内存、温度、端口流量、带宽利用率等指标。采集周期分为5分钟、15分钟、24小时。
  目前的测试需求是:验证系统能否完成1W设备的5分钟性能指标采集。
  当然,如果可以采集5分钟,15分钟、24小时也不在话下了。
  三、从刀耕火种到现代化
  在明确了测试需求之后,紧接着需要完成的就是测试设计和环境搭建了。由于无法使用1W的真实设备进行测试,具体原因如下:
  找不到。1W台设备需要非常大的精力去申请、借调,而且不是小数目。
  不划算。任何研发事件都需要考虑性价比,进行本需求的测试,投入1W台实际的设备是不划算的。
  没必要。从各种技术方案来看,都没必要使用实际设备进行测试。
  所以肯定是需要使用模拟器进行测试。通过之前的技术积累,测试组对SNMP Simulator?非常熟悉,该工具可以根据需要进行SNMP MIB配置,响应需要的MIB节点。在本例中,通过监控指标的确认,在单台实际设备上抓包后,即可配置与实际设备回应一致的模拟器。
  然而,在实施压力测试的过程中,并不是一开始就想到使用Docker的,使用Docker也不是一开始就非常顺利的。经历了从刀耕火种到最终实现现代化的过程。
  3.1多台Windows PC的刀耕火种时代
  当接收到该需求的时候,马上进行测试方案的设计和规划,核心的方法就是使用SNMP Simulator?模拟实际的设备。具体分为如下步骤。
  1)安装Python环境。使用01-python-2.7.12.msi进行Python环境安装,完成后添加path环境变量,如C:\Python27;C:\Python27\Scripts。
  2)安装pip工具。命令如下:cd /d xx\xx\pip-9.0.1,python setup.py install。
  3)最后通过pip安装pysnmpsim。命令为:pip install snmpsim,需要确保网络畅通。
  4)对实际设备进行抓包。使用Wireshark工具对实际设备采集过程进行抓包,对其中的SNMP交互进行提取记录。
  5)根据抓包结果配置SNMP Simulator响应报文。SNMP Simulator?工具会遍历指定的文件夹,搜索“.snmprec”后缀的文件,作为响应报文。且文件名为其读写共同体。
  上述文件就是一个参考实际抓包结果进行配置的示例。以第一条为例,当SNMP Simulator?接收到以“public”为共同体,且OID为“1.3.6.1.2.1.1.5.0”的SNMP报文时,会回应“7465737432”,其数据格式为“4”(表示OCTET STRING)。SNMP Simulator支持配置不同情况响应不同报文,本例不需要。
  6)使用命令启动模拟器。由于需要启动非常多的模拟器,使用SNMP Simulator提供的文件命令格式,如下:
  snmpsimd.py --v2c-arch --data-dir=xx\01-ResponseData --args-from-file=xx\Parm.txt
  其中01-ResponseData目录中存放回应的SNMP报文数据,具体格式参考(5)步中的示例。Parm.txt中存放需要模拟的设备IP信息,示例如下:
  上述命令意味着在一个SNMP模拟器实例中模拟Parm.txt指定的IP+端口的SNMP设备。
  7)在多台PC上重复上述步骤。对于单PC模拟器的数目是一个非常重要的指标。实际发现,单进程中最多启动500模拟器。超过后会报如下错误。
  这个有可能是SNMP Simulator的BUG,但也无暇去解决了。通过开启多个Python进程规避。
  8)在待测系统中使用数据库存储过程创建资源和任务。1W设备和相关资源数据通过数据库脚本插入到库中,其中与资源对应的任务信息也一并插入库中。
  9)执行测试分析结果。

  ......
查看更多精彩内容,请点击下载:

版权声明:本文出自《51测试天地》第五十四期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号