在学会生成测试数据之前,我仅仅知道select * from scott.emp;
加上
create table t(a number);
insert t values(1);
这就是我知道的所谓测试,幼稚吧.
为啥需要测试数据呢?
情况太多了,我的经验是,等到你需要的时候,就是找不到,干着急.
测试数据可以用来把灵感转化为实践,验证原型是否工作(可用性,可靠性,可扩展性),性能测试,提问题和重现问题 等等. 随后有一篇介绍我是如何用完善的测试数据发现了使用MERGE SQL产生的臭虫.
还支持TDD, 测试驱动开发, 用过以后你就知道甜头了, 和异步处理一样美妙!
关于提问题, 引自Tom: You would better supply very very simple create tables and insert statements.
The SMALLEST create table possible (no tablespaces, no schema names, just like I do in my examples for you)
解决方案.
--------
*) 产生多个不同数值, 得到一定的数据分布
Mod(rownum,500)
dbms_random.value(1,500)
dbms_random.normal()
*) 产生字符串
rpad('x',500,'x')
lpad(RowNum,200,'*')
dbms_random.string('l',500)
# 'u', 'U' - returning string in uppercase alpha characters
# 'l', 'L' - returning string in lowercase alpha characters
# 'p': any printable char. this one is slow
*) 数据源
# dual connect by level <= 3000 # all_objects # WITH subquery factor *) 随机排序 ORDER BY dbms_random.random; *) 点击进入具体示例
*) 参考
1. Tom, from dba_object
2. Jonathan, + materialize subquery
3. Christian Antognini, dbms_random.string()
4. Tanel, dual join dual connect by level <= 3000
维多利亚市的天鹅湖, 湖对岸右边一点是Hatley Castle城堡, 电影X-Man(X战警)三部都是在这里拍摄的.
Tuesday, January 13, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment