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

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

引言

        在当今快速发展的互联网时代,软件质量保证和性能测试变得尤为重要。自动化测试平台,提供了一套完整的解决方案,以确保软件产品在发布前能够满足性能和稳定性的要求。本文将深入探讨滴云自动化测试平台中的压测引擎数据库设计,分析其结构、功能以及如何支持自动化测试的各个环节。

压测引擎数据库设计概览      

        压测引擎是自动化测试平台中的核心组件之一,它负责管理和执行压力测试用例,收集测试数据,并生成测试报告。数据库设计是压测引擎功能实现的基础,涉及到项目、环境、压测用例模块、测试报告等多个方面的数据存储和管理。

项目(Project)表设计

项目表是整个数据库设计的基础,存储了项目的基本信息。以下是项目表的主要字段:

  • id: 项目的唯一标识符。
  • project_admin: 项目管理员的用户ID。
  • name: 项目名称。
  • description: 项目描述。
  • gmt_create: 项目创建时间。
  • gmt_modified: 项目最后修改时间。

SQL语句如下:

CREATE TABLE `project` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `project_admin` bigint unsigned DEFAULT NULL COMMENT '项目管理员ID',
  `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 '描述',
  `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=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

环境(Environment)表设计

环境表用于定义测试所需的不同环境配置,包括协议、域名和端口等信息。以下是环境表的主要字段:

  • id: 环境的唯一标识符。
  • project_id: 所属项目的ID。
  • name: 环境名称。
  • protocol: 协议类型。
  • domain: 环境域名。
  • port: 端口号。
  • description: 环境描述。

SQL语句如下:

CREATE TABLE `environment` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `project_id` bigint unsigned NOT NULL COMMENT '所属项目ID',
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '环境名称',
  `protocol` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '协议',
  `domain` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '环境域名',
  `port` int unsigned NOT NULL COMMENT '端口',
  `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL 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=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

压测用例模块(Stress Case Module)表设计

压测用例模块表存储了压力测试的各个模块信息,每个模块可以包含多个具体的测试用例。以下是压测用例模块表的主要字段:

  • id: 模块的唯一标识符。
  • project_id: 所属项目的ID。
  • name: 接口模块名称。
  • gmt_create: 模块创建时间。
  • gmt_modified: 模块最后修改时间。

SQL语句如下:

CREATE TABLE `stress_case_module` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `project_id` bigint unsigned DEFAULT NULL COMMENT '所属项目ID',
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接口模块名称',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

压测引擎的工作原理

压测引擎的工作原理可以概括为以下几个步骤:

  1. 项目配置:首先,管理员需要在项目表中配置项目基本信息。
  2. 环境设置:接着,根据测试需求设置不同的测试环境。
  3. 用例设计:设计压力测试用例,并将其归类到不同的模块中。
  4. 测试执行:执行压力测试,收集数据。
  5. 结果分析:分析测试结果,生成测试报告。

E-R图

实体间关系

项目与环境

  • 关系类型:一对多(One-to-Many)
  • 描述:一个项目可以拥有多个环境配置,但每个环境配置只属于一个项目。
  • 关系表示:从Environment实体指向Project实体,Environment中的project_id是外键,引用Projectid

项目与压测用例模块

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

压测用例模块与压测用例

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

环境与压测用例

  • 关系类型:多对多(Many-to-Many)
  • 描述:一个环境可以执行多个压测用例,一个压测用例也可以在多个环境中执行。
  • 关系表示:通常需要通过一个关联表(例如EnvironmentStressCase)来实现这种关系,该表包含外键environment_idstress_case_id,分别引用EnvironmentStressCaseid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/783544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

启发式防御大模型越狱攻击

前言 在本文中,我们来分析、复现几个典型的启发式的防御工作,用于防御面向大语言模型的越狱攻击。 Self Examination 首先来看Self Examination方法。 这是一种简单的零样本防御LLM攻击的方法,旨在防止用户接触到由LLMs诱导产生的有害或恶…

ROS编译错误: fatal error: test_pkg/test_pkg.h: 没有那个文件

在ROS安装完毕后编译ros工作空间,出现了以下错误: 解决方法: 删除工作空间,重建再重新编译

【数据结构】单链表:数据结构中的舞者,穿梭于理论与实践的舞池

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 数据结构与算法 先赞后看,已成习惯 创作不易,多多支持! 一、链表的概念和结构 1.1 链表的概念 在上一篇文章中,我们了解了线性表(linear list),并且学习了其…

你认为最优美的数据结构是什么?

并查集算是,巧妙的不行,让人为之一惊。 在学习数据结构Q的时候,老师多少会提到并查集,他的应用也是超级广泛。本文首先会通过案例来对并查集有一个介绍。然后给出并查集的java实现。 刚好我有一些资料,是我根据网友给…

【Altium】AD-网络版一个用户非人为异常占用多个License的解决方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 当出现一个用户同时占用多个授权,又无法单独释放一个授权的情况下,该如何解决。 2、 问题场景 一个用户获取网络版授权后,AD会自动重复获取授权,直到该license下所有授…

怎么给电子文档批量盖骑缝章或公章?

怎么给电子文档批量盖骑缝章或公章?假如你有100个PDF电子文档要同时盖缝章,如果不借助专业的盖电子骑缝章软件,还真不好干。下面讲述如何利用e-章宝批量盖电子骑缝章。 1.在软件中导入待批量盖章的PDF文件 如下图,在“待盖章PDF文件”区域…

后端之路——登录校验

前言:Servlet 【登录校验】这个功能技术的基础是【会话技术】,那么在讲【会话技术】的时候必然要谈到【Cookie】和【Session】这两个东西,那么在这之前必须要先讲一下一个很重要但是很多人都会忽略的一个知识点:【Servlet】 什么是…

redis-cli 连接Redis

Redis-cli介绍 redis-cli 是原生 Redis 自带的命令行工具&#xff0c;您可以在云主机或本地设备上通过 redis-cli 连接 Redis 数据库&#xff0c;进行数据管理。 redis-cli 客户端的使用方法&#xff0c;请参考官方文档。 连接命令 redis-cli -h <redis_instance_address…

【算法笔记自学】第 7 章 提高篇(1)——数据结构专题(1)

7.1栈的应用 #include <iostream> #include <string> #include <stack> using namespace std;int main() {int n, x;string action;cin >> n;stack<int> s;for (int i 0; i < n; i) {cin >> action;if (action "push") {ci…

Qt/C++项目积累: 2.主机监控器 - 2.1 项目介绍

一&#xff1a;项目主体编写背景 在观察程序的运行状态时&#xff0c;其对系统的CPU&#xff0c;内存&#xff0c;硬盘占用无疑是几项重要参考指标&#xff0c;而现有的监控软件&#xff0c;搜索了解到以Zabbix类软件比较出名&#xff0c;其采用标准的SNMP协议的原理来实现监控…

【鸿蒙学习笔记】页面布局

官方文档&#xff1a;布局概述 常见页面结构图 布局元素的组成 线性布局&#xff08;Row、Column&#xff09; 了解思路即可&#xff0c;更多样例去看官方文档 Entry Component struct PracExample {build() {Column() {Column({ space: 20 }) {Text(space: 20).fontSize(15)…

10岁女孩儿童编程规划

目录 1. 背景2. 为什么让她学儿童编程&#xff1f;3. 学习方法&目标4. 整体规划4.1 Python 入门与基础4.1.1 目标4.1.2 学习内容 4.2 C 入门与基础4.2.1 目标4.2.2 学习内容 4.3 算法进阶4.3.1 目标4.3.2 学习内容 4.4 高级编程4.4.1 目标4.4.2 学习内容 4.5 参与编程赛事4…

Java套红:指定位置合并文档-NiceXWPFDocument

需求&#xff1a;做个公文系统&#xff0c;需要将正文文档在某个节点点击套红按钮&#xff0c;实现文档套红 试了很多方法&#xff0c;大多数网上能查到但是实际代码不能找到关键方法&#xff0c;可能是跟包的版本有关系&#xff0c;下面记录能用的这个。 一&#xff1a;添加依…

深入源码,探究#、$号替换符的区别

在Mybatis的日常使用过程中以及在一些技术论坛上我们都能常常听到&#xff0c;不要使用$符号来进行SQL的编写&#xff0c;要使用#符号&#xff0c;否则会有SQL注入的风险。那么&#xff0c;为什么在使用$符号时会有注入的风险呢&#xff0c;以及#号为什么不会有风险呢&#xff…

spark任务,使用 repartition 对数据进行了重新分区,但任务输入数据大小仍存在不均衡

目录 目录 确认 Spark 任务重新分区后的数据不均衡 1. 检查分区大小 2. 使用 DataFrame API 检查分区 3. 使用 Spark UI 查看分区情况 4. 使用日志记录分区信息 可能原因 1. 数据分布不均衡 2. 分区策略 3. 数据预处理 解决方案 1. 检查数据分布 2. 使用 coalesce…

Java反射与Fastjson的危险反序列化

什么是Java反射&#xff1f; 在前文中&#xff0c;我们有一行代码 Computer macBookPro JSON.parseObject(preReceive,Computer.class); 这行代码是什么意思呢&#xff1f;看起来好像就是我们声明了一个名为 macBookPro 的 Computer 类&#xff0c;它由 fastjson 的 parseObje…

工程仪器振弦采集仪的设计与研发进展

工程仪器振弦采集仪的设计与研发进展 工程仪器振弦采集仪是一种用于测量和记录物体振动参数的仪器。它能够实时采集物体的振动信号&#xff0c;并通过内部的传感器将振动信号转化为电信号&#xff0c;然后进行信号放大和处理&#xff0c;最终以数字形式显示或存储。 河北稳控科…

2024图纸加密软件TOP8排行丨企业保护数据安全最佳选择

图纸往往包含了设计人员的创意和智慧&#xff0c;是企业的重要资产。加密可以防止未经授权的复制、分发或使用&#xff0c;保护设计的原创性和独特性不被侵犯。 许多图纸可能含有公司的商业秘密&#xff0c;比如特定的技术参数、生产流程或是产品设计等。这些信息若泄露给竞争…

股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据

数据 数据是上证指数日行情数据&#xff0c;股票代码000002.sz&#xff0c;原始数据shdata示例如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…

JVM原理(二十):JVM虚拟机内存的三特性详解

1. 原子性、可进行、有序性 1.1. 原子性 Java内存模型围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来建立的。 Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write这六个。我们大致可以认为&#xff0c;基本数据类型的访问、…