关于大数据量测试的瞎想
上一篇 /
下一篇 2012-01-04 11:24:28
/ 个人分类:测试方法
在互联网行业,尤其是像淘宝这样的平台网站,时常会遇到大数据量的测试,也就是说海量的输入数据和海量的输出数据。为了保证数据的多样性以及正确性,我们往往希望利用线上的数据进行测试以达到更高的覆盖率。这时就遇到了一个问题,如何测试海量数据的输出呢?手工计算肯定是不可能的,而让测试写一个一模一样的算法成本高,质量也不一定能保证。
除了传统的设计测试用例的方法以外,这里列出四个方法供大家讨论,如有不对的地方希望指正。
第一,抽样。
我这里所说的抽样不是找出几个数据来算出他的输出,而是找一种或两种情况来看。当我们规定了特定的规则以后,程序判断就变的简单、易行了,这样可能通过一个很简单的程序,甚至是sql就可以解决问题。我瞎编一个例子吧,比如我们要在年终的时候给客户予以积分的反馈,那么根据等级以及购买的东西不同我们可以给予不同的积分。我们可以找一种情况写程序进行测试,例如vip3购买彩票超过500块钱的有3000积分。那么我们只要在大数据中找出这些数据,然后再看看系统算出的积分是否为3000,用户数是否正确就可以了。
第二,代码覆盖归类。
这个办法其实基于分类的思想,也就是根据数据对于代码执行路径的不同进行分类,这样无限的数据最终变为有限的情况,然后在每个类型中选取一个数据进行验证。覆盖的维度可以根据时间的充裕程度进行选择,如果时间很多可以考虑路径覆盖,如果有限责可以考虑branch coverage。
第三,Metamorphic Testing。
首先简单介绍一下metamorphic testing,这个方法的思想很简单,当一个点很难测试的时候可以换一个角度,利用一种或者多种的蜕变关系进行测试。我继续用刚刚那个例子瞎编,对于一个返积分的活动,我们很容易可以想到,当用户购买的金额增加了,那么他所获得的积分也会随之增加。我们可以改变输入的数值,也就是通过增加减少购买的金额的方式,来比较两次结果的趋势。我们也把两个数值作为一个蜕变关系。
第四,两份代码验证。
这个方法是成本最高的一个方法,也就是让两组开发做同样的功能,然后比较两组数据的一致性。但是这个方法有个很大的缺点,两组开发很可能会有同样的错误。
收藏
举报
TAG: