扒一扒数据驱动测试(DDT)与关键字驱动测试(KDT)

来源:互联网 发布:搞笑的网络用语 编辑:程序博客网 时间:2024/05/15 00:05

带软件功能测试项目的过程中,发现很多人对这两个概念很困惑,并且试图通过圈定KDT与DDT的各自边界来分离它们,结果纠结成了一团麻线。我们从它们的名称及说明来理一理

KDT(Keyword-driven testing), also known as table-driven testing or action word based testing, it separates the documentation of test case - include the data to use - from the prescription of the way the test cases are executed.(维基百科是个好东西

DDT(Data-driven testing) is a term used in the testing of computer software to describe testing done using a table conditions directly as test inputs and verifiable outputs as well as the process where test environment setting and control are not hard-code.

KDT和DDT是有区别的:什么因素对测试结果起决定性作用就是什么驱动测试过程。我们可以看到,DDT将测试数据从test case分离,通过改变这些数据我们可以得到不同的执行结果(比如说加法计算器,我们输入1,1得到2,而输入1,2得到结果为3),输入的数据是结果的决定因素,我们可以理解为是数据驱动的测试;KDT又称为“action word based testing”,改变“action word(含使用的数据)测试结果也将发生变化,我们可以理解为是word驱动的测试。

KDT和DDT也有联系。“如果我们有了一段脚本,就可以对这个脚本做参数化,使之能模拟不同数据的操作情况得到相应执行结果。基于这个共识,我们以登录脚本为例来分析这个过程——阶段1:登录脚本是由不同的action组成的(按钮点击,文本框输入),调整action word可以精准控制先执行什么、再执行什么,这是动作级的控制,确定操作的先后我们就得到了这段脚本;阶段2:将脚本中的用户名、密码作为变化的数据(参数化),我们就可以用来模拟不同用户的登录操作过程,在这个阶段我们关注的只是用户名和密码(数据),而对于先输入哪个数据、先点击哪个按钮我们并不关心(这些action对于我们来说是黑盒内的

我们可以得到如下结论:

1)驱动因素:KDT是action和data,DDT是data;

2)执行过程关注:KDT需要定义执行过程(白盒),而DDT不关注(黑盒);

3)精细度:KDT是动作级的,DDT是函数级的;

4)KDT是DDT的低级版本(越靠近实际操作过程越低级,类似于编程语言越接近机器码越低级)

5)KDT完成对action的定义封装之后,趋近DDT;

6)KDT使用面向对象思想将测试过程抽象为action word,可以定义用户的每个action。


HP UFT(老版本叫QTP)工具是市场上少有的支持这两种思想的自动化测试工具,可以通过这个工具的不同视图及参数化操作直观体会DDT及KDT思想。

原创粉丝点击