自学内容网 自学内容网

浅谈断言之MD5Hex断言

浅谈断言之MD5Hex断言

“MD5Hex断言”是一种特殊类型的断言,主要用于验证返回数据的完整性和一致性。本文将详细介绍MD5Hex断言的用途、配置方法及应用场景。

MD5Hex断言概述

MD5Hex断言基于MD5(Message-Digest Algorithm 5)算法,这是一种广泛使用的散列函数,可以产生一个128位(16字节)的散列值,通常表示为32位的十六进制数。此算法虽不再被视为安全的加密手段,但在验证数据完整性方面依然有效。MD5Hex断言通过计算响应数据的MD5摘要并与预设的MD5值进行对比,以此判断响应内容是否与预期一致。

应用场景

MD5Hex断言特别适合以下场景:

  1. 内容一致性验证:当响应数据较大或内容可能变化但其MD5摘要应保持不变时。
  2. 安全性较低的验证需求:虽然不推荐用于安全性高的场景,但在一些非敏感数据验证中仍可使用。
  3. 快速比较大量数据:通过比较MD5摘要而非整个数据内容,可以高效地检查数据是否被篡改。

配置步骤

要在JMeter中使用MD5Hex断言,请遵循以下步骤:

  1. 添加断言:首先,在JMeter测试计划中的“Sampler”(采样器)之后,右击选择“Add” > “Assertions” > “MD5Hex Assertion”。
  2. 配置断言:
    ○ MD5HEX: 在此字段输入期望的MD5摘要值(32位十六进制字符串)。这是你希望服务器响应数据计算出的MD5值。

应用实例

首先我们使用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
MD5Hex断言:要断言的MD5HEX内容输入5959696982e4686953f0d9bdf4b579fd,为什么是这个数据呢,我们可以通过上述接口内容知道返回的结果是HTML的,结果如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>简单表单提交界面</title>
</head>
<body>
    <h1>欢迎来到我们的简易表单</h1>
    <form action="/submit_form" method="post">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name"><br><br>
        <label for="email">电子邮件:</label>
        <input type="email" id="email" name="email"><br><br>
        <label for="message">消息:</label>
        <textarea id="message" name="message"></textarea><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

我们将上述内容复制到一个在线的MD5加密工具中进行加密,例如https://www.sojson.com/encrypt_md5.html加密以后的结果可以看到32位加密结果如下
在这里插入图片描述

所以将获得的加密结果放到要断言的MD5HEX内容进行输入
运行结果,查看结果树中是否成功,http请求断言成功,不显示断言的结果,
在这里插入图片描述

注意事项

● 安全性警告:尽管MD5Hex断言可用于数据完整性校验,但鉴于MD5算法的碰撞攻击风险,避免在安全性要求高的场景中使用。
● 响应内容处理:确保MD5Hex断言应用于未经过修改的原始响应数据。如果响应中包含动态内容(如时间戳),需先去除这些动态部分再计算MD5。
● 性能考量:计算MD5摘要会消耗一定资源,对于高并发测试,频繁使用MD5Hex断言可能影响测试效率。

结论

MD5Hex断言是JMeter中一个便捷的工具,用于验证响应数据的完整性,尤其适合那些需要高效比较大块数据的场景。尽管存在安全限制,合理利用MD5Hex断言可以在特定测试需求下提高测试的准确性和效率。理解其适用范围和限制,能够帮助测试工程师更有效地设计和执行测试计划。


原文地址:https://blog.csdn.net/u012151594/article/details/140605122

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!