浅谈断言之XML Schema断言

news2024/9/22 7:19:02

浅谈断言之XML Schema断言

“XML Schema断言”是一种专门用于验证基于XML的响应是否遵循特定XML Schema定义的标准和结构的断言类型。下面我们将详细探讨XML Schema断言的各个方面。

XML Schema断言简介

XML Schema断言(XML Schema Assertion)允许用户验证HTTP请求或其他类型请求返回的XML响应数据是否符合预定义的XML Schema定义。XML Schema定义了XML文档的结构、数据类型以及元素和属性的合法组合,从而确保XML数据的准确性和一致性。

使用场景

此断言特别适用于那些依赖于标准化XML格式数据交换的Web服务测试,如SOAP服务测试。当你需要验证API响应不仅内容正确,而且结构也严格遵守事先定义好的Schema时,XML Schema断言就显得尤为重要。

配置XML Schema断言

在JMeter中添加XML Schema断言的步骤如下:
● 打开测试计划:首先,在JMeter中打开或创建一个测试计划。
● 选择取样器:右键点击你想要验证响应的HTTP请求或其他类型的请求采样器,选择“添加” > “断言” > “XML Schema断言”。
● 配置断言设置:
○ 名称:为断言提供一个描述性的名称,便于识别。
○ 文件名:浏览并选择包含XML Schema定义的文件。这个文件定义了XML响应应遵循的规则。

断言执行逻辑

当测试运行时,JMeter会将采样器的响应数据与指定的XML Schema文件进行对比。如果响应数据不符合Schema定义(例如,缺少必填元素、元素顺序错误或数据类型不匹配等),则断言失败,JMeter会标记此次请求为错误。
应用实例
首先我们使用SpringBoot框架编写一段测试代码接口

@GetMapping(value = "/xmlschema",produces = "application/xml")
    public String xmlschema() {
        return "<example xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
                "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n" +
                "         xsi:schemaLocation=\"http://www.w3.org/2001/XMLSchema schema.xsd\">\n" +
                "  <name>John Doe</name>\n" +
                "  <age>30</age>\n" +
                "  <email>john.doe@example.com</email>\n" +
                "  <address>\n" +
                "    <street>Main Street</street>\n" +
                "    <city>New York</city>\n" +
                "    <state>NY</state>\n" +
                "    <zipcode>10001</zipcode>\n" +
                "  </address>\n" +
                "</example>";
    }

我们编写如下脚本:
在这里插入图片描述

线程组:保持默认
HTTP信息头管理器:名称设置为accept,值为application/xml
HTTP请求:协议设置为http,服务器名称或IP设置为127.0.0.1,端口设置为8091,方法设置为GET,路径设置为/xmlschema,内容编码为utf-8
运行脚本,我们可以看到返回的xml信息如下

<example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xs="http://www.w3.org/2001/XMLSchema"
         xsi:schemaLocation="http://www.w3.org/2001/XMLSchema schema.xsd">
  <name>John Doe</name>
  <age>30</age>
  <email>john.doe@example.com</email>
  <address>
    <street>Main Street</street>
    <city>New York</city>
    <state>NY</state>
    <zipcode>10001</zipcode>
  </address>
</example>

我们通过上述内容可以知道此xml的Schema格式如下(为了演示方便提前设置好改内容):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="example">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="age" type="xs:integer"/>
        <xs:element name="email" type="xs:string"/>
        <xs:element name="address">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="street" type="xs:string"/>
              <xs:element name="city" type="xs:string"/>
              <xs:element name="state" type="xs:string"/>
              <xs:element name="zipcode" type="xs:integer"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我们将上述Schema内容保存到一个txt文件中,比如:C:\Users\xxx\Desktop\test.txt
XML Schema断言:文件名设置为上述保存的txt路径,即成C:\Users\xxx\Desktop\test.txt
运行结果,查看结果树中是否成功,http请求断言成功,不显示断言的结果,
在这里插入图片描述

故障排查与优化
● 断言失败处理:如果断言失败,检查响应数据与XML Schema定义之间的差异,修正测试数据或调整Schema以匹配实际需求。
● 日志查看:利用JMeter的日志功能可以帮助快速定位断言失败的原因。
● 性能考虑:频繁使用XML Schema断言可能影响测试执行效率,特别是在处理大型XML文件时。确保测试环境的资源充足,并优化Schema以减小验证负担。
总结
XML Schema断言是确保XML数据交互准确无误的重要工具。通过精确地校验响应数据是否满足特定的结构和类型标准,它有助于提升Web服务测试的可靠性和效率。正确配置和运用XML Schema断言,对于维护API接口的一致性和稳定性至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EXO项目解析:pynvml怎么实现监控的,包括什么参数

目录 pynvml怎么实现监控的,包括什么参数 pynvml实现监控的方式 pynvml包括的主要参数 GPU功耗的组成 举例说明 注意事项 EXO项目解析:https://github.com/exo-explore/exo?tab=readme-ov-file 这段代码是一个使用setuptools库编写的Python包安装脚本,主要用于定义和…

std的时间函数——chrono

参考&#xff1a; C 标准库 分数运算&#xff08;ratio库&#xff09; 再也不被时间束缚&#xff1a;C stdchrono时间库全面解析 C11时间类 c11 chrono全面解析(最高可达纳秒级别的精度) C std::chrono库使用指南 (实现C 获取日期,时间戳,计时等功能) 一、std的分数ratio…

Android 防止重复点击

