jenkins接口测试

基于Jmeter 工具的接口测试

1、Jmeter 工具的安装

1.1安装步骤:

l安装环境:Windows XP

l安装包准备:

JDK1.7.0_09(具体见附件)具体可在官方网站下载

apache-jmeter -2.11(具体见附件)具体下载地址:

http://jakarta.apache.org/site/downloads/downloads_jmeter .cgi

1.2安装过程:

1.2.1 JDK安装

1)点击下载的jdk-7u9-windows-x64.exe,选择安装路径即可。

2)JDK环境配置

桌面上选择“我的电脑”(右键)/高级/环境变量, 在“系统变量”栏中点击“新建”, 在变量名中输入:CLASSPATH,变量值中输入:C:\JDK安装目录\lib\dt.JAR; C:\JDK安装目录\lib\TOOLS.JAR;点击确定即可。

再按“新建”,在变量名中输入:java_home,变量中输入:C:\JDK安装目录;修改PATH变量,添加% java_home %\bin;然后确定即可。

修改系统变量path的值,在前面增加%java_home%\bin;然后确定即可。

3)检查JDK安装是否OK

具体是:点击“开始”/“运行”,输入命令cmd进入dos操作界面,输入命令:java–version 查看java版本,如果显示为:1.7.0_09,则安装OK。

1.2.2 Jmeter 安装

解压apache-jmeter -2.11文件至c盘,本文解压至C:\

apache-jmeter -2.11目录下。

桌面上选择“我的电脑”(右键)/高级/环境变量, 在“系统变量”栏中点击“新建”, 在变量名中输入:JMETER _HOME,变量值中输入:C:\ apache-jmeter -2.11,点击确定即可。

再修改CLASSPATH变量,变量值中添加如下值:

%JMETER _HOME%\lib\ext\ApacheJmeter

_core.jar;%JMETER _HOME%\lib\jorphan.jar;%JMETER _HOME%\lib\logkit-2.0.jar; 然后确定即可。

检查jmeter 安装是否OK

具体是:进入jmeter 目录下的bin文件夹,双击jmeter .bat,查看页面显示,如果能显示jmeter操作页面则安装成功。

2、Jmeter 接口测试入门

2.1 接口的介绍

接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。从形式上来看各种应用程序的API(最著名的Windows 系统的API),硬件的驱动程序,数据库系统的访问接口,再到后来的Webservice接口,http rest接口。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。经历有限,本篇文章主要介绍http REST接口从功能角度出发,怎么做测试。

因为REST类型的接口已经越来越成为互联网行业通用的接口表现形式,它在使用过程中不受调用客户端语言的限制,在网络传输过程中不需要传递强类型的对象,仅仅通过网络传递字符串。基于上述特点,REST协议的接口成为了互联网中接口协议最为常用的接口方式。所以我们在这里主要介绍REST协议的接口测试。

