AI测试专用Skills包落地模板
说明:模板固定表头格式,填写完成后可直接输出Excel文件,适配各类测试场景(功能、回归、冒烟等),无需手动调整格式,复制粘贴内容即可使用。说明:模板遵循Xmind标准层级结构,生成后可直接导入Xmind使用,层级清晰、可扩展性强,适配功能测试、回归测试等场景,填写时仅需替换占位内容,无需调整层级格式。核心层级结构(直接复制到Xmind,替换占位内容即可):【项目名称】测试用例脑图(一级节点,例:
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:输入特殊字符(三级节点)
-
操作步骤:在输入框中输入@、#、$等特殊字符,执行对应操作
-
预期结果:系统正常处理,不出现报错、崩溃,特殊字符符合业务规则则正常生效
-
-
-
填写备注:
- 层级不可随意调整(一级:脑图标题 → 二级:模块/基础信息 → 三级:功能点 → 四级:用例 → 五级:用例要素);
- 每个用例的“操作步骤”和“预期结果”需简洁明了,适配脑图展示,避免过长文本;
- 可根据项目规模,新增“模块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参数)"
}
]
}
填写备注:
- 导入Postman后,先在“环境变量”中替换{{baseUrl}}、{{testUsername}}等占位变量,无需修改JSON结构;
- 每个接口需包含“成功”和“核心失败”场景(如token失效、参数错误),断言需覆盖状态码、响应code、关键返回字段;
- 新增接口时,复制“用户信息查询接口”节点,替换请求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> <!-- 替换为实际测试环境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> <!-- 替换为实际测试账号 -->
<stringProp name="Argument.metadata">=test01</stringProp>
</elementProp>
<elementProp name="test_password" elementType="Argument">
<stringProp name="Argument.name">test_password</stringProp>
<stringProp name="Argument.value">12345678</stringProp> <!-- 替换为实际测试账号密码 -->
<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">100</stringProp> <!-- 压测循环次数,根据需求修改 -->
</elementProp>
<stringProp name="ThreadGroup.num_threads">50</stringProp> <!-- 压测线程数,根据需求修改(并发数) -->
<stringProp name="ThreadGroup.ramp_time">10</stringProp> <!-- Ramp-Up时间(秒),50线程10秒启动完成 -->
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<stringProp name="ThreadGroup.duration">300</stringProp> <!-- 压测持续时间(秒),可选,优先级高于循环次数 -->
<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">${server_port}</stringProp> <!-- 引用用户定义变量:服务器端口 -->
<stringProp name="HTTPSampler.protocol">http</stringProp> <!-- 协议,根据实际修改(http/https) -->
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
<stringProp name="HTTPSampler.path">/api/auth/login</stringProp> <!-- 替换为实际登录接口路径 -->
<stringProp name="HTTPSampler.method">POST</stringProp> <!-- 接口请求方式,根据实际修改 -->
<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> <!-- 连接超时时间(毫秒) -->
<stringProp name="HTTPSampler.response_timeout">10000</stringProp> <!-- 响应超时时间(毫秒) -->
</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">$.data.token</stringProp> <!-- 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>
<intProp name="Assertion.test_type">2</intProp> <!-- 包含断言 -->
</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>
填写备注:
- 导入JMeter后,先修改“用户定义的变量”中的server_ip、server_port等占位参数,无需调整组件关联关系
- 压测配置(线程数、循环次数、持续时间)根据实际压测需求修改,新手建议先从低线程数(10-20)调试;
- 接口路径、请求方式、响应断言需根据实际项目接口调整,JSON提取器的jsonPathExprs需匹配接口响应格式;
- 调试时可开启“查看结果树”,正式压测时可关闭(提升压测性能),仅保留“聚合报告”查看核心指标(响应时间、吞吐量、成功率)。
模板落地说明
- 所有模板均已适配“直接输出、导入即用”需求,无需格式转换,仅需替换{{占位变量}}或备注中提示的需修改内容;
- 可根据项目实际业务(如电商、后台管理系统),新增对应模块、接口或用例,保持模板原有结构即可;
- 落地后可结合AI测试工具,将模板与Skills包关联,实现用例/脚本的自动化生成,进一步提升测试效率。
更多推荐


所有评论(0)