1、JMeter安装配置

  1. )登录 http://jmeter.apache.org/download_jmeter.cgi ,下载与自己的平台相对应文件;
  2. )安装JDK(.6以上),配置环境变量JAVA_HOMEC:\Program Files\Java\jdk1..0_17 Path(%JAVA_HOME%\bin;%JAVA_HOME%\jre\binCLASSPATH(.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar),通过javacjava -version验证开发环境是否配置成功;
  3. )将下载Jmeter文件解压,双击/bin/jmeter.bat运行Jmeter

2、使用JMeter建立接口测试

  1. 【需求】某组机器是AndroidiOS输入法接口服务器,有很多重要的接口,例如:升级,网络开关,热词等。现在有3台机器过保要下线,新申请了3台机器,需要验证一下这3台机器接口的正确性。
  2. 【测试步骤】
  3. )确认接口
  4. 首先从开发人员那里获取接口文档,接口文档应该包括完整的功能接口、接口请求方式、接口请求URL、接口请求参数、接口返回参数。
  5. 如果当前项目没有接口文档,则可以使用fiddlerAPP进行抓包确认。在手机上对APP进行操作,然后在Fiddler中可以抓取对应的网络交互信息。在抓取的信息中可以看到接口请求方式、接口请求URL、接口请求参数、接口返回参数。
  6. )在JMeter中创建测试用例
  7. ①在测试计划中添加一个线程组(在测试计划上右击,添加-Threads-线程组)
  8. 测试计划:包含一个测试的所有内容,包含所有的控件,属性,变量。所以一个jmx文件中只有一个测试计划。注意:可将一些不常变化的数据存入测试计划的变量,方便在测试计划内调用(例如服务器ip,端口等)。
  9. 线程组:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。注意:线程间变量相互独立。一个测试计划内可以包含多个线程组。
  10. 可定义内容:取样器错误后要执行的动作设置为继续,即继续执行线程;线程数设置为1Ramp-Up Period即所有线程启动的时间,单位s,如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/=25秒,通过这个参数可以设置每个线程间的启动间隔,防止给电脑造成太大性能压力,这里设置为1s;循环次数设置为1,如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止运行脚本;

  1. ②在测试计划中添加HTTP请求默认值(在测试计划上右击,添加-配置元件-HTTP请求默认值)
  2. 将服务器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端口等)可以考虑存在单独的文件中读取。

③接口测试不要放太多线程。

  • 导出方法:

①编写测试用例

②文件——保存为——确定:

4JMeter运行模式及参数

  • 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

接口测试之JMeter初探的更多相关文章

  1. 老李分享:接口测试之jmeter

    老李分享:接口测试之jmeter   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.移动端自动化测试很多人把他仅仅理解成appu ...

  2. WEB接口测试之Jmeter接口测试自动化 (一)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  3. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  4. WEB接口测试之Jmeter接口测试自动化 (二)

    通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-http请求中,固定的测试环境跑起来也还 感觉良好.不料在新服务器环境中跑用例时,问题来了:修改参数维护脚本等成 ...

  5. WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)

    转载:    http://www.cnblogs.com/chengtch/p/6105231.html 通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-ht ...

  6. WEB接口测试之Jmeter接口测试自动化 (四)

    Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具.将这三者结合起来可以搭建一套webservice接口测试的持续构建环境.   1. ...

  7. WEB接口测试之Jmeter接口测试自动化 (三)

    接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍了 ...

  8. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动

    转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...

  9. WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)

    转载http://www.cnblogs.com/chengtch/p/6145867.html  Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkin ...

随机推荐

  1. 递归 - 求 n 个球中取 m 个不同的球,有多少种取法?

    代码: #include <iostream> using namespace std; int F(int _n, int _m) { if(_n < _m) return 0; ...

  2. C++ vector清空元素的三种方法

    #include <iostream> #include <vector> using namespace std; //STL vector的几种清空容器(删除)办法 voi ...

  3. SharePoint 2013 Support for Windows Server 2012 R2

    Summary Currently, Microsoft SharePoint Server 2013 is not supported for installation on computers r ...

  4. Qt中QString::toStdString().c_str() 偶尔存在问题

    假设 QString str = "string"; const char* c = str.toStdString().c_str()单步调试显示的结果可能会是'\0' 而当我这 ...

  5. 3D引擎Axiom的选择与学习.

    经过前面针对OpenGL的一些特性的学习,越发觉得要学的更多,相关如LOD,各种阴影实现,场景管理如BSP与Octree等以及还没听过的各种的实现.有感自学的进度太慢,并且在做一些小DEMO时,心中不 ...

  6. pandas 的算术运算和数据对齐

    pandas 还有一个重要的功能,就是他可以对不同索引的对象进行算数运算.对象相加, 如果存在不同的索引对,则结果的索引就是该索引对的并集. 先来个例子 Series In [33]: s1 = Se ...

  7. 大型网站的SEO引爆点

    网站越大,SEO服务做起来就轻松,因为大型网站都有很好的执行团队,你只需要找准他们网站的SEO爆破点,就能够迅速获得非常理想的SEO效果.本文将结合我最近两年的几个经典案例:腾讯拍拍.金山爱词霸.中青 ...

  8. Hessian示例:Java和C#通信

    一个简单的利用Hessian在Java和C#之间通信的例子,服务端为Java,客户端为C#. 资源下载 先要准备好C#和Java的第三方类库:http://hessian.caucho.com/ Hs ...

  9. python shlex 模块

    shkex 模块最常见的用法就是其中的split 函数,split 函数提供了和shell 处理命令行参数时一致的分隔方式 代码示例: shlex.split("python -u a.py ...

  10. R 语言消除pdf图片的空白

    pdf 函数中,有一个参数onefile ,  默认值为TRUE, 表示每张图片占用pdf 中的一页 当遇到pdf的前几页为空白时,是因为画图的代码产生了几张空白的图片 如果要消除前面的空白,只需要设 ...