首先来认识一下什么是REST 接口。REST Web 服务(也称为RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:URI,比如:http://example.com/resources/。Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。Web服务在该资源上所支持的一系列请求方法(比如:POST/提交数据,GET/查询,PUT/更新或DELETE/删除)。通过上面的定义我们就能准确的知道REST接口其实就是一个Web请求,和你访问一个Web页面请求是没有任何区别的。所以大家在认识接口的时候完全可以把REST接口当做是一个Web页面请求。

2.2 接口测试准备

从测试策略上来说我们测试接口是基于业务来测试,和从UI端做功能测试是一样的,都是测试功能业务,只不过我们更进一步使用接口来测试。测试实现上来说,REST接口是一个Http请求,所以对接口的测试主要是通过发送http请求,通过对比返回值来测试返回的结果是不是和我们期望的一致。

从项目角度来说,接口测试的第一步是要了解清楚和项目相关的信息。这里所说的项目信息包括以下几个方面:接口开发人员是谁、接口开始开发和结束的时间、测试环境信息、数据库相关信息、需求文档,接口API文档;除了要获取信息外,还需要和开发人员,产品达成一些共识,这些共识包括:第一次提测接口的时间、可测接口的提交频率、 Bug解决方式等。

 我们来说说这些信息,对我们来说有什么用处。开发人员,项目开始结束时间这些信息从项目角度来说,是必须的。你需要知道在测试过程中和谁交互沟通,你需要根据项目开始结束时间来安排资源。测试环境,数据库信息这些是我们接口测试的基础。需求文档,API文档这是我们接口测试的依据。第一次提测时间,是我们开始投入资源测试的时间,接口提交频率决定了我们能否在开发完成的同时完成测试。(这里说的同时是指开发在提交最后一批接口时完成了前面所有接口的测试)。开发提交可测接口的频率过低,会导致测试介入过晚。从而不能完成测试。提测频率过高,有可能会影响开发的效率。

2.3 接口测试流程【GUI】(结合【公共服务平台项目】实例进行介绍)

2.3.1 接口API文档

上面章节中说到过接口API文档是我们接口测试的依据。开发会将接口API文档上传到项目的SVN中,通过该接口API文档,我们可以获取业务中各个接口URL、请求方式、请求参数、返回参数

2.3.2 理解业务逻辑

从图1中的API文档,我们可以得到定义该接口的目的是通过请求该URL,返回业务中活动列表信息、以及结果标识和返回结果说明。请求方式为GET,请求的参数包括:当前页和每页大小。

从图2中的API文档,我们可以得到定义该接口的目的是通过请求该URL,返回业务中的医生列表信息、以及结果标识和返回结果说明。请求方式为POST,请求的参数为jason串形式。

2.3.3 编写测试用例

我们再从测试的角度来说说在测试开始前应该做哪些事情。我们从开始就一直说的是接口测试,而且也说明白了接口测试其实是在做业务的测试。所以接口测试要想做好,有一项工作是基础。我们必须设计测试用例。设计测试用例的依据对于接口测试来说,主要是根据需求文档和接口API文档,通过以下测试要点编写测试用例。

参数(合法/不合法、必填/非必填、null、超长、特殊字符)

功能逻辑(正常请求、错误逻辑)

异常情况处理(400/404/500)

这里我们根据上一节中的接口文档,结合测试要点,编写这两个接口对应的测试用例。

2.3.4 执行测试用例

双击打开apache-jmeter -2.11\bin路径中的jmeter .bat文件,注意启动后的dos窗口不能关闭,在弹出的jmeter 操作页面中进行接口测试。

【步骤1】添加一个线程组

    在左侧“测试计划”中右键,选择添加-Threads(Users)-线程组(见下图)。

【步骤2】在刚添加的线程组中创建一个Sampler/Http请求(见下图)。

【步骤3】选择新建的http请求,设置服务地址、端口、请求uri、请求参数等。

(1)GET请求

 对GET的请求类型,我们将请求的参数PIN在请求路径的后面即可(见下图),表示请求从第1页开始,每页返回10条数据;

(2)POST请求

对于POST的请求类型,我们将请求的参数写入到Body Data中(见下图)。

由于该服务接口仅接受json格式数据,需要设定header信息。此时我们在线程组中添加Http信息头管理器(见下图)。

添加Content-Type参数,值为application/json,如下图:

【步骤4】添加察看结果树。

添加“察看结果树”用来展示API请求结果及响应断言验证结果(见下图)。

【步骤5】发送http请求。

2.3.5 察看返回结果

点击左侧的查看结果树,即可进入查看结果树页面(如下图)。

对于返回的数据,我们不能仅仅根据返回的结果标识来判断是否正确,还需结合业务内容来判断返回的数据信息是否正确。

有时我们需要对验证返回的结果进行断言,验证返回的json数据中包含xxx。此时我们可以通过添加断言来处理。具体操作如下:

(1)添加断言

在添加的线程组右键,选择添加-断言-响应断言。如下图:验证请求的医生接口中返回的json数据是否包含”李敏“。

(2)添加断言结果

     在添加的线程组右键,选择添加-监听器-断言结果(如下图),点击运行,如果返回的结果包含“李敏”信息,则返回定义线程组名称-医生查询。

 如果返回的结果不包含“李敏”信息,此时我们修改要测试的模式中数据为:李敏656565。在查看结果树中看以看到断言结果:Assertion failure message: Test failed: text expected to contain /李敏656565。



使用jmeter 工具注意点:

使用jmeter 工具是有时会遇到jmeter 应答体(应答要素)乱码,可通过如下办法进行解决。

(1)   修改apache-jmeter -2.11\bin路径下的jmeter .properties文件;

(2)把ISO-8859-1修改为utf-8格式;

(3)保存jmeter .properties 并重新启动jmeter .bat即可;

2.4 【非GUI】命令行方式

使用非 GUI 模式,即命令行模式运行Jmeter 测试脚本能够大大缩减所需要的系统资源。具体操作如下:

(1)进入apache-jmeter -2.11\bin目录下;

(2)执行jmeter –n –tsmartXY_Demo.jmx –l logfile.jtl –H 192.168.57.177 –P18080

(3)执行结果可以使用 GUI 模式下的聚合报告查看

     打开 Jmeter GUI界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击"所有数据写入一个文件"下的 "浏览..." 按钮找到你刚生成的 jtl 文件就可以对执行结果进行直观分析了。

Tips

jmeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。比如你在 C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,jmeter 会去该目录下寻找smartXY_Demo.jmx脚本并把执行结果放在该目录。如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉 Jmeter,比如:

各参数含义如下:

 -n非 GUI 模式 -> 在非 GUI 模式下运行Jmeter

-t 测试文件 -> 要运行的Jmeter 测试脚本文件

-l 日志文件 -> 记录结果的文件

-r 远程执行 -> 启动远程服务

-H 代理主机 -> 设置Jmeter 使用的代理主机

-P 代理端口 -> 设置Jmeter 使用的代理主机的端口号

2.5 压力测试

【步骤1】启动jmeter.bat,添加一个线程组。

【步骤2】设置线程组中各参数值。如下图:

其中,线程数是指要启动多少个线程进行测试,Ramp-Up Period指的是在10秒内平均启动这些线程,即一秒钟启动10个线程,循环次数是循环多少次这样的测试,选中永远的话需要强制终止测试。调度器主要是一些启动时间上的设置。

【步骤3】选择新建的http请求,设置服务地址、端口、请求uri、请求参数等。

【步骤4】添加图表分析监听器。(添加-断言-图形结果)

【步骤5】执行压力测试。(点击执行后,选择图形结果)执行结果见下图:

图表底部参数的含义如下:样本数目是总共发送到服务器的请求数。最新样本是代表时间的数字,是服务器响应最后一个请求的时间。吞吐量是服务器每分钟处理的请求数。平均值是总运行时间除以发送到服务器的请求数。中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

也可通过表格查看结果,选择添加-监听器-用表格查看结果,然后设置“用表格查看结果”的主要参数,点击“Configure”按钮,在弹出的窗口中选中“Save Response Data” 项,以保存响应数据。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,086评论 0 16
  • 哈哈,拆第一件礼物,今晚部门聚餐,有位同事,有自己的奋斗目标离职了,祝他心想事成。今天整个过程,让我想起了国玲及国...
    哈哈小石头阅读 204评论 0 2
  • 十月的平原被清空 玉米秸都被粉碎,然后旋耕入土 散落沟壑,多么广袤的 原野,连接它们的是麦田 大片的冬麦 把村庄拉...
    王春涞阅读 239评论 13 19
  • 雨中独行 2013-2-8 16:25 找不到童年那浓浓的年味
    夕阳在山阅读 196评论 0 0