基于特征驱动的自动化方案
上一篇 / 下一篇 2012-10-16 10:09:46 / 个人分类:自动化测试
KG a)]SM0 概述
3{&~q&_*|{051Testing软件测试网g)V qgtN7b9|数据驱动在PS产品线是一种常见的自动化方式,由于想法自然、设计简单、收益显著,是一种自动化的常见方案。然而数据驱动却存在着一些缺点让我们很头疼,首先是数据的维护问题,我们需要保存大量的输入和预期输出,模块一旦涉及功能上的升级,我们就需要手动添加测试用例来保证自动化工具的case覆盖率和有效性,同时随着模块不断地升级,数据集不断增大,自动化的执行时间也越来越长;其次是数据驱动在回归测试方面引用广泛,但在新功能测试方 面显得不是很有效,新功能测试一般来讲注重的是策略的分析和数据的构造,而数据驱动的思想则不能够很好地支持数据的自动构造,最主要的数据构造过程还是需 要手动完成;再次,数据驱动最大的问题就是数据失效问题,一般一个测试点需要对应多组数据,如果模块的一次升级在某个功能点上发生变化,那么对应测试点的 几组数据全部都需要修改,前面提到数据驱动的数据集会不断增大,所以数据失效引起的维护成本是不可忽略的,随时间的推移,会越来越大,并且一旦模块功能发 生重大升级(如切词升级),很可能引起大片数据的失效,导致工具运行时出现大片的“FAIL”,这时的数据维护成本会急剧上升。在这里我们提出一种基于特 征驱动的自动化方案,能够较好解决上述数据驱动方式的三个不足,大大减轻了数据成本的维护工作量,测试工程师的焦点更关注于策略本身,而不必手动构造、添加大量的case。我们首先在架构、代码较为清晰的DA模块上做了尝试,通过该自动化思想下的指引做了DA模块的自动化改造,通过投入试用后发现,相比之前的数据驱动方式,测试效率有了明显的提升。51Testing软件测试网!iTu2hy6KA%?G _
R5f%p Qx*F*Lq0 关键词:自动化方案;数据驱动;特征驱动;数据维护51Testing软件测试网m1q3ZC,l;q
51Testing软件测试网]|4jz Fp9j#B4~介绍51Testing软件测试网7j/{4P$WlE`~9H1N
'o d7E.hP6L,euX{0 所谓特征驱动,是指通过数据的特征来驱动case的验证。所谓基于特征驱动的自动化方案,是指通过保存每个功能点数据的特征来实现case的回归自动 化,通过构造特征来实现case的新能能自动化。那么何为特征呢?其实很简单,就是指数据的一些特定属性。看一个DA的数据驱动case,构造输入:“無 料アニメ画像掲示板”& 构造预期输出:“R_IBD 11”,这个query之所以返回R_IBD是因为满足两个属性 —— 论坛属性和写真属性,那么这个数据驱动的case,我们就可以改写为,输入特征:“isForum=1,isPhoto=1”& 预期输出:“R_IBD 11”。
qzbt XMX@00?F0Sk\*R5Y0 从case书写的角度看,似乎两者并没有什么本质的区别,只不过一边是真实的query,一边是一串 符号,但带来的变化是不可忽视的,第一,case的可读性增强,显然,“isForum=1,isPhoto=1”清楚表达了输入数据的特点以及策略的思 想,而单纯一个query放在那儿,只能靠感觉来判断这个输入数据的策略预期;第二,case的表达性增强,用集合论的术语来讲,数据驱动中一组case 表示的只是一个元素,而特征驱动中一组case表示的是一个集合,换句话说,“isForum=1,isPhoto=1”不仅代表了“無料アニメ画像掲示 板”,而且代表了所有满足论坛属性和写真属性的query;第三,case的有效性加强,直接使用输入数据来存储,一旦切词程序、属性词典等其他因素发生 变化,保存数据就可能失效,而属性表达的是数据之上的高级特征,不存在特征失效的问题,除非策略发生了变化或者出现了冲突,即便出现策略冲突情况 时,case的可读性也会发挥作用,不会在追查问题上耗费大把的时间。