手动测试SQL表海量记录场景:后台任务失败记录注入方案
批量生成SQL表测试数据的实用方法
直接写SQL批量插入语句
跳过应用逻辑直接操作数据库,效率最高。先写出一条符合目标表结构的INSERT基础语句,然后通过拼接的方式生成批量值段,比如:INSERT INTO job_fail_logs (ExceptionId, JobId, JobName, Exception, MethodName, ServiceName) VALUES ('EXC-0001', 'JOB-0001', '数据同步任务', 'NullPointerException', 'syncData', 'DataService'), ('EXC-0002', 'JOB-0002', '报表生成任务', 'TimeoutException', 'generateReport', 'ReportService'), -- 重复生成上千组类似值 ('EXC-9999', 'JOB-9999', '缓存刷新任务', 'OutOfMemoryError', 'refreshCache', 'CacheService');嫌手动写麻烦的话,可以用Excel生成模拟数据(比如用函数生成随机ID),再转成SQL语句格式,一次执行就能插入大量记录。也可以用数据库存储过程循环插入,比如MySQL的循环逻辑:
DELIMITER // CREATE PROCEDURE InsertFailLogs() BEGIN DECLARE i INT DEFAULT 1; WHILE i <= 10000 DO INSERT INTO job_fail_logs (ExceptionId, JobId, JobName, Exception, MethodName, ServiceName) VALUES (CONCAT('EXC-', LPAD(i, 4, '0')), CONCAT('JOB-', LPAD(i, 4, '0')), '测试任务', 'TestException', 'testMethod', 'TestService'); SET i = i + 1; END WHILE; END // DELIMITER ; CALL InsertFailLogs();Mock任务失败事件批量触发
如果应用内部有处理任务失败的回调接口,写个简单的脚本循环调用即可。比如用Python的requests库:import requests import random url = "http://your-test-app/api/job/failure" headers = {"Content-Type": "application/json"} for i in range(10000): data = { "ExceptionId": f"EXC-{i:04d}", "JobId": f"JOB-{i:04d}", "JobName": f"测试任务_{random.randint(1,10)}", "Exception": "TestException: 模拟任务失败", "MethodName": f"testMethod_{random.randint(1,5)}", "ServiceName": f"TestService_{random.randint(1,3)}" } requests.post(url, json=data)运行脚本几分钟就能生成上万条记录。
临时修改测试环境代码/配置
在测试环境的后台任务代码里,临时添加强制抛出异常的逻辑,比如找到任务执行的核心方法,开头加一行throw new Exception("模拟失败");,然后把任务的调度频率调到最高(比如每秒执行一次),或者让任务循环执行数千次。测试完成后记得改回原代码。用数据库导入工具批量导入
先在Excel或CSV里生成模拟数据,用公式快速填充所有字段(比如用=CONCAT("EXC-", TEXT(ROW(A1),"0000"))生成ExceptionId),然后用数据库自带的导入工具导入:- MySQL用
LOAD DATA INFILE命令 - SQL Server用导入导出向导
- PostgreSQL用
COPY命令
这种方法适合一次性导入几十万甚至上百万条数据,效率极高。
- MySQL用
内容的提问来源于stack exchange,提问作者Monika Jadhav
相关产品推荐
相关产品推荐

