跳转到内容

Jdbc测试任务

Jdbc测试任务 定义一个 Jdbc 协议测试任务,用于 Jdbc 功能、性能、稳定性和自定义测试。

主参数清单

字段名称类型是否必须长度/范围描述
targetenum-任务类型标识
固定值:JDBC
namestring≤400 字符任务唯一标识
示例:用户数据查询
descriptionstring≤800 字符任务详细说明
描述任务目的和执行内容
enabledboolean-启用状态
true:执行任务(默认)
false:跳过任务
beforeNamestring≤400 字符前序任务名称
控制任务执行顺序
为空时使用流水线上一个任务
transactionNamestring≤400 字符事务名称
关联的事务控制器名称
事务中元素必填
typeenum-SQL 操作类型
SELECT:查询
UPDATE:更新
CALLABLE:存储过程
PREPARED_SELECT:预编译查询
PREPARED_UPDATE:预编译更新
sqlstring≤8192 字符SQL 语句
支持变量和 Mock 函数
注意:仅支持单个 SQL 语句
示例:SELECT * FROM users WHERE id = {userId}
maxResultRowsinteger1-10000最大结果行数
限制返回行数(默认:1000)
超过的行将被忽略
timeoutInSecondinteger1-7200执行超时(秒)
默认无超时限制
生产环境建议 ≤30 秒
argumentsarray[object]-预编译参数
PREPARED_*类型必填
格式:{name, type, value}
assertionsarray[object]-结果断言
支持:BODY内容匹配、SIZE行数验证、DURATION执行耗时
配置参考Http断言说明
variablesarray[object]-结果变量提取
从查询结果提取变量
配置参考"参数化-采样提取变量"
查看采样变量定义
datasetsarray[object]-测试数据集
驱动参数化测试
支持 CSV/JSON 格式
配置参考"参数化-数据集"
查看数据集定义
actionOnEOFenum-数据集结束策略
RECYCLE:循环使用(默认)
STOP_THREAD:停止线程
sharingModeenum-数据共享模式
ALL_THREAD:线程共享(默认)
CURRENT_THREAD:线程独立副本

Http完整结构示例:

yaml
- target: JDBC
  name: queryUser
  description: Query user by select statement
  enabled: true
  beforeName: BusinessTransaction
  transactionName: BusinessTransaction
  sql: SELECT * FROM {table} WHERE username = ?;
  arguments:
    # 预编译参数 ...
  assertions:
    # 断言参数配置 ...
  variables:
    # 变量参数配置 ...
  datasets:
    # 数据集参数配置 ...
  actionOnEOF: RECYCLE
  sharingMode: ALL_THREAD

查询参数类型(type)

类型SQL 语句类型使用场景特点
SELECT标准查询语句简单数据检索
不需要参数化
直连执行
结果集处理
UPDATE数据修改语句数据插入/更新/删除
表结构修改
返回影响行数
自动事务提交
CALLABLE存储过程调用执行业务逻辑
处理复杂操作
支持 IN/OUT 参数
返回多个结果集
PREPARED_SELECT预编译查询重复查询优化
安全参数化
防 SQL 注入
执行计划复用
PREPARED_UPDATE预编译修改批量数据操作
安全更新
高效执行
参数类型安全

输入输出参数(arguments)

输入输出参数用于配置在预编译 SQL、存储过程或函数中参数信息。

注意事项

预编译语句,存储过程或函数中的参数类型在数量和顺序上必须一致。
如果类型未指定,它们将作为 VARCHAR 进行处理。

字段名称类型必填长度限制描述
typestring≤80字符参数数据类型
支持:INTEGER, DECIMAL, DOUBLE, CHAR, VARCHAR, DATE, TIMESTAMP
默认:VARCHAR
inoutenum-参数传递方向
IN:输入参数
OUT:输出参数
INOUT:输入输出参数
valuestring-参数值
支持常量、变量表达式
示例:123, {userId}, NOW()

输入输出参数类型(inout):

1. IN 参数(输入)

  • 作用:向SQL传递输入值
  • 特点
    • 仅用于输入
    • 值在调用前确定
    • 存储过程不能修改其值
  • 示例
    sql
    -- SQL
    SELECT * FROM users WHERE id = ?
    yaml
    arguments:
      - type: "INTEGER"
        inout: "IN"
        value: "1001"

2. OUT 参数(输出)

  • 作用:从SQL返回结果值
  • 特点
    • 仅用于输出
    • 调用前无需赋值
    • 存储过程设置其值
  • 示例
    sql
    -- 存储过程
    CREATE PROCEDURE get_count(OUT user_count INT)
    yaml
    arguments:
      - type: "INTEGER"
        inout: "OUT"
        value: ""  # 输出结果接收变量

3. INOUT 参数(输入输出)

  • 作用:双向传递数据
  • 特点
    • 输入输出双功能
    • 调用前需赋初始值
    • 存储过程可修改其值
  • 示例
    sql
    -- 存储过程
    CREATE PROCEDURE update_balance(INOUT balance DECIMAL(10,2))
    yaml
    arguments:
      - type: "DECIMAL"
        inout: "INOUT"
        value: "1000.00"

脚本示例(target)

查询语句示例

yaml
- target: JDBC
  name: QueryUser
  description: Query user by select statement
  enabled: true
  type: SELECT
  sql: SELECT * FROM `user` WHERE username = 'JohnDoe'
  maxResultRows: 2
  timeoutInSecond: 60

修改语句示例

yaml
- target: JDBC
  name: UpdateUser
  description: Modify user by prepared update statement
  enabled: true
  type: PREPARED_UPDATE
  sql: UPDATE `user` SET password = '@String(32)' WHERE username = 'JohnDoe'
  timeoutInSecond: 60

调用函数示例

yaml
- target: JDBC
  name: QueryUser
  description: Query the number of users by function
  enabled: true
  type: CALLABLE
  sql: "{? = CALL func_count_users_with_name(?)}"
  timeoutInSecond: 60
  arguments:
  - type: integer
    inout: OUT
  - type: varchar
    value: JohnDoe
    inout: IN

调用存储过程示例

yaml
- target: JDBC
  name: QueryUser
  description: Query the number of users by procedure
  enabled: true
  type: CALLABLE
  sql: "{CALL count_users_with_name(?, ?)}"
  timeoutInSecond: 60
  arguments:
  - type: varchar
    value: JohnDoe
    inout: IN
  - type: integer
    inout: OUT

预编译查询语句示例

yaml
- target: JDBC
  name: QueryUser
  description: "Query user by prepared select statement, it is equivalent to static\
    \ statement \"SELECT * FROM `user` WHERE username = 'JohnDoe'\""
  enabled: true
  type: PREPARED_SELECT
  sql: SELECT COUNT(*) FROM `user` WHERE username = ?
  maxResultRows: 1
  timeoutInSecond: 60
  arguments:
  - type: varchar
    value: JohnDoe
    inout: IN

预编译修改语句示例

yaml
- target: JDBC
  name: UpdateUser
  description: "Modify user by prepared update statement, it is equivalent to static\
    \ statement \"UPDATE `user` SET password = 'password123' WHERE username = 'JohnDoe'\""
  enabled: true
  type: PREPARED_UPDATE
  sql: UPDATE `user` SET password = ? WHERE username = ?
  timeoutInSecond: 60
  arguments:
  - type: varchar
    value: '@String(32)'
    inout: IN
  - type: varchar
    value: JohnDoe
    inout: IN

基于 GPL-3.0 许可发布