新手区 报表从数据库中采集相关数据生成报表,数据太少怎么办?

Camellia · 2024年06月27日 · 最后由 橙子 回复于 2024年06月28日 · 4442 次阅读

最近遇到 bug 是生产环境从数据库中采集相关数据生成报表,因数据过多,导致生成报表失败;

测试环境数据太少,没有测试出来这个问题。

测试环境的数据因为也是走正常业务产生的数据,

除了在数据库 mock 数据和正常业务产生数据

(生产环境每天的数据在 5000 条左右)

想问一下,还有其他的办法吗?

共收到 8 条回复 时间 点赞

把生产环境的数据转移到测试环境的数据库试试

我也经常遇到测试环境数据量不足的场景,我都是找开发,让开发在生产上跑下数据,看一下耗时,如果耗时太大就得抛出风险了

如果设计到多张表的话我也想着到怎么处理,但是只采集单表的数据可以直接写一个 sql 循环 (具体数据可以参考业务产生的数据),只要主键不冲突就行了
比如这个:
DECLARE
max_count number(10); --定义变量
begin
max_count:=200;

while(max_count < 641)

LOOP
insert into TEST_SET
("BIZ_CLS_CODE", "BIZ_CLS_NAME","UPDATE_TIME", "FEE_CONFIG_METHOD")
values (max_count, '股票', TO_TIMESTAMP('2023-03-28 13:03:04.640709', 'SYYYY-MM-DD HH24:MI:SS:FF6'), '0');
-- DBMS_OUTPUT.put_line(max_count); --输出当前循环数
max_count := max_count + 1;
end loop;
END;

先搞清楚这个 BUG 产生的原因是什么?为什么数据过多就生成报表失败?
一般原因:1、表没有索引,查询太慢导致超时;
2、处理数据回填时候有不规范的代码设计,比如 for 中操作数据库、内存爆了、锁表等等
然后就是在测试环境构造大数据:
一般方法:1、同步线上数据到测试环境;
2、利用 jmeter 等工具 API 并发生成

让 DBA 把生产的数据,拷贝到测试环境的数据库试一下呢

测试数据的问题,我是车载数据,测试环境根本就没有,生产数据甲方不愿意提供,或者提供的只是很少一部分,这个我都没法测,开始还很纠结,后来就无所谓了,1、这个数据我造不了 2、没法解决测试数据的问题

写 insert 语句不行吗,自己插不就好了

1、生产数据导出脱敏,再导入测试环境
2、造数测试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册