AI测试专用Skills包落地模板

一、Excel测试用例模板(直接输出文件,无格式转换)

说明:模板固定表头格式,填写完成后可直接输出Excel文件,适配各类测试场景(功能、回归、冒烟等),无需手动调整格式,复制粘贴内容即可使用。

用例ID(必填) 测试模块(必填) 测试子模块(可选) 用例标题(必填) 优先级(必填) 前置条件(必填) 测试环境(必填) 操作步骤(必填) 预期结果(必填) 实际结果(执行后填) 测试状态(执行后填) 测试人员(必填) 执行时间(执行后填) 备注(可选)
TC-模块缩写-001 例:用户管理模块 例:用户登录 例:正确账号密码登录系统 高/中/低 1. 系统已部署完成并正常启动;2. 测试账号已创建(账号:xxx,密码:xxx);3. 客户端可正常访问系统登录页 测试环境(IP:xxx.xxx.xxx.xxx,端口:xxxx) 1. 打开系统登录页;2. 输入正确的账号和密码;3. 点击“登录”按钮 1. 登录成功,跳转至系统首页;2. 页面显示当前登录用户名;3. 无报错提示 - 未执行/通过/失败/阻塞 测试人员姓名 - 例:无特殊说明;需注意密码加密显示
TC-模块缩写-002 例:用户管理模块 例:用户登录 例:错误密码登录系统 1. 系统已部署完成并正常启动;2. 测试账号已创建(账号:xxx,密码:xxx);3. 客户端可正常访问系统登录页 测试环境(IP:xxx.xxx.xxx.xxx,端口:xxxx) 1. 打开系统登录页;2. 输入正确的账号和错误的密码;3. 点击“登录”按钮 1. 登录失败,不跳转页面;2. 页面显示错误提示(例:账号或密码错误,请重新输入);3. 密码输入框可重新编辑 - 未执行/通过/失败/阻塞 测试人员姓名 - 例:错误提示需清晰,不泄露敏感信息
填写备注:1. 用例ID遵循“TC-模块缩写-序号”规则(如TC-USER-001),确保唯一;2. 操作步骤需清晰可复现,每一步仅描述一个操作;3. 预期结果需明确、可验证,避免模糊表述(如“显示正常”需改为具体显示内容)。

二、Xmind测试用例模板(直接生成脑图,无需中转)

说明:模板遵循Xmind标准层级结构,生成后可直接导入Xmind使用,层级清晰、可扩展性强,适配功能测试、回归测试等场景,填写时仅需替换占位内容,无需调整层级格式。

核心层级结构(直接复制到Xmind,替换占位内容即可):

  • 【项目名称】测试用例脑图(一级节点,例:XX系统V2.0测试用例脑图)

    • 测试基础信息(二级节点)

      • 测试版本:Vx.x

      • 测试人员:XXX

      • 测试环境:测试环境(IP:xxx.xxx.xxx.xxx)

      • 测试时间:XXXX-XX-XX ~ XXXX-XX-XX

    • 模块1(二级节点,例:用户管理模块)

      • 功能点1(三级节点,例:用户登录)

        • 用例1:正确账号密码登录(四级节点)

          • 优先级:高

          • 前置条件:系统正常启动、测试账号存在

          • 操作步骤:1. 打开登录页;2. 输入正确账号密码;3. 点击登录

          • 预期结果:登录成功,跳转首页,显示用户名

        • 用例2:错误密码登录(四级节点)

          • 优先级:中

          • 前置条件:系统正常启动、测试账号存在

          • 操作步骤:1. 打开登录页;2. 输入正确账号、错误密码;3. 点击登录

          • 预期结果:登录失败,提示账号密码错误,不跳转

      • 功能点2(三级节点,例:用户注册)

        • 用例1:合法信息注册(四级节点)

          • 优先级:高

          • 前置条件:系统正常启动、注册页面可访问、手机号未被注册

          • 操作步骤:1. 打开注册页;2. 输入合法手机号、密码、验证码;3. 点击注册

          • 预期结果:注册成功,提示注册完成,可跳转登录

        • 用例2:手机号已注册(四级节点)

          • 优先级:中

          • 前置条件:系统正常启动、注册页面可访问、手机号已被注册

          • 操作步骤:1. 打开注册页;2. 输入已注册手机号、密码、验证码;3. 点击注册

          • 预期结果:注册失败,提示“该手机号已注册,请直接登录”

    • 模块2(二级节点,例:商品管理模块)(格式同模块1,复制上述模块1结构,替换功能点和用例即可)

    • 异常测试用例(二级节点,可选,集中管理异常场景)

      • 场景1:网络中断(三级节点)

        • 操作步骤:执行测试用例过程中,断开网络连接

        • 预期结果:系统提示“网络异常,请检查网络连接”,不出现崩溃

      • 场景2:输入特殊字符(三级节点)

        • 操作步骤:在输入框中输入@、#、$等特殊字符,执行对应操作

        • 预期结果:系统正常处理,不出现报错、崩溃,特殊字符符合业务规则则正常生效

