浅谈断言之XML Schema断言

浅谈断言之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框架编写一段测试代码接口

java 复制代码
@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信息如下

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格式如下(为了演示方便提前设置好改内容):

xml 复制代码
<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接口的一致性和稳定性至关重要。

相关推荐
冰水°3 小时前
2.5_XXE(XML外部实体注入)
xml·安全·网络安全·xml外部实体注入·外部实体注入·xml漏洞
爱吃土豆的程序员3 小时前
java XMLStreamConstants.CDATA 无法识别 <![CDATA[]]>
xml·java·cdata
航月11 小时前
yum下载时出现报错 Couldn‘t read a file:// file for file:///mnt/repodata/repomd.xml
xml·linux·运维
qq_4337169513 小时前
编写第一个 Appium 测试脚本:从安装到运行!
自动化测试·软件测试·jmeter·ci/cd·职场和发展·appium·jenkins
土小帽软件测试14 小时前
jmeter基础05_第1个http请求
测试工具·jmeter·软件测试学习
2的n次方_17 小时前
MyBatis——增删查改(XML 方式)
xml·数据库·mybatis
萧鼎1 天前
【Python】轻松解析JSON与XML:Python标准库的json与xml模块
xml·python·json
scoone1 天前
深入解析TOML、XML、YAML和JSON:优劣对比与场景应用
xml·json
古人诚不我欺2 天前
jmeter常用配置元件介绍总结之前置处理器、测试片段
jmeter
古人诚不我欺2 天前
jmeter常用配置元件介绍总结之用linux服务器压测
linux·服务器·jmeter