关键字测试用例设计
关键字测试设计的标志是广泛重用关键字来构建专注的测试用例库,以测试软件包的全部功能范围。在自动化测试的特殊情况下,更强大、更有效和更高效的框架广泛重用了关键字实现代码和更低级别的其他代码。
关键字驱动测试是一种更高的抽象,通常是对为验证软件功能而设计、实现和执行的测试的自动化。测试通常首先被设想、记录和运行为手动测试用例中的一系列步骤,然后转换为自动化以进行回归测试,但这种方法的悠久历史本身并不排除改变为使用关键字测试用例进行手动或自动测试的可能性。在计划的自动化测试环境中,从一种格式生成的手动测试转换为另一种框架中的自动化测试用例的低效率可以通过直接从关键字测试用例开始来避免。关键字测试用例可以根据计划手动驱动,在未来的自动化实现之前手动驱动,或者根据需要手动驱动,当由于任何原因自动化尚未完成时。
关键字测试用例方法包括三个主要活动部门,三个角色可以根据资源技能和优势分别承担每个部门的责任,但劳动力的分离不是强制性的。关键字测试用例设计需要被测应用程序(AUT)领域专业知识和测试方法论的优势。关键字实现可能需要 AUT 接口细节的技术优势和编程技能。所需的技能水平将取决于 AUT 的复杂性/非典型实现。而关键字测试执行需要理解测试聚合、分析和问题报告、解决和联络。
测试设计过程和后续维护的成功至少部分取决于要测试的 AUT 功能以及测试本身的组织。一个常见的解决方案是树状结构,它具有节点(这里称为分区),将应用程序的功能划分为逻辑的关注或范围领域,表示树的最底层可测试的功能,并包含该级别的测试用例。每个分区都有名称、描述,并且可以进行优先级排序。
测试用例被设计为一系列关键字,包括关键字参数,以验证特定的 AUT 功能。测试设计师在测试用例中添加关键字参数值以驱动特定操作。关键字测试用例在实现和执行后,将导航到 AUT 并输入值以创建 AUT 功能的条件(即设置验证),然后验证 AUT 是否产生了预期的结果。设计师通常添加更多关键字(和值)以将 AUT 返回到初始条件(即在验证后拆除)。
以下是一个酒店预订条目验证和取消测试用例的示例
关键字 | 参数 1 | 参数 2 | 参数 3 | 参数 4 | 参数 5 |
酒店预订系统启动 | |||||
国家 | 城市 | 入住日期 | 退房日期 | 房价类型 | |
酒店预订输入 | 美国 | 加利福尼亚州 | &Date("mm/dd/yy", 5) | &Date("mm/dd/yy", 7) | AAA |
酒店名称 | |||||
酒店选择 | 海港观景宫 | ||||
前缀 | 名字 | 姓氏 | 地址 1 | 地址 2 | |
宾客详细信息输入 | 先生 | Aditya | Kuram | Plot #176, TMC Mhills | Secunderabad AP India |
床型 | 吸烟房 | 航空公司 | 航班号 | 信用卡类型 | |
特殊信息输入 | 一张特大床 | 是 | 印度航空 | AI123 | 大莱卡 |
酒店名称 | 预订 ID | 客户姓名 | 地址 1 | 城市 | |
验证预订确认 | 海港观景宫 | &Keep(ResId) | Aditya Kuram 先生 | Plot #176, TMC Mhills | Secunderabad AP India |
信用卡号 | 预订 ID | ||||
取消预订 | 123 | &ResId | |||
酒店预订系统关闭 | |||||
关键字是关键字测试设计的基本、可重用构建块。关键字定义驱动或获取应用程序对象信息的动作。关键字定义了带有一个动作描述性关键字名称(例如,酒店预订系统启动、酒店预订输入、酒店选择、预订确认验证或酒店预订关闭)和关键字参数名称(例如,国家、城市、入住日期、退房日期)的关键字。每个关键字(对于 GUI 应用程序)都与一个(有时更多)GUI 窗口相关联。每个关键字参数可能与一个窗口对象相关联,例如列表框或按钮。关键字的重用确保快速测试开发和易于维护。
关键字由测试设计师在预期在关键字测试用例中使用之前创建,或者更常见的是,关键字是按需创建的,即在实现关键字测试用例时需要时创建。关键字参数名称是与关键字一起创建的。另一方面,关键字参数值如上所述输入到测试用例中,以服务于每个测试用例的目的。这些值是文本,可以用来做
- 一个明确的参数值
- 包括以下内容的表达式
- 变量
- 功能
- 变量和显式值的组合
另请注意,关键字不仅是关键字测试设计的基本、可重用构建块,而且也是测试自动化实现的基本组成部分。运行时测试执行称为逐个关键字执行。
对于某些测试,测试人员需要使用不同的值重复执行测试用例,以进行每次迭代。这是使用数据表实现的。测试用例关键字参数值使用变量。数据表中填充了与测试用例迭代中使用的变量相关的值。测试用例将执行与数据表中记录数量相同的次数。
数据表由记录和列组成
- 记录 - 在测试用例的每次迭代中使用的值集合
- 列 - 列标题是变量名,下面的数据是与测试用例迭代中的每个变量相关联的值。
虽然上述的关键字测试用例设计和下面的测试集执行可以应用于手动测试或自动化测试,但本节关键字实现仅适用于自动化测试。
AUT 对象识别与命名
[edit | edit source]关键字和关键字参数与 AUT 窗口和对象(如列表框和按钮)进行交互。每个窗口和对象在操作系统中都被唯一识别。虽然它们拥有大量的属性,但通常只需要几个属性来区分测试执行期间活动的所有其他对象。因此,如果每个窗口和每个对象的几个属性值映射到一个唯一的对象名称,那么测试的处理就可以通过名称与对象进行交互,使用对象类型的默认方法或测试人员确定的其他方法。
关键字参数与 AUT 对象的关联
[edit | edit source]给定一个定义的关键字,包括其关键字名称和命名参数,以及一个由名称唯一标识的窗口和对象的映射,关键字只有在与一个命名窗口绑定且关键字参数与命名对象绑定时才能驱动 AUT 操作。关联还必须包括用于每个关键字参数的方法。通常情况下,该方法是标准对象类型的默认方法,但另一方面,该对象可能是特殊的,即使它是一个标准对象,测试人员也可能希望使用自定义方法与该对象交互。
关键字与现有执行代码的关联
[edit | edit source]关键字的实现可能根本不需要额外的编码。对于典型的 AUT 实现,代码(这里称为模板)对于许多关键字来说可能是通用的。模板可以预先存在,要么内置于框架中,要么在项目中创建以便在许多关键字中重复使用。可能有一些模板,每个模板都服务于不同的目的,例如值输入、值验证,或者项目中用于测试导航、设置、验证或拆卸的其他变体。因此,关键字的实现只需将关键字与模板相关联即可。
上面描述的关键字参数处理是从模板中调用的。模板通常包括对关键字参数处理的调用之外的更多内容。代码还可能包括:检查 AUT 是否已准备好进行交互;在关键字参数处理之前和/或之后进行通用导航;错误处理;或其他功能和调用。模板代码可以非常简朴,也可以根据需要扩展。在任何情况下,模板都充当实现许多关键字的通用代码。
处理 AUT 复杂性的工具
[edit | edit source]然而,有时 AUT 的复杂性需要更多代码来处理特殊情况。一些关键字的实现可能非常独特,因此需要仅针对该关键字编写代码。这个复杂的关键字可能最初是从模板复制而来,然后针对独特情况进行修改,也可能更复杂。复杂的关键字,就像模板一样,通常会提供检查、错误处理、导航和关键字参数处理。
一些 AUT 的复杂性可能在于 AUT 中常用的对象。作为处理复杂性的方法编写的自定义对象代码可以从模板(通常)或从复杂关键字中调用,以处理关键字参数。
该框架还支持其他与自定义对象、复杂关键字或项目模板相关的通用功能库。
测试集执行
[edit | edit source]汇总和重复使用每个主要测试目的的测试用例
[edit | edit source]关键字测试用例可以被广泛地重复使用。每个测试用例的目的是验证 AUT 的某些功能,并且始终产生相同的结果。但是,每个测试用例可以在不同范围或目的的测试集中多次使用。例如,测试集可以用于冒烟测试,也可以用于更复杂的运行数天的功能测试、系统测试或验收测试。
运行手动测试
[edit | edit source]如上所述,测试用例由具有有意义的、描述动作的关键字名称的关键字构建而成,这些关键字具有与 AUT 对象(如列表框和按钮)绑定的参数名称(通常由标题、图例或其他有用的识别文本定义),以及应用于 AUT 或与 AUT 显示值比较的测试用例关键字参数值。关键字测试用例基于对人来说有意义的定义,而不仅仅是对机器有意义。因此,一个有用的框架还提供了捕获结果和提供手动执行报告的功能。
执行自动化测试
[edit | edit source]自动化基于上述的关键字实现,需要另一个级别的代码。测试用例处理引擎读取(否则对人来说很友好的)测试用例关键字和关键字参数值,以编程方式高效地驱动 AUT 并报告结果。