填写备注:

  1. 层级不可随意调整(一级:脑图标题 → 二级:模块/基础信息 → 三级:功能点 → 四级:用例 → 五级:用例要素);
  2. 每个用例的“操作步骤”和“预期结果”需简洁明了,适配脑图展示,避免过长文本;
  3. 可根据项目规模,新增“模块3”“模块4”,或新增“性能测试用例”“安全测试用例”二级节点。

三、API测试用例模板(输出Postman JSON,导入即用)

说明:模板遵循Postman JSON标准格式,包含集合信息、请求配置、断言、变量等核心要素,生成后可直接导入Postman,替换{{变量}}内容即可执行测试,无需修改JSON结构。

{
  "info": {
    "name": "【项目名称】API测试用例集合(例:XX系统API测试集合V2.0)",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "API测试用例集合,导入Postman后,替换环境变量即可执行,包含核心接口测试用例,适配功能、回归测试。\n环境变量说明:\n{{baseUrl}}:API基础地址(例:http://xxx.xxx.xxx.xxx:xxxx)\n{{token}}:用户登录凭证(需先执行登录接口获取)\n{{userId}}:测试用户ID(可选)"
  },
  "item": [
    {
      "name": "登录接口(基础接口)",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"username\": \"{{testUsername}}\",\n  \"password\": \"{{testPassword}}\",\n  \"captcha\": \"{{captcha}}\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{baseUrl}}/api/auth/login",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "auth",
            "login"
          ]
        },
        "description": "登录接口:获取用户token,作为后续接口的请求凭证,必填参数:username、password"
      },
      "response": [
        {
          "name": "登录成功",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"{{testUsername}}\",\n  \"password\": \"{{testPassword}}\",\n  \"captcha\": \"{{captcha}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/auth/login",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "login"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json;charset=UTF-8"
            }
          ],
          "cookie": [],
          "body": "{\n  \"code\": 200,\n  \"message\": \"登录成功\",\n  \"data\": {\n    \"token\": \"{{token}}\",\n    \"username\": \"{{testUsername}}\",\n    \"userId\": \"{{userId}}\"\n  }\n}",
          "tests": {
            "状态码为200": "pm.response.to.have.status(200);",
            "响应code为200": "pm.response.json().code === 200;",
            "响应包含token": "pm.response.json().data.hasOwnProperty('token');",
            "响应message为登录成功": "pm.response.json().message === '登录成功';"
          }
        },
        {
          "name": "登录失败(密码错误)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"{{testUsername}}\",\n  \"password\": \"errorPassword\",\n  \"captcha\": \"{{captcha}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/auth/login",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "login"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json;charset=UTF-8"
            }
          ],
          "cookie": [],
          "body": "{\n  \"code\": 400,\n  \"message\": \"账号或密码错误\",\n  \"data\": null\n}",
          "tests": {
            "状态码为200": "pm.response.to.have.status(200);",
            "响应code为400": "pm.response.json().code === 400;",
            "响应message为账号或密码错误": "pm.response.json().message === '账号或密码错误';"
          }
        }
      ]
    },
    {
      "name": "用户信息查询接口(需token)",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/user/{{userId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "user",
            "{{userId}}"
          ]
        },
        "description": "用户信息查询接口:需携带登录token,根据userId查询用户详情,必填参数:userId(路径参数)"
      },
      "response": [
        {
          "name": "查询成功",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/user/{{userId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user",
                "{{userId}}"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json;charset=UTF-8"
            }
          ],
          "cookie": [],
          "body": "{\n  \"code\": 200,\n  \"message\": \"查询成功\",\n  \"data\": {\n    \"userId\": \"{{userId}}\",\n    \"username\": \"{{testUsername}}\",\n    \"phone\": \"{{testPhone}}\",\n    \"createTime\": \"XXXX-XX-XX XX:XX:XX\"\n  }\n}",
          "tests": {
            "状态码为200": "pm.response.to.have.status(200);",
            "响应code为200": "pm.response.json().code === 200;",
            "响应包含用户信息": "pm.response.json().data.hasOwnProperty('username') && pm.response.json().data.hasOwnProperty('phone');",
            "查询的userId与请求一致": "pm.response.json().data.userId === '{{userId}}';"
          }
        },
        {
          "name": "查询失败(token失效)",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Authorization",
                "value": "Bearer invalidToken",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/user/{{userId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user",
                "{{userId}}"
              ]
            }
          },
          "status": "Unauthorized",
          "code": 401,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json;charset=UTF-8"
            }
          ],
          "cookie": [],
          "body": "{\n  \"code\": 401,\n  \"message\": \"token失效,请重新登录\",\n  \"data\": null\n}",
          "tests": {
            "状态码为401": "pm.response.to.have.status(401);",
            "响应code为401": "pm.response.json().code === 401;",
            "响应提示token失效": "pm.response.json().message === 'token失效,请重新登录';"
          }
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "http://xxx.xxx.xxx.xxx:xxxx",
      "type": "string",
      "description": "API基础地址,替换为实际测试环境地址"
    },
    {
      "key": "token",
      "value": "",
      "type": "string",
      "description": "用户登录凭证,执行登录接口后自动获取"
    },
    {
      "key": "testUsername",
      "value": "test01",
      "type": "string",
      "description": "测试账号用户名"
    },
    {
      "key": "testPassword",
      "value": "12345678",
      "type": "string",
      "description": "测试账号密码"
    },
    {
      "key": "userId",
      "value": "",
      "type": "string",
      "description": "测试用户ID,登录后从响应中获取"
    },
    {
      "key": "captcha",
      "value": "1234",
      "type": "string",
      "description": "登录验证码(若无需验证码,可删除该变量及请求中的captcha参数)"
    }
  ]
}

