【讨论】【难题】一个测试问题,个人觉得有难度,请高手各抒己见
不知道发这里合适不合适,我看这里人气最旺就放这里了,如果不合适我再发到别的板块,请版主手下留情。我这里有一个实际问题的简化,相信还是有一定难度的,请大家一起讨论一下。
数据库中两个表,表A和表B,主键分别为Aid和Bid,其中都有一个字段为time,现在要分别清洗表A和表B(所谓清洗是指把非法字段和空记录删除),然后通过time字段将表A和表B做拼接,得到表C。表A和表B都很大,假设都有上亿条记录。做这个并不难,但是保证不出问题就比较困难了。
我个人觉得困难的几点:1.这两个表都是n多年前的表,可能有各种各样的无效数据,怎样保证清洗干净而不会把有用数据清洗掉;2.拼接过程怎样保证数据的一致性;3.数据可能是乱序的
问题:1.如何验证清洗和拼接的正确性和完备性?用什么测试工具?如何测试?
2.如果表A中的time字段有重复的就选Aid最大的一个做链接,其余的抛弃,这样又如何测试呢?
3.如果表A和表B还以每天还在动态增加数据又该如何?
相信这个问题还是有一定的价值的,请各路高手各抒己见,相信对自己也是个提高的机会。
1. 正确性要求怎样?完备性要求怎样?以上两个问题无论如何都需要明确。测试工具一般是自己通过写SQL做的,完成后对比验证清洗和拼接的正确性。测试的时候采用业务数据抽样做。
2. 这个应该不是测试的问题,而是清洗方法的问题吧,A-time如果存在重复,肯定是数据库设计存在漏洞,即使修补过来了,可能存在垃圾数据,用个SQL语句检查下就好了。
3. 动态新增数据不是大问题,关键是当你执行这些SQL时,保证数据库是增量的即可。到时候完成之后再把对应增量部分的内容加入到新数据库即可。这里的关键前提是增量的新数据必须严格按照最新的要求完成。切忌A-Time重复等情况。 多谢了。
我再解释一下问题:
正确性是指清洗时没有清洗掉有用数据,拼接时没有拼接错;
完备性是指应该拼接的都拼接上了,不该拼接的都没有拼接上。
讨论:
1.你说的自己写sql语句,我也想到了,可是是什么思路呢?清洗如何验证?拼接如何验证?是验证统计信息(比较记录条数)?还是逐个比对?具体如何做?
2.其实这里还有一个问题,就是历史遗留的垃圾数据问题,究竟什么样的记录是垃圾数据我们也不清楚,(比如哪个字段出现了不应该出现的值,只能等业务确认,所以如何识别这些垃圾数据也很成问题,现在的问题是开发识别不过来,推给测试这个工作了)
2.抽样数据的问题,现在开发时就是抽样的数据,测试其中的一项工作就是尽量扩大抽样范围,因为抽样很有可能有些情况被跳过了。
3.增量问题。增量有一个问题就是时间乱序,比如说10号出现的增量可能是8号那天的数据,所以和9号的乱序了。这个我们如何检验开发写的程序没问题?
页:
[1]