jmeter接口测试-17XPath关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter接口测试-17XPath关联相关的知识,希望对你有一定的参考价值。

参考技术A

在Jmeter中,除了正则表达式可以用作关联,还有一种方式也可以做关联,那就是 XPath Extractor。它是利用xpath提取出关键信息,传递变量。

具体用法

添加一个后置处理器- XPath Extractor

实际操作

以腾讯新闻网为例,我们做一次演练。对腾讯新闻网我们发起一次请求,观察结果。

现在我想利用xpath把这些url都取出来,我们来写一个xpath表达式匹配一下。发现url都被匹配出来了。

.//a[@class=\'linkto\']/@href 具体是什么意思呢?意思就是通过a>class>href这三层标签进行逐级检索,找到class=linkto标签下的所有href,进行匹配

这里如果我想匹配到href标签下的文字标题怎么办?改一下表达式吧-- .//a[@class=\'linkto\'], 我们发现取出来都是标题,后面可以再进行拼接

现在表达式没有问题了,我们将添加的xpath提取器挂在http请求下面。添加一个debug查看结果,可以看到debug中已经获取到了这些url

我们可以添加两个xpath提取器,分别提取url和title进行拼装,运行查看结果

** xpath基本语法**

// [@class,\'A \']/@href 从根目录下定位所有class=A的href*

****//*[@class,\'A \'] **从根目录下定位所有class=A标签内的文本******

******//*[contains(@class,\'A \')] ******从根目录下******@class值中包含A的节点******

******substring-before(.//*[@class=\'A\']/text(),\'0\') 返回根目录下[@class=\'A\']/text()中第一个\'0\'前面的部分,如果不存在\'0\',则返回空值******

********substring-after(.//*[@class=\'A\']/text(),\'0\') 返回根目录下[@class=\'A\']/text()中第一个\'0\'后面的部分,如果不存在\'0\',则返回空值********

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就可以了,至于怎么用可以看我上一篇文章,报告预览:

 

以上是关于jmeter接口测试-17XPath关联的主要内容,如果未能解决你的问题,请参考以下文章

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

如何用jmeter测试关联接口

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

小白必看,接口测试神器 Jmeter 如何实现测试关联 | 技术

jmeter 如何运行java程序并将程序结果关联到接口中

jmeter接口测试----11关联