jmeter 单接口测试方案(接口无业务关联)

前言

前面开了一篇讲了Jenkins+jmeter+ant的使用,但没有说到具体怎么投入到项目使用,主要介绍了接口测试定义,流程和环境部署,所以我今天要说的就是我是怎么将这个方案投入到实际中使用的。这套方案主要用于相互接口之间无业务关联的测试。

结构设计与数据准备

接口测试的流程

  1、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档
  2、 获取接口测试文档后,就可以进行接口用例的编写和调试
  3、 接口用例编写调试完成后,部署到持续集成的测试环境中,
  4、 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控
  5、 每日进行接口脚本的维护更新,接口异常的处理

jmeter测试过程

jmeter+jmeter+ANT 整体结构设计

测试数据

我的测试数据是用CSV管理的,包含域名、url、方法(get还是post)、 参数 、预期结果(可以是多个),使用excel创建然后转化程csv格式,这样一来我们只需要在excel中维护我们的用例就好了

从数据格式可以看出,做了用例的执行标识,选中为YES时才执行,NO时不执行,这是一个用例选择执行的简单设计,还有请求的方法也是可以选择的,目前项目中的主要用POST和GET,除此之外之后要获取的还有用例名,调用的接口和具体的测试请求数据,这就是使用excel管理测试用例的模块

 注意:包含中文字符jmeter取值可能会报错,修改${jmeterhome}/bin/jmeter.profile 

# The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8

配置基本完成,之后就是项目的目录架构:

  1. ./Test_Play/目录用来放Jmeter生成的Case文件(编写时注意,不要用绝对路径,否则后续维护成本会提高)
  2. ./Test_suit/目录用来放Jmeter测试需要的相关配置文件
  3. ./资源/目录用来存放项目相关的一些文档信息
  4. build.xml文件,Ant的配置文件
  5. 阅读build.xml文件,会发先还有一个自动生成的目录./report,该目录下有两个目录jtl以及html,用来放置不同格式的测试报告。

脚本设计

添加一个CSV Data Set Config,把我们的文本路径填进去

添加BeanShell PreProcessor和BeanShell PostProcessor,主要 目的是为了处理中文乱码

添加if控制器,根据case_satus判断该条用例是否执行,根据Ament判断是HTTP请求还是JAVA请求,根据method,来判断执行get还是post的请求

设置断言,判断我们的结果是否正确

根据用例数,设置循环次数

  • 可使用java直接取值判断有多少条用例进行执行
  • String filename=vars.get("JF_API_data");
    String [] datalist=new String[20];
    String content;
    InputStream openfile = new FileInputStream(filename);
    Workbook wb = Workbook.getWorkbook(openfile);
    Sheet FirstSheet = wb.getSheet(0);
    int totalRows=FirstSheet.getRows();
    int rows=totalRows-1;    //减1是因为我标题行不取,为了后面从第二行开始取
    String data=rows.toString();
    vars.put("row",data);   //用例行数
    wb.close();
    

     

运行调试,查看结果

接入jenkins

脚本设计完以后,接入jenkins用ant去执行jmx就可以了,至于怎么用可以看我上一篇文章,报告预览:

时间: 2024-11-05 02:27:49

jmeter 单接口测试方案(接口无业务关联)的相关文章

Jmeter用于接口测试中,关联如何实现

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本,新建一个测试计划,在测试计划里新建一个线程组,新建一个登录的http请求,如图所示: 2.查看登录返回的结果: 3.充值接口需登录后才能操作,此时可以使用cookie方式,验证此用户已经登录,在充值接口里添加cookie管理器: 这里的sign就是上一个登口接口返回的sign值, 4.在登录请求下

接口测试和运用jmeter做接口测试

1.接口测试简介 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等.不同语言之间用json进行交互 测试接口返回的是jeson串,例如: { "name":'wjx' "age":1 }  字符两边用双引号进行连接,中间用冒号进行隔开 接口文档的作用,主要概述:1.功能描述   2.请求地址:url地址,分为域名和路径   3

JMeter学习笔记15-如何用JMeter做接口测试

本文介绍JMeter如何做web service测试,一般来说web服务,一般指的是HTTP请求相关的内容.这里就介绍一下如何利用JMeter做基于HTTP的web接口测试.接口也叫API(Application Programming Interface),很多我们使用的各种APP,上面的内容显示大部分都调用后台web服务器的接口,有些是网站的接口,有些是solr的接口. 什么是接口? 我们这里举例一个生活中场景来帮助你理解接口.加入你去餐馆点餐,看了菜单,告诉服务员,你要一个宫爆鸡丁,过一会

无业务不伸缩,云计算有ESS

无业务不伸缩,云计算有ESS 一名网工的情怀 从初出茅庐到资深网工也用了十年时间吧,在专业的运维公司呆过.在政府外包单位干过.再到生产型企业最后在化工行业.有过泪.有过痛,辗转多年见过形形式式的人和事一转眼又过去了数年,从去年开始暗下决心开始进行新知识的学习和储备学习了Cisco运营商,学习了OCP.直到有一天听说了阿里云大学才知道原来云计算还可以这么玩--这段时间在阿里云计算的班教.导师指导下终于完成了教学内容和考试,在此特别感谢云大学里的那些认真负责的教辅人员感谢他们半夜十一点还在为我们解惑

Jmeter+Maven+Jenkins+Git接口自动化流程

最近在实现 Jmeter+Maven+Jenkins+Git 接口自动化,研究不到两周,实现了 Jmeter+Maven+Jenkins+Git  接口自动化 的整体流程. 仅以此博客简单记录下自己实现的过程. 一. 职责.角色明确 Jmeter: 执行者,录制接口测试脚本,运行脚本,得到结果,生成报告,统计数据: Maven,Git :管理者, Maven 主要负责项目的依赖管理,Git 主要负责项目的代码管理: Jenkins:调度者,持续集成(CI)工具:构建.部署自动化:可以持续编译,运

免费物流快递单号查询接口快速对接指南

[场景需求描述] 电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开"我的订单"时调用此API显示物流信息详情,电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题,电商平台对商家物流管控,要求必须在多久快递必须发出要看到揽件状态,多久必须收到货物看到签收状态,根据这些状态对商家管控从而提高用户的整体满意度.下图是电商平台.买家.商

常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰.圆通.中通.天天.韵达.德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递.第一种耗费时间长,但是是直接和快递公司合作,第二种虽然是间接对接,但是对接简便,对后期的接口维护可以省很多时间和人力成本. 集成接口还有其他公司提供,有其他需要可以去找,快递鸟其实能满足电商.ERP系统商这些企业需求了.这里就以快递鸟为例说说对接方法. 快递鸟物流查询接口有免费和收费版本,对接周期大概在一天左右,他们有写好的demo,可以直接

jmeter进行接口测试

测试接口,postman和jmeter是用得最频繁的工具,特别是jmeter,支持很多种协议,除了测功能,还能做自动化测试和性能测试(更多内容,请参考:https://www.cnblogs.com/uncleyong/category/881242.html). 下面主要介绍jmeter测试http协议接口的用法,包含get,post(form-data,json,上传文件,cookie). jmeter--get请求 参数拼接在url后面 响应结果 参数也放参数列表 响应结果 jmeter-

动态添加HTML表单控件,无(runat="server")

JS部分<script> var allChildCount; //整个模块 allChildCount = 1; var sTxt = "<%=htmlselectName%>"; function addChildModel() { allChildCount++; var rown = filetb.rows.length; newRow = filetb.insertRow(rown); newRow.id = "mytdb" + a