接口测试之JMeter初探

发表于:2017-9-30 14:53

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

 作者:Anna    来源:搜狗测试

  1、JMeter安装配置
  1)登录 http://jmeter.apache.org/download_jmeter.cgi ,下载与自己的平台相对应文件;
  2)安装JDK(1.6以上),配置环境变量JAVA_HOME(C:\Program Files\Java\jdk1.7.0_17) Path(%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin)CLASSPATH(.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar),通过javac和java -version验证开发环境是否配置成功;
  3)将下载Jmeter文件解压,双击/bin/jmeter.bat运行Jmeter。
  2、使用JMeter建立接口测试
  【需求】某组机器是Android和iOS输入法接口服务器,有很多重要的接口,例如:升级,网络开关,热词等。现在有3台机器过保要下线,新申请了3台机器,需要验证一下这3台机器接口的正确性。
  【测试步骤】
  1)确认接口
  首先从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。
  如果当前项目没有接口文档,则可以使用fiddler对APP进行抓包确认。在手机上对APP进行操作,然后在Fiddler中可以抓取对应的网络交互信息。在抓取的信息中可以看到接口请求方式、接口请求URL、接口请求参数、接口返回参数。
  2)在JMeter中创建测试用例
  ①在测试计划中添加一个线程组(在测试计划上右击,添加-Threads-线程组)
  测试计划:包含一个测试的所有内容,包含所有的控件,属性,变量。所以一个jmx文件中只有一个测试计划。注意:可将一些不常变化的数据存入测试计划的变量,方便在测试计划内调用(例如服务器ip,端口等)。
  线程组:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。注意:线程间变量相互独立。一个测试计划内可以包含多个线程组。
  可定义内容:取样器错误后要执行的动作设置为继续,即继续执行线程;线程数设置为1;Ramp-Up Period即所有线程启动的时间,单位s,如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,通过这个参数可以设置每个线程间的启动间隔,防止给电脑造成太大性能压力,这里设置为1s;循环次数设置为1,如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止运行脚本;
  ②在测试计划中添加HTTP请求默认值(在测试计划上右击,添加-配置元件-HTTP请求默认值)
  将服务器IP和协议等一些不常变化的数据存入测试计划的变量,这样可以避免在其他请求中设置同样的变量,同时便于修改服务器IP,如本次需求中需要测试三个服务器的接口,只需要修改HTTP请求默认值中的服务器IP即可使其他请求的服务器IP都生效。
  ③在线程组中添加HTTP请求(在线程组上右击,添加-Sampler-HTTP请求)
  将名称改为待测接口的名称;因在HTTP请求默认值中设置过请求服务器IP和协议,此处不需要再设置即可生效;在方法中选择HTTP请求的方法,我们项目中的接口方法使用的主要是GET和PUT;在路径中填入接口请求的URL;请求参数如果是GET方法的请求,请求参数直接写在URL后面即可;如果是POST的方法,则需要在Body Data中填入包含请求参数的数据。
  ④在HTTP中添加HTTP信息头管理器(在HTTP请求上右击,添加-配置元件-HTTP请求信息头管理器)
  定义信息头,在其覆盖下的所有元件都会使用该信息头,例如定义在测试计划中的信息头,即该测试计划所有请求的信息头。在该案例中,因每个请求头信息可能不一致,所以在HTTP请求上添加HTTP请求信息头而非测试计划和线程组中添加。
  ⑤ 添加监听器(在线程组上右击,添加-监听器-察看结果树)
  主要配置完成了,需要添加监听器以查看测试结果。这里使用察看结果树查看。
  察看结果树:在结果树中会以树形结构展示每个接口请求的测试结果,包括取样器结果、请求、响应数据,在响应数据中可看到网络侧返回的数据,可以以接口文档中期望返回的参数做比较以判断返回是否正确。在结果树中通过颜色可以直观的看到接口测试的结果,绿色为通过,红色为失败。
  3)用例生成与导出
  Jmeter的用例格式为jmx文件,实际为xml格式。
  ●生成原则:
     ①每个功能模块为一个独立的jmx文件。增加可维护性(尽量不要将一个jmx文件放入太多功能,后期维护成本会很高);
      ②模块的私有变量保存在模块中,多模块共有的(例如服务器ip端口等)可以考虑存在单独的文件中读取。
      ③接口测试不要放太多线程。
  ●导出方法:
      ①编写测试用例
      ②文件——保存为——确定:
  4)JMeter运行模式及参数
  ●GUI模式
      打开已有的jmx文件(文件——打开),点击启动按钮运行
  ●命令行模式
      ①依赖:配置jmeter环境变量,将${jmeterhome}/bin加入Path变量;
      ②如果未加入环境变量,在执行的时候可以直接给出全路径或                      在${jmeterhome}/bin下执行。
  命令:JMeter -n -t <testplan filename> -l <listener filename>
  参数:
  ●-h 帮助 -> 打印出有用的信息并退出
  ●-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
  ●-t 测试文件 -> 要运行的 JMeter 测试脚本文件
  ●-l jtl文件 -> 记录结果的文件
  ●-r 远程执行 -> 启动远程服务
  ●-H 代理主机 -> 设置 JMeter 使用的代理主机
  ●-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
  ●-j 日志文件->设置JMeter日志文件的名称
  举例:JMeter -n -t Interface.jmx -l InterfaceLog.jtl
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号