浅谈断言之HTML断言

浅谈断言之HTML断言

JMeter的HTML断言是一种用于验证响应数据是否包含预期HTML内容的功能。它通过比较响应中的HTML代码与用户定义的规则来判断请求是否成功。这对于确保Web应用返回的页面内容符合预期非常有用,尤其是在自动化测试和性能测试场景下。下面是一份关于如何在JMeter中配置和使用HTML断言的详细指南。

什么是HTML断言?

HTML断言是JMeter提供的一种断言类型,主要用于验证服务器响应中是否包含特定的HTML标签或文本内容。通过精确匹配或模式匹配的方式,它可以检查响应数据是否符合预期的HTML结构或内容,从而判断请求是否成功执行。

何时使用HTML断言?

● 验证页面元素:当你需要确认网页上某个元素(如特定的文本、图片、链接等)是否存在时。
● 检查页面结构:适用于需要验证页面的HTML结构是否正确,比如某个div标签是否被正确渲染。
● 功能回归测试:确保在进行软件更新或修改后,关键的HTML内容没有被意外更改或删除。

如何添加HTML断言?

  1. 打开JMeter测试计划:首先,打开或创建你的JMeter测试计划。
  2. 选择请求添加断言:在测试计划中,找到你想要添加断言的HTTP请求(或其他类型的请求),右键点击该请求,选择“添加” -> “断言” -> “HTML断言”。
  3. 配置HTML断言:添加后,你会看到HTML断言的配置界面。主要配置项包括:
    ○ Tidy Settings:Tidy 环境配置,其中Tidy是一个基于HTML的语法检查器以及打印工具,它可以将HTML转换为XML类型的文件。
    ○ Doctype:文档类型,通过下拉框选择不同文档类型,其中 omit表示疏忽遗漏、auto表示动态,strict表示严格以及loose)
    ○ Format:文件格式,通过选择HTML/XHTML/XML三种类型的文件格式来检查返回内容
    ○ Errors only:误差校正,勾选该选项,则可以忽略Warning,此时只对误差进行统计检查;如果返回内容的检查结果超过指定数据,则断言失败。
    ○ Error threshold:误差/错误范围,填写最大的接受值
    ○ Warning threshold:警告范围,填写最大的接受值
    ○ 将JTidy报告写入文件:写入JTidy报告的文件路径,JTidy是Tidy的一个java移植,可理解为一个处理HTML文件的DOM解析器

应用实例

首先我们使用SpringBoot框架编写一段测试代码接口

//html
@GetMapping(value = "/html",produces = "application/html")
    public String Returnhtml() {
        return "<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>简单表单提交界面</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "    <h1>欢迎来到我们的简易表单</h1>\n" +
                "    <form action=\"/submit_form\" method=\"post\">\n" +
                "        <label for=\"name\">姓名:</label>\n" +
                "        <input type=\"text\" id=\"name\" name=\"name\"><br><br>\n" +
                "        <label for=\"email\">电子邮件:</label>\n" +
                "        <input type=\"email\" id=\"email\" name=\"email\"><br><br>\n" +
                "        <label for=\"message\">消息:</label>\n" +
                "        <textarea id=\"message\" name=\"message\"></textarea><br><br>\n" +
                "        <input type=\"submit\" value=\"提交\">\n" +
                "    </form>\n" +
                "</body>\n" +
                "</html>";
    }

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

线程组:保持默认
HTTP信息头管理器:名称设置为accept,值为application/html
HTTP请求:协议设置为http,服务器名称或IP设置为127.0.0.1,端口设置为8091,方法设置为GET,路径设置为/html,内容编码为utf-8
HTML断言:Doctype设置为auto,Format选择auto,勾选Errors only,Error threshold为0,将JTidy报告写入文件,路径设置为:C:\Users\XXXX\Desktop\test.txt
运行结果,查看结果树中是否成功,http请求断言成功,不显示断言的结果
在这里插入图片描述

但是打开保存的路径中的内容信息可以得到如下报告

line 4 column 5 - Warning: lacks “content” attribute
InputStream: Doctype given is “”
InputStream: Document content looks like HTML 4.01 Transitional
1 warning, no errors were found!

注意事项

● 性能影响:使用HTML断言会增加每个采样的处理时间,特别是在使用复杂正则表达式时。因此,在大规模性能测试中应谨慎使用。
● 精确性与灵活性:正则表达式的使用可以提高匹配的灵活性,但同时也要求更高的编写精确度,避免误报或漏报。
● 响应编码:确保考虑响应的字符编码,特别是当断言涉及到非ASCII字符时,可能需要调整JMeter的编码设置以正确处理响应数据。

总结

通过合理配置和运用HTML断言,你可以有效地验证Web应用的响应内容,确保其按照预期工作,提升测试的准确性和效率。

相关推荐

  1. 断言assert

    2024-07-23 07:36:06       47 阅读
  2. postman断言

    2024-07-23 07:36:06       56 阅读
  3. Python断言

    2024-07-23 07:36:06       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 07:36:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 07:36:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 07:36:06       87 阅读
  4. Python语言-面向对象

    2024-07-23 07:36:06       97 阅读

热门阅读

  1. 【git】github中的Pull Request是什么

    2024-07-23 07:36:06       26 阅读
  2. AI学习指南机器学习篇-SOM的进化与改进

    2024-07-23 07:36:06       30 阅读
  3. 驱动开发系列07 - 驱动程序如何分配内存

    2024-07-23 07:36:06       22 阅读
  4. C++链表

    C++链表

    2024-07-23 07:36:06      21 阅读
  5. “微软蓝屏”事件暴露的网络安全问题

    2024-07-23 07:36:06       28 阅读
  6. 【SpringBoot】第3章 系统配置之日志配置

    2024-07-23 07:36:06       23 阅读
  7. Hopfield 网络简介

    2024-07-23 07:36:06       28 阅读
  8. 为什么要学习网安技术?

    2024-07-23 07:36:06       21 阅读