1.第一种方式&#xff1a; private static final int MIN_DELAY_TIME 2000; // 两次点击间隔不能少于2000ms private static long lastClickTime System.currentTimeMillis(); public static boolean isFastClick() { boolean flag true; long currentClickTime …

JMeter接口测试-3.断言及参数化测试

1. 断言 JMeter官方断言&#xff08;Assertion&#xff09;的定义 用于检查测试中得到的响应数据是否符合预期&#xff0c;用于保证测试过程中的数据交互与预期一致 断言的目的&#xff1a; 一个取样器可以添加多个不同形式的断言&#xff0c;根据你的检查需求来添加相应的…

dou dian滑块captchaBody

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi a…

基于生物地理算法的MLP多层感知机优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 生物地理算法&#xff08;BBO&#xff09;原理 4.2 多层感知机&#xff08;MLP&#xff09; 4.3 BBO优化MLP参数 5.完整程序 1.程序功能描述 基于生物地理算法的MLP多层感知机优化mat…

Git之repo sync -l与repo forall -c git checkout用法区别(四十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Java 集合框架:TreeMap 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 021 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

SpringBoot原理解析(二)- Spring Bean的生命周期以及后处理器和回调接口

SpringBoot原理解析&#xff08;二&#xff09;- Spring Bean的生命周期以及后处理器和回调接口 文章目录 SpringBoot原理解析&#xff08;二&#xff09;- Spring Bean的生命周期以及后处理器和回调接口1.Bean的实例化阶段1.1.Bean 实例化的基本流程1.2.Bean 实例化图例1.3.实…

leetcode算法题之接雨水

这是一道很经典的题目&#xff0c;问题如下&#xff1a; 题目地址 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 解法1&#xff1a;动态规划 动态规划的核心就是将问题拆分成若干个子问题求解&#…

相信开源的力量,MoonBit 构建系统正式开源

MoonBit 构建系统正式开源 作为由 AI 驱动的云服务和边缘计算开发者平台&#xff0c;MoonBit 自设计之初便注重工具链与语言的协同效果。MoonBit 为开发者提供了一套开箱即用的工具链&#xff0c;包括集成开发环境&#xff08;IDE&#xff09;、编译器、构建系统和包管理器&…

内网隧道——HTTP隧道

文章目录 一、ReGeorg二、Neo-reGeorg三、Pivotnacci 实验网络拓扑如下&#xff1a; 攻击机kali IP&#xff1a;192.168.111.0 跳板机win7 IP&#xff1a;192.168.111.128&#xff0c;192.168.52.143 靶机win server 2008 IP&#xff1a;192.168.52.138 攻击机与Web服务器彼此之…

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 目录 Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 一、简单介绍 二、共享纹理 1、共享纹理的原理 2、共享纹理涉及到的关键知识点 3、什么可以实现共享 不能实现共享…

越权与逻辑漏洞

目录 越权漏洞 1、越权原理概述 2、越权分类 2.1、平行越权 2.2、垂直越权 3、越权防范&#xff1a; 逻辑漏洞 1、常见的逻辑漏洞 2、逻辑漏洞概述 3、逻辑漏洞防范&#xff1a; 越权漏洞 1、越权原理概述 如果使用A用户的权限去操作B用户的数据&#xff0c;A的权限…

静态路由技术

一、路由的概念 路由是指指导IP报文发送的路径信息。 二、路由表的结构 1、Destination/Mask:IP报文的接收方的IP地址及其子网掩码; 2、proto:协议(Static:静态路由协议,Direct:表示直连路由) 3、pref:优先级(数值和优先级成反比) 4、cost:路由开销(从源到目的…

jQuery下落撞击散乱动画

jQuery下落撞击散乱动画https://www.bootstrapmb.com/item/14767 在jQuery中实现一个下落撞击后散乱的动画效果&#xff0c;你可以结合CSS动画和jQuery的动画函数来完成。不过&#xff0c;由于jQuery本身并不直接支持复杂的物理效果&#xff08;如撞击后的散乱&#xff09;&a…

Nessus-M 暴力破解Nessus漏扫后台登录工具

项目地址:https://github.com/MartinxMax/Nessus-M Nessus-M Nessus漏洞扫描程序登录界面的暴力破解工具 帮助信息 $ python3 nessus-m.py -h 暴力破解 $ python3 nessus-m.py 192.168.101.156 8834 username.txt /usr/share/wordlists/rockyou.txt --protocol https

贪心系列专题篇二

增减字符串匹配 题目 思路 贪心策略&#xff1a;对于[0,n]&#xff0c;当遇到“I”时&#xff0c;把所剩的数中最小的拿来使用&#xff1b; 当遇到“D”时&#xff0c;把所剩的数中最大的拿来使用&#xff0c;最后还剩一个数&#xff0c;放末尾。 代码 class Solution { pu…

sbti科学碳目标倡议是什么

在科学界、工业界以及全球政策制定者的共同努力下&#xff0c;一个名为“科学碳目标倡议”&#xff08;Science Based Targets initiative&#xff0c;简称SBTi&#xff09;的全球性合作平台应运而生。这一倡议旨在推动企业和组织设定符合气候科学要求的减排目标&#xff0c;以…

Nginx 如何处理请求的限速?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 如何处理请求的限速一、为什么需要对请求进行限速&#xff08;一&#xff09;服务器过载&#xff08;二&#xff09;资源竞争&#xff08;三&#xff09;服…