Frank。我个人并不知道有任何自动化工具可以将一小部分生产数据“捕获”到测试套件中,但在我的一天中,我能够使用QMF和一些通用查询来做到这一点。它确实需要对表结构,父 - 子依赖关系,参照完整性和其他事物进行前瞻性规划/分析。
它确实需要做一些初步工作,但一旦完成,我就可以使用这些工具并重新使用这些工具来提取生产数据的几个不同视图,以供测试之用。 如果这吸引你,请继续阅读。
在一个高级视图,你可以这样做:
- 确定键列名是什么。
- 为他们创建一个“keys”表。
- 编写几个查询来查找您的测试条件并填充keys_table。
- 一旦您满意key_table有一个令人满意的键子集,那么您可以使用您创建的工具为您去除数据。
- 编写一个通用查询,它将keys_table与您的生产表连接起来,并将数据导出到平面文件中。
- 编写一个proc自动完成所有的提取/填充。
如果您有机会获得QMF(你可能做的DB2店),你可能能够做这样的事情:
- 确定所有你需要的表。
- 确定这些表的主索引。
- 确定这些表的任何参照完整性要求。
- 确定所有表之间的父子关系。
- 对于最低级子表(通常是具有大多数索引的表)注意用于标识唯一键的所有列。
通过上述信息,您可以创建一个通用查询来删除生产数据中的较小部分,如#5。换句话说,您可以创建一系列特定的查询并填充您创建的小型密钥表。
在QMF,你可以创建这样的通用查询:
select t.*
from &t_tbl t
, &k_tbl k
where &cond
order by 1, 2, 3
在proc,您只需通过表名,密钥和变量condtions。一旦数据被捕获,您将数据导出到某个文件名。
您可以创建一个EXPORT_TABLE PROC会是这个样子:
run query1 (&&t_tbl = students_table , &&k_tbl = my_test_keys ,
+ &&cond = (t.stud_id = k.stud_id and t.course_id = k.course_id)
export data to studenttable
run query1 (&&t_tbl = course_table , &&k_tbl = my_test_keys ,
+ &&cond = (t.cour_id = k.cour_id
+ (and t.cour_dt between 2009-01-01 and 2010-02-02)
export data to coursetable
.....
根据需要这可以捕获所有的数据。
然后,您可以创建一个IMPORT_TEST PROC反其道而行之:
import data from studenttable
save data as student_table (replace = yes
import data from coursetable
save data as course_table (replace = yes
....
这可能需要一段时间来建立,但至少你会再有一个可重复使用的工具来提取数据。
希望有所帮助。
好主意,我可以导出到csv,但我找不到导入cvs的插件:( – ALOToverflow 2010-10-20 13:59:30
你可以从其他格式导入吗?找到一个工具来转换CVS应该是相当简单的 - >任何表格格式真的,快速谷歌搜索“db2 cvs导入”让我这个链接http://bit.ly/crs4xH,但我不知道这是不是一个好的包,只是说,这应该不会太难你做一些研究。:) – Arve 2010-10-20 14:09:15
是的。我知道谷歌能为你做什么;)不幸的是,我们的工作环境是严格的(出于安全目的),所以我无法下载我在Google上找到的任何东西。 – ALOToverflow 2010-10-20 15:26:59