压测引擎数据库设计(下)

压测引擎数据库设计(下)

引言

        上一篇博文讲述了我们压测引擎数据库设计的上半部分的内容,这一篇博文将会把压测引擎数据库设计最后的内容也讲完。

        上一篇博文已经把下图的“项目”、“环境”和“压测模块”三张表已经设计完成,这一篇博文将会继续完成“压测用例”、“测试报告”和“测试报告明细”这三张表的设计。

压测用例表(Stress Case)设计

压测用例表存储了压力测试的具体用例信息,包括接口名称、请求方法、请求参数等。以下是压测用例表的主要字段:

  • id: 用例的唯一标识符。
  • project_id: 所属项目的ID。
  • module_id: 所属接口模块的ID。
  • environment_id: 所属环境的ID。
  • name: 接口名称。
  • description: 接口描述。
  • assertion: 响应断言。
  • relation: 可变参数。
  • stress_source_type: 压测类型,如 'simple' 或 'jmx'。
  • thread_group_config: 压测参数。
  • jmx_url: jmx文件地址。
  • path: 接口路径。 method: 请求方法,如 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'。
  • query: 查询参数。
  • header: 请求头。
  • body: 请求体。 body_type: 请求体格式,如 'raw', 'form-data', 'json'。
  • gmt_create: 用例创建时间。
  • gmt_modified: 用例最后修改时间。

SQL语句如下:

CREATE TABLE `stress_case` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `project_id` bigint DEFAULT NULL COMMENT '项目id',
  `module_id` bigint unsigned DEFAULT NULL COMMENT '所属接口模块ID',
  `environment_id` bigint DEFAULT NULL,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接口名称',
  `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接口描述',
  `assertion` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '响应断言',
  `relation` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '可变参数',
  `stress_source_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '压测类型 [simple jmx]',
  `thread_group_config` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '压测参数',
  `jmx_url` varchar(524) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'jmx文件地址',
  `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接口路径',
  `method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求方法 [GET POST PUT PATCH DELETE HEAD OPTIONS]',
  `query` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '查询参数',
  `header` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '请求头',
  `body` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '请求体',
  `body_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求体格式 [raw form-data json]',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

测试报告表(Report)设计

测试报告表存储了压力测试的执行结果和相关统计信息。以下是测试报告表的主要字段:

  • id: 报告的唯一标识符。
  • project_id: 所属项目的ID。
  • case_id: 所属用例的ID。
  • type: 报告类型。
  • name: 报告名称。
  • execute_state: 执行状态。
  • summary: 摘要信息。
  • start_time: 开始时间。
  • end_time: 结束时间。
  • expand_time: 消耗时间。
  • quantity: 步骤数量。
  • pass_quantity: 通过数量。
  • fail_quantity: 失败数量。
  • gmt_create: 报告创建时间。
  • gmt_modified: 报告最后修改时间。

SQL语句如下:

CREATE TABLE `report` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `project_id` bigint unsigned DEFAULT NULL COMMENT '所属项目ID',
  `case_id` bigint DEFAULT NULL,
  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '报告类型',
  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '报告名称',
  `execute_state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行状态',
  `summary` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `start_time` bigint unsigned DEFAULT NULL COMMENT '开始时间',
  `end_time` bigint unsigned DEFAULT NULL COMMENT '结束时间',
  `expand_time` bigint unsigned DEFAULT NULL COMMENT '消耗时间',
  `quantity` bigint DEFAULT '0' COMMENT '步骤数量',
  `pass_quantity` bigint DEFAULT '0' COMMENT '通过数量',
  `fail_quantity` bigint DEFAULT '0' COMMENT '失败数量',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

压测报告详情表(Report Detail Stress)设计

