1.什么是数据驱动测试?
数据驱动测试(DDT) 在计算机软件测试领域是个普通术语。它定义了一个测试,这个测试的完成要使用一个数据表格直接作为测试的输入和可验证的输出。另外,在数据驱动测试过程中,测试环境设置和控制都不是硬编码的。这种测试过程很流行并且常常在录制回放之后来应用。换句话说,一旦捕获了一组测试对象后,测试员就需要从外部数据文件添加更多输入数值,以便应用系统能处理大量将来的应用场景。从控制方法上来讲,外部信息是从数据库读进来的,这些数据库可以是任何以下数据文件。
- 数据池
- Excel 文件
- ADO 对象
- CSV 文件
- ODBC 数据源
更好地理解这个数据驱动测试方法的最简单办法就存在于一个自动测试的录制过程中。一些情况下,在录制过程中你选择的值不会发现任何缺陷或错误。但是录制过程中没有使用到的其它数值却会发现一些缺陷或错误。这时候测试员就需要一组数据集来使他们的测试输入多样化。
另外,如果你想做些变动,例如添加更多或削减一些数据,你完全可以自由地重新规制数据而不必对硬代码的数值做任何改动。假如这此变动是硬代码数值本身,当然你就不得不对代码和数据都进行改动。
下图可以帮助你更好地理解数据驱动的框架:
数据驱动测试的好处
- 在开发员还在开发应用、软件时就可以并行地开发测试脚本。设计、计划、运行数据集的整个过程是和应用开发完全独立的。
- 测试员可以避免开发一些不相关或不必要的重复的测试脚本。因为在此之前,我们已经列出了一个标准文件,包含了测试的输入及测试的验证数据。
- 所的输入的产出,切实可行的测试结果的输出都会被收集并保存到有序管理的文本记录里。
- 测试用例要能适应大量的数据集,因为这些外部信息是独立于测试用例收集的。这些信息保存在以Excel文件、XML或其它测试资源存在的外部资料里。
- 测试脚本改变时不会影响到测试数据,因为数据驱动测试的运行是独立于开发的。即便测试员做了多次变动也不会影响到开发者。
- 如果使用数据驱动框架的方法,进行了多个场景和输入的测试,将来产生错误或缺陷的可能性就会很小。这对测试人员来说是个好消息。
2.使用Katalon Studio进行数据驱动测试的方法
Katalon Studio 支持数据驱动测试,它允许用户定义测试数据集。并且对比其它的数据驱动测试框架,它执行脚本更快更容易。
数据驱动测试示例工程
我们通过测试一个预定服务,来描述这个简单的数据驱动测试示例。预定表格中包括5个不同的字段,每个字段都包含多个选项。特定用例使用的数据可能发现不了被测应用的错误,但其它数据集可能就能发现。为了保证无论任何输入情况下被测应用都基本能工作,你就需要发挥数据驱动测试的优势,对这个测试场景使用不同的数据集自动地执行很多遍。
示例的场景如下:
- 打开Katalon demo AUT website的登录页面 (http://demoaut.katalon.com/profile.php#login)
- 使用3个不同的帐号登录
- 验证登录是否成功
- 关闭浏览器
你可以通过以下步骤来自动化以上场景。
使用网页记录功能创建一个新的测试用例
1. 创建一个新的测试用例并继续生成以下步骤:
- 打开 http://demoaut.katalon.com/profile.php#login (the Katalon demo AUT website)
- 输入用户名、密码
- 点击登录
- 验证预定页面是否显示出来
你可以使用网页录制功能快速地创建测试步骤。
步骤 1: 点击主工具栏上的New Test Case按键,输入测试用例名称并点OK, 一个空的测试用例就创建了。
步骤 2: 主工具栏上点击Record。
步骤 3: 点击录制对话框中的录制开始录制测试用例。
步骤 4: 进行以上场景步骤。
2.生成的测试用例应该和以下的图例相似:
你可以看出来录制过程中你输入的用户名和密码值(本例中,admin/abc123)是硬代码化了。为了使用不同的帐号来多次运行这个脚本,你需要参数化这些值。请继续下面的步骤。
修改数据驱动测试用例,指定输入值
3. 切换到测试用例的变量页面,并创建两个变量,名字分别为 ‘demo_usn’ 和 ‘demo_pwd’。
步骤 1: 切换到测试用例的变量页面。点击Add(添加)。
步骤2: 变量列表里会新增一行。创建两个变量,名字分别为 ‘demo_usn’ 和 ‘demo_pwd’。做完后保存测试用例。
4. 切换回测试用例的手工视图,把这两个变量设成username/password字段的输入。
现在你就完成了参数化登录所要求的字段的必要步骤了,继续在以下的步骤中为测试用例的运行准备数据。
5. 在Katalon中创建数据文件,其数据集中包含3个登录帐号。你可以从多种源头创建数据文件,诸如Excel, CSV, 数据库 等等。点击链接Manage Test Data 了解关于从不同源头创建测试数据的更多细节。下面的例子展示了有3个登录网站http://demoaut.katalon.com 帐号的内部数据文件。 (注意只有 ‘John Doe’ 是有效的):
数据驱动测试的执行
你可以在两种地方进行数据驱动测试:测试集或测试用例。
A.从测试集执行
6. 接下来, 创建一个测试集,以便用定义的数据集来执行测试用例。
7.展开数据绑定部分, 把创建的数据文件添加到测试数据部分。然后把两个变量 ‘demo_usr’ 和 ‘demo_pwd’绑定到数据文件的对应列上。如果想要了解更多关于变量绑定的细节,你可以点链接Data for test execution。
8.最后你可以运行测试集,你的登录测试用例将会分别使用测试数据文件中定义的帐号,运行三次。
B. 从测试用例执行
6. 我们也可以在单个测试用例中实现驱动测试。创建一个新的测试用例并切换到脚本模式。要使用多组数据进行迭代测试,我们需要FOR 语句,并且调用测试数据对象。
- 从Katalon内嵌的库中导入 InternalData类。并在本地测试数据表中定义data 变量
- 使用For语句循环完测试数据表中的所有行。行数就是你的测试用例将要执行的次数,使用 getRowNumbers() 方法来获得行数。
- 使用GetValue方法来获得测试数据表中的一行值。例如:
用户名字段: data.internallyGetValue(“demo_usn”, index)
密码字段: data.internallyGetValue(“demo_pwd”, index)
7. 脚本视图中做完后,切换回到手工视图,测试用例就和下图显示的一样:
8. 最后你可以运行测试集,你的登录测试用例将会分别使用测试数据文件中定义的帐号,运行三次。