什么是数据驱动测试?学习创建框架
数据驱动测试
数据驱动测试是一种软件测试类型,其中测试数据以表格或电子表格的形式维护。数据驱动测试使测试人员能够提供一个单一的测试脚本,该脚本可以对来自表格的所有测试数据执行测试,并期望测试结果返回到同一个表格中。表格驱动测试是参数化测试的另一种名称。
自动化测试会重放记录(或计划)的用户活动系列,这些活动涵盖被测应用程序的特定部分。您可以通过使用不同的输入信息运行测试来扩展访问范围。假设您记录了将数据输入应用程序表单中的活动。记录的测试仅涵盖您在记录期间输入的数据,这些数据不太可能在程序中创建错误,但某些其他信息可能会创建错误。因此,您必须使用各种数据输入进行测试,以检查应用程序是否按计划针对各种输入值工作。这种测试方法称为数据驱动测试。
实际上,您可以记录大量具有不同输入数据的测试,但最佳选择是将数据与测试命令分离。数据驱动测试将从数据存储(如文件或数据库)中接收数据,而不是使用硬编码值。这种拆分在概念上简化了测试。具有许多硬编码值的测试可能难以适应和维护。例如,如果您需要额外的输入数据,则必须调整测试指令。
数据驱动框架
数据驱动框架是一个自动化测试框架,它从文件系统读取数据并将它们存储在测试脚本中的变量中。它允许测试人员将正向和负向测试场景组合到一个测试中。数据驱动框架中的数据输入可以包含在一个或多个数据源中,例如 .xls、.xml、.csv 和数据库。
本教程将教你
- 数据驱动测试到底是什么?
- 为什么要使用数据驱动测试?
- 如何构建数据驱动的自动化框架
- 数据驱动测试最佳实践 -
- 数据驱动测试的好处
- 数据驱动测试具有以下缺点
为什么要使用数据驱动测试?
数据驱动测试至关重要,因为测试人员通常对同一个特定测试有多组数据,并且为每组数据设计不同的测试确实很耗时。数据驱动测试允许数据与测试脚本分开存储,然后可以对输入测试数据的多种组合执行相同的测试脚本,从而提高测试结果的生成效率。
示例 - 例如,我们希望使用 1000 个不同的数据集和多个输入字段来验证登录功能。
要对此进行测试,请尝试以下方法 -
方法 1 - 为每个数据集编写 1000 个脚本,并分别执行每个测试。
方法 2 - 手动更改测试脚本中的值并多次执行它。
方法 3 - 从 Excel 表格中输入数据。一次从 Excel 行获取测试数据并运行脚本。
列表中的前两种可能性都很困难且耗时。因此,第三种方法更可取。
因此,第三种方法只不过是一个数据驱动框架。
如何构建数据驱动的自动化框架?
假设您希望评估应用程序的登录功能。
步骤 1:确定测试用例
输入正确的用户名和密码 – 登录成功。
输入错误的用户名和密码 – 登录失败
输入错误的密码和有效的用户名 – 登录失败
步骤 2:为最后三个测试用例生成准确的步骤
测试用例编号 | 描述 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|
1 | 可以通过测试登录来找到有效的凭据。 |
| 用户名:有效 密码:有效 | 登录成功 |
2 | 应在登录中检查无效的凭据。 |
| 用户名:无效 密码:有效 | 登录失败 |
3 | 应在登录中检查无效的凭据。 |
| 用户名:有效 密码:无效 | 登录失败 |
步骤 3:编写测试脚本
仔细观察,您会发现测试步骤在所有三个测试步骤中都保持不变。要执行这些任务,您必须开发一个测试脚本。
// This is known as Fake Code. // Step 1 of the Test: Run the App driver.get("Application URL"); // Step 2 of the Test: Input the Username txtbox username.sendKeys("valid"); // Step 3 of the Test: Enter Your Password txtbox password.sendKeys("invalid") // Step 4 of the Test: Analyze the Results If (Next Screen) print is successful, otherwise it is a failure.
步骤 4:准备包含输入测试数据的 Excel/CSV 文件。
步骤 5:更新脚本,使其循环遍历给定的测试数据。还应指定输入指令。
// Pseudo Code Loop 3 Times for (i = 0; i & lt; = 3; i++) { // Import data from Excel and save it in variables. int input_1 = ReadExcel(i, 0); int input_2 = ReadExcel(i, 1); // Test Step 1: Launch Application driver.get("URL of the Application"); // Test Step 2: Enter Username txtbox_username.sendKeys(input_1); // Test Step 3: Enter Password txtbox_password.sendKeys(input_2); // Test Step 4: Check Results If(Next Screen) print success else Fail }
这些仅是测试用例的三个示例。通过将测试数据值附加到 Excel,测试脚本可用于循环遍历以下测试场景。
输入错误的用户名和密码 – 登录失败
输入错误的用户名和密码 – 登录失败
输入空白用户名和密码 – 登录失败
等等…
数据驱动测试最佳实践
以下是数据驱动测试的最佳测试策略 -
在整个数据驱动测试过程中使用真实数据是极好的。
测试流的路由必须在测试脚本中进行编码。
使用有用的数据来为虚拟 API 提供动力。
数据可用于生成灵活的断言。
正向和负向测试结果都是可能的。
用于安全性和可靠性的数据驱动功能测试
数据驱动测试的好处
数据驱动提供了许多好处,其中一些如下 -
在回归测试期间,可以使用多组数据值测试应用程序。
测试数据和验证数据可以组合到一个与测试用例逻辑不同的文件中。
根据工具的不同,测试脚本可以保存在中央数据库中。这使得文本易于理解、保留和管理。
活动和操作可以在多个测试中重复使用。
某些技术会自行创建测试数据。当需要大量随机测试数据时,这很有用,因为它可以节省时间。
数据驱动测试可用于开发的任何阶段。数据驱动测试问题通常会合并到一个过程中。但是,它可以在多个测试用例中使用。
允许开发人员和测试人员将其测试用例/脚本的逻辑与测试数据分开。
可以多次执行相同的测试用例,这有助于减少测试用例和脚本的数量。
修改测试脚本不会影响测试数据。
数据驱动测试的缺点
以下是数据驱动自动化测试过程的一些缺点 -
测试的质量取决于应用团队的自动化技能。
在测试大量数据时,数据验证是一项耗时的操作。
由于数据驱动测试需要大量编码,因此维护是一项重大挑战。
需要高级的技术专业知识。测试人员可能需要学习全新的脚本语言。
将有更多文档。脚本管理、测试基础设施和测试结果是最常见的主题。
要生成和维护数据文件,需要使用文本编辑器(如记事本)。
总结
数据驱动是一个测试自动化框架,它以表格或电子表格的形式保存测试信息。
在数据驱动测试自动化框架中,输入数据可以备份到一个或多个数据源中,例如 xls、XML、csv 和数据库。
为每个数据集创建唯一的测试是一项耗时且劳动密集型的任务。数据驱动测试框架通过将数据与功能测试分开存储解决了此问题。
建议在数据驱动测试中使用真实数据。
在回归测试期间,它涉及使用多组数据值测试应用程序。
此策略的缺点在于它依赖于实施团队的自动化能力。