有时我们要进行大规模的数据测试,要往DB中插入大量的数据。
一下有三点是我们要考虑的:
【保护已有数据】
这么做有两个目的
1.我们只想对我们插入的数据进行测试。
2.我们在测试结束之后,还要删除我们插入的数据。
如何做
(可以作为区分的条件:程序中抽出数据时的条件,作为我们用以区分的条件)
举例
比如:抽出数据的条件是 select * from user where updatetime = 当前系统时间之前的一个小时
现在时间是20120517
这样我们在做数据之前,把系统中已有的数据的 updatetime 都调整成将来很远的一个日子 比如 20120626
这样程序执行时,便不会对我们的寄存数据产生影响。
(备考:对于插入的数据,我们使用存储过程,定义一个比较早的时间,比如20120501)
这样便可以达到以上那两个目的了!
好处:
保护寄存数据不受影响。
------------------------------------------
【大规模数据影响普通测试】
这一点是今天下班回家
在车上时,突然想到的!
之前总是觉得,大规模的数据做成之后,就无法再实行普通的测试了。
因为,一个select条件一下子抽出了上百万条数据。
但是并不是这样,因为我们忽略的一个问题,
就是我们可以通过更改抽出条件,使得这大规模的数据不被抽出。
还是上面提到的抽出条件 updatetime 现在时间是20120517
寄存数据是20120501
我们可以把这些数据都调整为 20120505
(大规模数据更改时间,虽然会慢,但怎么都比把数据删了,再做数据强)
这样,大规模的数据对于我们的普通测试便不会再产生影响。
(除此之外,如果工程允许debugdate,我们还可通过修改debugdate来实现,
不让百万条数据被抽出.我们的这个工程有这个功能,可以设置调试时间,
比如把调试时间设置成20120202,那么程序运行时,对应程序来说,
当前的系统时间便是20120202)
好处;
让我的测试能顺利进行,不受他会、规模数据的影响
---------------------------------------
【不要着急删除数据】
每次做数据都是一件非常麻烦的事情。
比如这次,做一次300万件的数据(postgre和oracle两端)大概需要6个小时。
删除这些数据,需要1个半小时左右的时间。
当我们在完成一次性能测试之后,发现性不好,还会进行性能测试时。
不要急着删除这些数据,就算在下一个性能测试之前,还有普通的机能测试。
我们也可以留着这些数据,通过上面的方法。
使大规模数据,不对我们的普通测试产生影响!
好处:
这样,我们便可不必每次都花费大量时间准备数据 删除数据。
准备一次即可!