压测报告详情表存储了测试报告中的详细数据,包括断言信息、错误请求数、响应时间等。以下是压测报告详情表的主要字段:

  • id: 详情的唯一标识符。
  • report_id: 所属报告的ID。
  • assert_info: 断言信息。
  • error_count: 错误请求数。
  • error_percentage: 错误百分比。
  • max_time: 最大响应时间。
  • mean_time: 平均响应时间。
  • min_time: 最小响应时间。
  • receive_k_b_per_second: 每秒接收KB。
  • sent_k_b_per_second: 每秒发送KB。
  • request_location: 请求路径和参数。
  • request_header: 请求头。
  • request_body: 请求体。
  • request_rate: 每秒请求速率。
  • response_code: 响应码。
  • response_data: 响应体。
  • response_header: 响应头。
  • sampler_count: 采样次数编号。
  • sampler_label: 请求名称。
  • sample_time: 请求时间戳。
  • gmt_create: 详情创建时间。
  • gmt_modified: 详情最后修改时间。

SQL语句如下:

CREATE TABLE `report_detail_stress` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `report_id` bigint unsigned DEFAULT NULL COMMENT '所属报告ID',
  `assert_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '断言信息',
  `error_count` bigint unsigned DEFAULT NULL COMMENT '错误请求数',
  `error_percentage` float unsigned DEFAULT NULL COMMENT '错误百分比',
  `max_time` int unsigned DEFAULT NULL COMMENT '最大响应时间',
  `mean_time` float unsigned DEFAULT NULL COMMENT '平均响应时间',
  `min_time` int unsigned DEFAULT NULL COMMENT '最小响应时间',
  `receive_k_b_per_second` float DEFAULT NULL COMMENT '每秒接收KB',
  `sent_k_b_per_second` float DEFAULT NULL COMMENT '每秒发送KB',
  `request_location` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '请求路径和参数',
  `request_header` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '请求头',
  `request_body` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '请求体',
  `request_rate` float unsigned DEFAULT NULL COMMENT '每秒请求速率',
  `response_code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '响应码',
  `response_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '响应体',
  `response_header` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '响应头',
  `sampler_count` bigint unsigned DEFAULT NULL COMMENT '采样次数编号',
  `sampler_label` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求名称',
  `sample_time` bigint DEFAULT NULL COMMENT '请求时间戳',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=151 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

实体间关系

压测用例与项目

  • 关系类型:多对一(Many-to-One)
  • 描述:一个项目可以包含多个压测用例,但每个压测用例只属于一个项目。
  • 关系表示:从StressCase实体指向Project实体,StressCase中的project_id是外键,引用Project的id。

压测用例与压测用例模块

  • 关系类型:多对一(Many-to-One)
  • 描述:一个压测用例模块可以包含多个压测用例,但每个压测用例只属于一个模块。
  • 关系表示:从StressCase实体指向StressCaseModule实体,StressCase中的module_id是外键,引用StressCaseModule的id。

压测用例与环境

  • 关系类型:多对一(Many-to-One)
  • 描述:一个压测用例可以在多个环境中执行,但每个用例在报告中只关联一个环境。
  • 关系表示:从StressCase实体指向Environment实体,StressCase中的environment_id是外键,引用Environment的id。

报告与项目

  • 关系类型:多对一(Many-to-One)
  • 描述:一个项目可以有多个测试报告,但每个报告只属于一个项目。
  • 关系表示:从Report实体指向Project实体,Report中的project_id是外键,引用Project的id。

报告与压测用例

  • 关系类型:多对一(Many-to-One)
  • 描述:一个压测用例可以对应多个测试报告,但每个报告只记录一个用例的测试结果。
  • 关系表示:从Report实体指向StressCase实体,Report中的case_id是外键,引用StressCase的id。

报告详情与报告

  • 关系类型:多对一(Many-to-One)
  • 描述:一个测试报告可以包含多个报告详情,但每个详情只属于一个报告。
  • 关系表示:从ReportDetailStress实体指向Report实体,ReportDetailStress中的report_id是外键,引用Report的id。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值