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

java 复制代码
//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应用的响应内容,确保其按照预期工作,提升测试的准确性和效率。

相关推荐
web1350858863513 分钟前
前端node.js
前端·node.js·vim
m0_5127446414 分钟前
极客大挑战2024-web-wp(详细)
android·前端
潜意识起点38 分钟前
精通 CSS 阴影效果:从基础到高级应用
前端·css
奋斗吧程序媛42 分钟前
删除VSCode上 origin/分支名,但GitLab上实际上不存在的分支
前端·vscode
IT女孩儿1 小时前
JavaScript--WebAPI查缺补漏(二)
开发语言·前端·javascript·html·ecmascript
m0_748256563 小时前
如何解决前端发送数据到后端为空的问题
前端
请叫我飞哥@3 小时前
HTML5适配手机
前端·html·html5
@解忧杂货铺5 小时前
前端vue如何实现数字框中通过鼠标滚轮上下滚动增减数字
前端·javascript·vue.js
F-2H7 小时前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
WebDeveloper20017 小时前
如何使用美国域名中心US Domain Center和WordPress创建商业网站
运维·服务器·css·网络·html