软件测试中基于关键字的自动化测试
一、关键字概念
建立基于关键字的测试设计和测试自动化的前提是:构成任何应用程序的离散功能性业务事件可以使用短文本描述关键字和相关联的参数值对变量进行描述。例如,大多数应用程序要求用户登录;此业务事件的关键字可以是“登录用户”,参数可以是“用户ID”和“密码”。通过设计关键字来描述离散功能性业务事件,测试员开始建立一个可用于创建关键字测试案例的通用关键字库。这便是创建语言(关键字)以描述应用程序内一系列事件(测试案例)的实际过程。
如果正确地实现和维护,关键字将呈现有关投资的良好回报,因为每一个业务事件都是作为离散的实体设计、自动化和维护的。然后这些关键字可用于设计关键字测试案例,但对关键字本身的设计和自动化开销已支付。当任何给定的关键字内发生更改时,将很容易找出受影响的测试案例并进行适当的更新,另外,关键字本身的任何设计和更新仅执行一次。将其与录制/回放相比(每次运行测试案例时,捕捉特定业务事件或业务事件的一部分)-如果登录时启动100个测试案例,则此事件将会自动运行100次,且有100种事例需要维护。
1.关键字开发
关键字的开发应采用与任何正式的开发工作相同的方式来完成。关键字需要设计、编码、实现和维护。
2.设计
测试设计员负责关键字的设计-关键字的设计至少应包括:关键字名称、关键字描述和关键字参数。
3.关键字名称
标准的关键字命名规范是先起草,接下来允许设计员进行有效地共享关键字。关键字名称应该以执行的操作<action> 开头,接下来是功能实体<entity>,然后是描述性文本<text> (如果需要),以下是几个常见实例:
登录用户–登录用户
输入用户姓名-输入用户姓名
输入用户地址-输入用户地址
验证用户姓名-验证用户姓名
挑选用户记录–挑选用户记录
关键字名称应该是关键字所执行的操作的速记描述。
4.关键字描述
关键字描述应该描述关键字的行为,并包含足够的信息供测试自动化工程师构建关键字。对于设计员而言,描述是关键字定义,而对于自动化工程师而言,则是功能规格。该描述必须简短而准确-以下是关键字是“登录用户”的示例:
登录用户描述:在登录页面输入特定的用户ID和密码,然后按“确定”按钮。
5.关键字参数
关键字参数应捕捉可影响由关键字定义的实时业务事件的所有业务输入。获取适当的参数列表的最简单可靠的方法是采取“捕捉显示事物”的方法。对于关键字“登录用户”,应用程序显示三个元素:“用户ID”、“密码”和“确定”按钮–用于支持此关键字的两个必需的参数是“用户ID”和“密码”。“确定”按钮不是必需的参数,因为关键字描述陈述“确定”按钮需要经常使用。如果有多个按钮(如“确定”、“取消”和“退出”),则需要第三个参数“按按钮”,并需要修改关键字描述。
6.编码
自动化测试工程师选取测试下的关键字名称、描述、参数、测试应用程序和关键字开发标准并构建密码。如果关键字方面有任何问题,自动化工程师将与测试设计员联系以修改设计来阐明关键字的目的。如果存在任何自动化/工程问题,自动化工程师将与开发组和工具生产商联系来找出符合自动化框架的相应自动化解决方案。
7.实现
关键字实现使用与任何可共享项目资源相同的路径。完成的关键字至少应满足以下条件:通过测试设计员的审核,自动化工程师的单元测试、功能测试,并集成到项目“Testware”中。该过程不需要很复杂或扩展性,但必须确保任何实现的关键字都公布于测试组并能实现预期的功能。
8.维护
出现以下情况时需要进行关键字维护:检测到关键字故障,更改业务事件或修改关键字标准。关键字维护遵循和关键字开发相同的部署路径:设计、编码和实现。
二、关键字测试案例
关键字测试案例是设计用于对正在进行测试的一个或多个应用程序的一个或多个方面进行测试或运用的一系列关键字。关键字测试案例必须经过设计、执行和维护的。写关键字测试案例是测试设计员/测试员的职责,仅当关键字测试案例执行过程中出现故障时需要自动化工程师介入。请注意:关键字设计范例常在缺少关键字自动化时使用–这是一个有效的独立测试设计范例。
1.设计
关键字测试案例设计包括计划测试案例的目的,使用关键字建立测试案例,以及针对正在进行测试的应用程序来测试设计。乍一看,这似乎与测试案例设计的任何其他方法没什么两样,但是关键字测试案例设计与任何徒手/文本形式的测试案例设计之间存在显著的差别。关键字测试案例设计的特征有:
一致性–每次都使用相同的关键字来描述业务事件,
数据驱动–关键字包含执行测试步骤所需的数据,
自动生成文档-关键字描述包含设计员的目的详细信息,
可维护性–有了一致性,接下来便是可维护性,最终能够支持自动化,而不需要从测试设计变换到脚本自动化。
测试设计员不需要成为测试自动化工程师就能获取测试自动化的权限。
2.执行
通过按顺序执行关键字步骤,测试员可以手动执行关键字测试案例执行–这应作为关键字验证过程的一部分执行。测试案例是使用自动化关键字构建的,可以使用测试自动化工具或集成的测试管理工具来执行。不管是否使用自动化,测试案例执行都是一种机械练习。测试案例应该包含执行测试案例,以及确定该操作成功或失败的所有必需信息。
3.维护
当应用程序行为或在一个或多个测试案例中使用的关键字设计中发生更改时,必须进行测试案例维护。正确实现的关键字框架将允许测试员通过一些查询机制来查找关键字的所有实例–将通常令人痛苦的查找受影响的测试案例的过程减少到一个简单步骤。而且,良好实现的关键字框架应该支持对关键字实例的全局更改。
三、关键字实现
1. GUI (图形用户界面)
基于GUI 的应用程序的关键字方案是最容易理解和实现的。大多数共享软件、免费软件和关键字测试的商业应用程序都涉及该领域。
2. API (应用程序编程接口)
基于API的应用程序关键字解决方案表面上看来很复杂,但这些应用程序一旦细分成离散功能业务事件,其行为便与同等GUI应用程序一样了。如果业务事件为”登录用户”,则无论使用哪个应用程序机制来实现该事件都无关紧要,如果业务驱动相同,关键字查找和行为将相同。有几个与 API 领域相关的关键字解决方案提供商,且同一提供商通常具有 GUI 应用程序的解决方案。
3.电信(通信协议)
电信领域的关键字解决方案(例如SS7)要求对电信协议非常了解.有几个提供该领域关键字解决方案的提供商。
四、关键字和测试阶段
1.单元测试
关键字可用于单元测试,但不建议这么做。应该由开发组使用开发套件中可用的工具和技术来进行单元测试。
2.功能(综合测试)
关键字测试解决方案专注于作为离散功能业务事件设计和实现关键字,为功能测试提供低本高效并可维护的测试框架。事实上,如果需要或期望基于GUI 或API 的应用程序的测试自动化,有一些框架可匹配其短期或长期ROI (投资回报)。
3. 系统测试
将关键字从功能测试提升到系统测试阶段的基于关键字的测试解决方案可帮助加速测试过程。有效的关键字框架将允许测试设计员把功能级关键字组合成系统级关键字。系统级关键字处理完整的业务事件,而不是组成业务线程的离散功能业务事件。例如,一个系统级的关键字可以是“完整客户应用程序”,该关键字可以是由这一系列功能级关键字组成:“输入客户姓名”,“输入客户联系信息”,“输入客户个人信息”和“保存客户记录”。
4.用户验收测试
关键字可用于用户验收测试,但不建议使用,除非这是测试的扩展阶段。终端用户团体使用产品最佳执行用户验收测试中可用的工具、技术和过程。