最近遇到 bug 是生产环境从数据库中采集相关数据生成报表,因数据过多,导致生成报表失败;
测试环境数据太少,没有测试出来这个问题。
测试环境的数据因为也是走正常业务产生的数据,
除了在数据库 mock 数据和正常业务产生数据
(生产环境每天的数据在 5000 条左右)
想问一下,还有其他的办法吗?
把生产环境的数据转移到测试环境的数据库试试
我也经常遇到测试环境数据量不足的场景,我都是找开发,让开发在生产上跑下数据,看一下耗时,如果耗时太大就得抛出风险了
如果设计到多张表的话我也想着到怎么处理,但是只采集单表的数据可以直接写一个 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、造数测试