数据驱动测试

数据驱动测试是一种测试方法,其中测试的输入和输出值与代码分开。 通常,这种形式化意味着,通过对测试代码进行少量投资以使其更通用,仅需识别相关数据,就可以轻松编写大量测试用例。

数据驱动测试非常适合用于处理一组用于定义其行为的输入值(例如,测试 API 时,输入和输出参数可以定义为数据源),测试代码使用数据、发出 API 调用并验证结果。

TAEF 中的数据驱动测试支持

TAEF 提供了各种用于创作数据驱动测试的选项。 让我们了解这些选项,以便你可以选择最适合测试方案的选项。

基于表的数据驱动测试 解决方案允许对数据参数变化以及定义参数类型进行精细控制。 在本例中,DataSource 是在 XML 文件中定义的表。 可以指定参数类型(int、unsigned int、size_t、bool、double、DWORD、__int64 等及其同质数组变体),或者类型默认为 WEX::Common::String(本机)或 string(托管环境)。 表中的每一行都是参数值的一组变体。 将针对表中的每一行重新调用测试方法。 下面是用于基于表的数据驱动测试的 XML DataSource 的代码片段:

1  <?xml version="1.0"?>
2   <Data>
3     <Table Id ="Table1">
4          <ParameterTypes>
5                  <ParameterType Name="Size">Int32</ParameterType>
6                  <ParameterType Name="Color">String</ParameterType>
7          </ParameterTypes>
8          <Row>
9                 <Parameter Name="Size">12</Parameter>
10                 <Parameter Name="Color">Blue</Parameter>
11         </Row>
12         <Row>
13                 <Parameter Name="Size">4</Parameter>
14                 <Parameter Name="Color">White</Parameter>
15         </Row>
16         <Row>
17                 <Parameter Name="Size">9</Parameter>
18                 <Parameter Name="Color">Black</Parameter>
19         </Row>
20    </Table>
21  </Data>

若要了解详细信息: 基于表的数据驱动测试

轻型数据驱动测试支持不提供基于表的数据驱动测试解决方案提供的完整保真度。 为澄清起见:轻量级数据驱动测试将数据参数限制为 WEX::Common::String(本机)或 String(托管),这不同于基于表格的数据驱动测试方案所支持的多种类型。 但是,如果你正在寻找低成本和快速的数据变体(例如一个或两个参数)来使测试方法数据驱动,而你认为添加 XML 文件作为 DataSource 似乎并不值得麻烦,轻量级数据驱动测试可能正是你要查找的内容。 一个很好的示例是开发人员为一个 API 编写单元测试,比如 OpenThemeData(...),并希望针对“Button”、“Listbox”和“ScrollBar”验证该 API。 创建 XML DataSource 文件的重载可能太多,但使用轻量级数据驱动测试支持,可以在源代码本身中有效地执行此作。 如果指定了多个参数,TAEF 将在后台生成参数的 n 向组合扩展,并且将为每个组合调用测试方法。 若要了解详细信息: 轻型数据驱动测试

轻量级数据驱动测试提供的 n 向组合式扩展可能会变得昂贵,并且会降低回报,因为测试方案变得更加复杂。 在此类复杂的测试方案中, 基于 PICT 的数据驱动测试 解决方案提供的成对独立组合测试(PICT)可能是你要查找的。 PICT 通过生成一组紧凑参数结果来全面覆盖参数,从而提供大量价值。 了解有关 PICT 的详细信息以及如何在 基于 PICT 的数据驱动测试 解决方案上使用此解决方案的链接。

使用 基于 WMI 的数据驱动测试 支持,还可以向测试添加前置条件,并根据测试计算机上可用的资源获取信息(数据)。 例如,如果您希望仅在计算机已加入域时运行测试,并且在运行测试时需要域名信息。 在本例中,DataSource 是一个 WQL 查询。 详细了解如何在测试方案中利用 基于 WMI 的数据驱动测试

请注意上面列出的所有选项,你还可以设计出一个方案,这个方案可能将上述选项的组合看作合适的。 例如,你可能希望使用 WMI 查询来获取连接到测试计算机的所有打印机的相关信息,但可能有另一组参数可以使用基于表的数据驱动测试构造预先定义。 如果希望测试的数据来自两个单独的表,因此允许每个表在其他测试中重新使用,则多个 DataSource 规范也很有用。 阅读有关如何为测试指定多个数据源的详细信息,以及执行此操作时应用的约束:指定多个数据源

在本节