【工作经历:阿里巴巴搜索技术研发中心QA ,百度新产品测试部QA】 【领域:测试分析,自动化测试,性能测试,安全测试 】 【个人定位:高级测试工程师+培训师+领域产品专家】

基于调试的测试技术——从批量数据反推测试用例

上一篇 / 下一篇  2012-01-18 15:46:19 / 个人分类:白盒测试

接上文

以某个c++项目为例,程序a需要一个输入文件,每行代表一条记录,每行中包含2个字段,一个是qid,一个是title。
它接受批量的输入数据,然后分析输入做一些算法上的处理,比如数据挖掘,个性化推荐等。

先进行基本的测试设计,根据需求和细节设计做一些测试用例覆盖。确保需求覆盖率。

然后构造测试数据,测试数据构造基于历史数据,取线上真实的数据,然后做一些扩展。从三个维度去挑选测试用例数据
1、线上真实的基本数据,然后做扩展
2、阅读代码,根据代码逻辑,进行code review,然后做扩展
3、使用批量数据反推

依赖上面的两个步骤,就足以保证你的测试覆盖率了。
这次主要介绍第三种方法。这是一种新维度。

使用上文的方法,首先做出一个工具,我命名为gdbtest。它自动下断点,然后运行特定的命令,最后分析log。统计数据。然后开始执行如下步骤

1、分拆你的数据。为了区别不同的测试用例,你必须对输入数据拆分。我取线上1000条记录,然后拆分为1000个文件。当然,线上一般都是百万级以上的数据。具体如何拆分,自己把握吧。采用二分法什么的都可以。

2、分别使用gdbtest运行你的项目。可以采用多进程加速

3、最后对所有的log分析,并归类。就可以发现不同的测试用例了。

4、即使log中断点的信息不同,但是仍然表示测试用例是一样的,可以进一步去重



我的项目为例,第三步就可以发现200条数据中,有6条记录是走同样逻辑的。
走同样逻辑的数据的md5值是一样的。
研究后发现,走不同逻辑的原因是因为有些数据的长度不同,由此可以印证,长度不同的title,也是不同的测试用例。


然后排除掉长度不同导致的逻辑不同,就可以发现。在所有两百多条记录中,只有三种情况。
也就是说,其中至少包含了3个最有效的测试用例。
然后自己分析具体的测试数据就可以了。



如果你的数据量更大,覆盖度更大,那么发现的测试用例也会更多。

此方法还有一个好处就是可以用来寻找bad case,这在一些搜索引擎和算法的测试中,是经常用到的。









TAG:

 

评分:0

我来说两句

Open Toolbar