填写备注:

  1. 导入Postman后,先在“环境变量”中替换{{baseUrl}}、{{testUsername}}等占位变量,无需修改JSON结构;
  2. 每个接口需包含“成功”和“核心失败”场景(如token失效、参数错误),断言需覆盖状态码、响应code、关键返回字段;
  3. 新增接口时,复制“用户信息查询接口”节点,替换请求method、url、body、响应和断言即可。

四、JMeter脚本模板(生成jmx文件,导入即可压测)

说明:模板遵循JMeter jmx文件标准XML格式,包含测试计划、线程组、HTTP请求、断言、监听器等核心组件,生成后可直接导入JMeter,替换占位参数(如IP、端口、线程数)即可执行压测,无需调整组件结构。

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="【项目名称】JMeter压测脚本(例:XX系统登录接口压测脚本V1.0)" enabled="true">
      <stringProp name="TestPlan.comments">JMeter压测脚本,导入后替换环境参数和线程配置即可执行,适配接口压测、性能测试场景。
参数说明:
1. 基础配置:替换“服务器IP”“端口”为实际测试环境地址;
2. 线程配置:根据压测需求,修改线程数、循环次数、 Ramp-Up时间;
3. 接口参数:替换登录接口的username、password为实际测试账号。</stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="server_ip" elementType="Argument">
            <stringProp name="Argument.name">server_ip</stringProp>
            <stringProp name="Argument.value">xxx.xxx.xxx.xxx</stringProp&gt;  <!-- 替换为实际测试环境IP -->
            <stringProp name="Argument.metadata">=xxx.xxx.xxx.xxx</stringProp>
          </elementProp>
          <elementProp name="server_port" elementType="Argument">
            <stringProp name="Argument.name">server_port</stringProp>
            <stringProp name="Argument.value">xxxx</stringProp>  <!-- 替换为实际测试环境端口 -->
            <stringProp name="Argument.metadata">=xxxx</stringProp>
          </elementProp>
          <elementProp name="test_username" elementType="Argument">
            <stringProp name="Argument.name">test_username</stringProp>
            <stringProp name="Argument.value">test01</stringProp&gt;  <!-- 替换为实际测试账号 -->
            <stringProp name="Argument.metadata">=test01</stringProp>
          </elementProp>
          <elementProp name="test_password" elementType="Argument">
            <stringProp name="Argument.name">test_password</stringProp>
            <stringProp name="Argument.value"&gt;12345678&lt;/stringProp&gt;  <!-- 替换为实际测试账号密码 -->
            <stringProp name="Argument.metadata">=12345678</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="登录接口压测线程组" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops"&gt;100&lt;/stringProp&gt;  <!-- 压测循环次数,根据需求修改 -->
        </elementProp>
        <stringProp name="ThreadGroup.num_threads"&gt;50&lt;/stringProp&gt;  <!-- 压测线程数,根据需求修改(并发数) -->
        <stringProp name="ThreadGroup.ramp_time"&gt;10&lt;/stringProp&gt;  <!-- Ramp-Up时间(秒),50线程10秒启动完成 -->
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"&gt;300&lt;/stringProp&gt;  <!-- 压测持续时间(秒),可选,优先级高于循环次数 -->
        <stringProp name="ThreadGroup.delay">0</stringProp>
        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
      </ThreadGroup>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="登录接口请求" enabled="true">
          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">{\n  "username": "${test_username}",\n  "password": "${test_password}"\n}</stringProp>
                <stringProp name="Argument.metadata">=true</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain">${server_ip}</stringProp> <!-- 引用用户定义变量:服务器IP -->
          <stringProp name="HTTPSampler.port"&gt;${server_port}&lt;/stringProp&gt;  <!-- 引用用户定义变量:服务器端口 -->
          <stringProp name="HTTPSampler.protocol"&gt;http&lt;/stringProp&gt;  <!-- 协议,根据实际修改(http/https) -->
          <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
          <stringProp name="HTTPSampler.path"&gt;/api/auth/login&lt;/stringProp&gt;  <!-- 替换为实际登录接口路径 -->
          <stringProp name="HTTPSampler.method"&gt;POST&lt;/stringProp&gt;  <!-- 接口请求方式,根据实际修改 -->
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          <stringProp name="HTTPSampler.connect_timeout">5000</stringProp&gt;  <!-- 连接超时时间(毫秒) -->
          <stringProp name="HTTPSampler.response_timeout">10000</stringProp&gt;  <!-- 响应超时时间(毫秒) -->
        </HTTPSamplerProxy>
        <hashTree>
          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="请求头配置" enabled="true">
            <collectionProp name="HeaderManager.headers">
              <elementProp name="" elementType="Header">
                <stringProp name="Header.name">Content-Type</stringProp>
                <stringProp name="Header.value">application/json;charset=utf-8</stringProp>
              </elementProp>
              <elementProp name="" elementType="Header">
                <stringProp name="Header.name">Accept</stringProp>
                <stringProp name="Header.value">application/json</stringProp>
              </elementProp>
            </collectionProp>
          </HeaderManager>
          <hashTree/>
          <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器(提取token)" enabled="true">
            <stringProp name="JSONPostProcessor.referenceNames">token</stringProp>
            <stringProp name="JSONPostProcessor.jsonPathExprs"&gt;$.data.token&lt;/stringProp&gt;  <!-- JSON路径,根据实际响应调整 -->
            <stringProp name="JSONPostProcessor.match_numbers">-1</stringProp>
          </JSONPostProcessor>
          <hashTree/>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言(验证压测结果)" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="">"code":200</stringProp> <!-- 断言响应成功(根据实际接口调整) -->
              <stringProp name="">"message":"登录成功"</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            &lt;intProp name="Assertion.test_type"&gt;2&lt;/intProp&gt;  <!-- 包含断言 -->
          </ResponseAssertion>
          <hashTree/>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="查看结果树(调试用)" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <sentBytes>true</sentBytes>
                <url>true</url>
                <threadCounts>true</threadCounts>
                <idleTime>true</idleTime>
                <connectTime>true</connectTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="聚合报告(压测核心指标)" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <sentBytes>true</sentBytes>
                <url>true</url>
                <threadCounts>true</threadCounts>
                <idleTime>true</idleTime>
                <connectTime>true</connectTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
        </hashTree>
      </hashTree>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

填写备注:

  1. 导入JMeter后,先修改“用户定义的变量”中的server_ip、server_port等占位参数,无需调整组件关联关系
  2. 压测配置(线程数、循环次数、持续时间)根据实际压测需求修改,新手建议先从低线程数(10-20)调试;
  3. 接口路径、请求方式、响应断言需根据实际项目接口调整,JSON提取器的jsonPathExprs需匹配接口响应格式;
  4. 调试时可开启“查看结果树”,正式压测时可关闭(提升压测性能),仅保留“聚合报告”查看核心指标(响应时间、吞吐量、成功率)。

模板落地说明

  1. 所有模板均已适配“直接输出、导入即用”需求,无需格式转换,仅需替换{{占位变量}}或备注中提示的需修改内容;
  2. 可根据项目实际业务(如电商、后台管理系统),新增对应模块、接口或用例,保持模板原有结构即可;
  3. 落地后可结合AI测试工具,将模板与Skills包关联,实现用例/脚本的自动化生成,进一步提升测试效率。
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