6.2 自动化测试框架 ATF
- 目录
- 一、自动化测试框架 (ATF) 简介
- 1. Automated Test Framework(ATF)
- 2. 使用自动化测试框架 (ATF)的好处:
- 二、 ATF的测试类型
- 1. 功能业务逻辑测试
- 2. 回归测试
- 3. 浏览器兼容性测试
- 4. 服务器端 Jasmine测试
- 三、 ATF测试的基本组成部分和元素定义
- 1. 测试套件
- 2. 测试
- 3. 测试步骤
- 四、 分配ATF角色
- 1. 测试设计人员
- 2. 测试管理员
- 3. Web服务测试员
- 五、 开发ATF测试
- 1. 确定每个进程/应用程序的基本功能
- 2. 创建测试以验证基本功能
- 3. 将测试打包到套件中
- 4. 运行或安排测试执行
- 5. 监控和修复问题
- 六、 运行ATF测试和测试套件
- 1. 了解基本知识
- ① 每个测试都是隔离的
- ② 测试步骤之间传递值
- ③ 被模拟的用户未被模拟
- ④ 测试数据回滚
- 2. 将其排除在生产环境之外
- 3. ATF无法在生产实例上运行的原因
- 七、 通过快速启动测试加速开发
- 1. 代表一小组关键用例
- 2. 使用 ServiceNow 应用程序的演示数据轻松安装
- 3. 可用作模板来构建和定制与您独特流程相匹配的测试和测试套件
- 4. 复制并配置后,针对实例特定数据运行
- 5. 如果 ServiceNow 更改了原始测试,请注释您的测试副本
目录
一、自动化测试框架 (ATF) 简介
1. Automated Test Framework(ATF)
ServiceNow 自动化测试框架(Automated Test Framework(ATF))是ServiceNow平台上的一种自动化测试工具,旨在帮助开发人员和测试人员快速、高效地创建和运行测试用例。ATF允许用户记录和回放交互式测试,同时还支持JavaScript编写的自定义测试脚本。通过ATF,用户可以轻松地执行端到端的集成测试,确保应用程序在ServiceNow平台上的正常运行。
ATF提供了丰富的功能,包括创建测试套件、记录测试步骤、管理测试数据、执行测试、生成测试报告等。它还提供了与ServiceNow平台的无缝集成,可以轻松访问平台的各种对象和数据,从而更好地支持测试需求。总的来说,ATF为ServiceNow平台上的应用开发和部署提供了自动化测试的解决方案,有助于提高开发质量、减少缺陷,并加速发布周期。
2. 使用自动化测试框架 (ATF)的好处:
- 提高生产率
ATF可以为大多数手工测试用例提供覆盖,减少 Servicen升级周期,并加快生产时间。回归测试可以由单个系统管理员运行,而不需要特定的业务流程专业知识。还可以创建可重用的测试模板,以加快通常执行的测试模式的开发。- 易用性
ATF是为技术和非技术用户设计的。虽然脚本支持复杂的测试,但ATF的目标是作为无代码或低代码的解决方案。使用ATF不需要额外的工具或软件。- 更好的精度测试
ATF提供了创建可重用测试计划的能力,以减少手工工作测试是基于可靠的最佳实践开发的,同时避免了不一致的常见用户测试错误。
二、 ATF的测试类型
1. 功能业务逻辑测试
功能业务逻辑测试(Functional business logic testing)是验证软件应用程序中的业务逻辑是否按照预期工作。在这种测试中,测试人员会检查应用程序的各种功能是否符合业务需求和规格说明,以确保软件能够正确地处理各种输入,并产生预期的输出。
功能业务逻辑测试通常涉及以下方面:
- 验证业务规则:测试人员会检查应用程序中实施的各种业务规则和逻辑,确保它们按照要求进行操作。
- 数据验证:测试人员会验证应用程序是否正确地处理各种类型的数据,包括边界情况、无效输入等。
- 流程测试:测试人员会测试应用程序的各种功能流程,例如用户交互、工作流程等,以确保整个流程正常运行。
- 异常处理:测试人员会测试应用程序对异常情况的处理能力,包括错误输入、系统故障等。
通过进行功能业务逻辑测试,可以确保软件应用程序符合业务需求,功能正常且稳定。这有助于提高软件质量,减少潜在的错误和问题,并增强用户体验。
2. 回归测试
回归测试(Regression Testing),旨在确保新的代码变更或软件更新不会对现有功能产生负面影响。其基本原理是当软件进行了修改、更新或添加新功能后,通过重新运行之前已经通过的测试用例,来验证修改后的代码是否仍然能够正常运行,并且未引入新的错误或问题。
回归测试通常用于以下情况:
- 当软件发生变更时,包括修复缺陷、增加新功能、优化代码等。
- 当环境变更时,例如操作系统升级、数据库迁移等。
- 当配置变更时,例如服务器设置调整、网络设置变更等。
回归测试的目标是确保软件在经过改动后,仍然保持原有的功能不受影响,避免新的问题或错误出现。
通过自动化回归测试,可以提高效率,减少手动测试的工作量,同时更快地发现潜在的问题并及时修复,有助于保证软件质量和稳定性。
3. 浏览器兼容性测试
浏览器兼容性测试(Browser compatibility testing)是指在不同的Web浏览器和操作系统环境下测试网站或Web应用程序的能力。由于不同的浏览器(如Chrome、Firefox、Safari、Edge等)和不同的操作系统(如Windows、MacOS、iOS、Android等)对网页的渲染方式、支持的技术标准和性能表现有所差异,因此进行浏览器兼容性测试至关重要。
在进行浏览器兼容性测试时,测试人员会验证网站或Web应用程序在各种主流浏览器和操作系统下的展示效果、功能正常性和用户体验。这包括但不限于以下方面:
- 页面布局:确保页面在不同浏览器下的显示效果一致,并且符合设计规范。
- 功能测试:验证各种功能,如表单提交、按钮点击、动画效果等,在各种浏览器下正常工作。
- 兼容性测试:检查网站或应用程序在不同浏览器版本和操作系统版本下的兼容性。
- 响应式设计:确保网站具有良好的响应式设计,在各种设备上都能够正确显示和操作。
通过进行浏览器兼容性测试,可以确保用户在不同的浏览器和设备上都能够获得一致的体验,提高用户满意度和网站可访问性。这有助于确保网站的稳定性和可靠性,同时扩大网站的受众范围。
4. 服务器端 Jasmine测试
服务器端 Jasmine测试(Server-side Jasmine testing)是指使用Jasmine测试框架来进行服务器端JavaScript代码的单元测试。Jasmine是一个流行的行为驱动开发(BDD)测试框架,它可以用于编写清晰、结构良好的测试用例,并提供丰富的断言和测试工具。
在服务器端JavaScript应用程序中,例如Node.js应用程序,开发人员通常会使用Jasmine框架来编写各种单元测试,以确保服务器端代码的功能正确性、健壮性和稳定性。
服务器端Jasmine测试通常涉及以下方面:
- 单元测试:针对服务器端JavaScript代码中的各个模块、函数和方法编写单元测试,以验证其行为是否符合预期。
- 异步测试:针对包含异步操作的代码编写测试用例,例如异步API调用、文件系统操作等。
模拟和存根:使用Jasmine框架提供的模拟和存根功能,模拟外部依赖或者创建虚拟环境来进行测试。- 断言和期望:使用Jasmine框架提供的各种断言和期望功能来验证代码的行为和输出。
通过进行服务器端Jasmine测试,开发人员可以更加自信地进行代码重构、优化和功能扩展,因为有了一系列的测试用例来验证代码的行为。这有助于提高代码质量、减少潜在的错误,并促进持续集成和持续交付流程的顺利进行。
三、 ATF测试的基本组成部分和元素定义
1. 测试套件
测试套件(Test suites)通常用于组织需要进行回归覆盖的一系列测试用例。通过将相关的测试用例放入一个测试套件中,用户可以轻松地一次性执行整个回归测试,而不必手动逐一执行每个测试用例。这样可以节省时间,并确保所有相关的测试都被全面执行。
另外,测试套件也可以用于组织不同类型的测试,例如功能测试、性能测试、安全测试等,以便根据需要执行不同类型的测试。
测试套件表示一个或多个测试或其他测试套件的分组。子测试套件的层次结构可以是任何级别。同一个测试可以包含在多个测试套件中。但是,一个测试套件只能被分配个父测试套件。
测试套件中的测试和子测试套件在表单底部的相关列表中标识。下例测试套件包含三个测试和一个子测试套件。
2. 测试
ATF测试(Tests)表示一组操作和断言,用于验证预期的最终结果。测试中的每个动作或断言由单个测试步骤表示。虽然对测试中包含的测试步骤的数量没有限制,但通常创建较小的集中测试比创建较大的广泛测试要好。
测试中的一些测试步骤是在客户端用户界面上执行的,而其他测试步骤是在服务器上执行的。单个测试可以包括客户端和服务器的操作和断言。在客户端上执行的测试步骤模拟用户交互,例如打开表单。在服务器上执行的测试步骤在后台执行,涵盖了广泛的可能性。
下例创建的ATF测试,以在标准变更请求转换为紧急变更请求时验证其自定义工作流的最终结果。测试步骤在表单底部的相关列表中进行了标识。
注意,第一个测试步骤是 Create a User。这个测试步骤允许测试创建和模拟执行工作的用户。它可以非常有助于验证正确的授权是否到位,以实现预期的测试结果。
创建用户动态添加新用户,为其分配指定的角色,然后(可选地)模拟用户。一旦测试完成,创建的用户将被删除为了帮助测试保持独立,不依赖于特定的用户和角色,建议在测试开始时使用创建用户并模拟。
3. 测试步骤
测试步骤(Test steps)表示测试中的单个操作或断言,例如创建用户、打开表单或验证字段值。使用不同的测试步骤配置创建不同类型的测试步骤。测试步骤配置定义了毎种类型的操作或断言的行为和特征。
测试设计器根据指定的测试步骤配置创建测试步骤。不需要任何代码,他们就可以根据测试步骤配置提供的行为和特征来配置测试步骤。例如,测试设计器可以配置“创建用户”测试步骤来创建和模拟名为 Beth anglin的用户Servicenow提供了一组大的标准测试步骤配置。额外的测试步骤配置也可以由ATF测试管理员创建。
下面的测试步骤,以验证变更请求上的 State字段具有 Authorize的值。
注意,测试步骤是使用测试步骤配置字段值验证创建的为了验证适当的字段值,字段值验证测试步骤配置将表和条件合并为测试设计器要配置的字段。
四、 分配ATF角色
ATF开发职责分为三个角色。每个角色都有自己的一套能力。为了运行ATF测试并查看测试结果,必须为您分配一个ATF角色。
1. 测试设计人员
测试设计人员(Test Designer)是 ServiceNow项目中最常见的ATF角色。
分配了测试设计人员角色的任何团队成员都可以创建和运行测试和测试套件。大多数应用程序开发人员都被分配了这个角色,因为应该为所有重要的定制创建ATF测试。
虽然编码技能不是强制性的,但调试测试需要高级的 ServiceNow和ATF知识。
Test Designers可以执行以下功能:
· 创建、编辑和删除测试套件
· 创建、编辑和删除测试
· 使用现有测试步骤配置向测试添加测试步骤(新的测试步骤配置只能由测试管理员创建)
· 运行测试和测试套件
·查看测试结果
·查看ATF系统属性
所需编码技能: Low-code 或 No-code
2. 测试管理员
测试管理员(Test Administrator)确保适当地设置ATF系统属性,以控制ATF环境在实例中的操作方式。管理员还定义保留策略,以确定测试结果应该保留多长时间。
测试管理员所需的大部分时间涉及到创建新的测试步骤配置。一旦创建,测试步骤配置就可以被任何ATF角色重用。项目需要的新测试步骤配置越多,对测试管理员的影响就越大。
由于新的測试步骤配置是使用脚本创建的,所以测试管理员应该具有高级的编码经验。由于他们的经验,他们经常被拉进来帮助测试设计人员调试失败的测试或创建新的测试。
测试管理员可以执行测试设计器的所有功能,以及以下功能:
· 编辑ATF系统属性
· 创建测试步骤配置
编码技能要求: Pro-code
3. Web服务测试员
Web服务测试员(Web Service Tester)构建web服务测试。该角色提供对web服务模块的访问,以促进测试开发。通常,web服务测试使用REST集成然而,像SOAP这样的技术可以通过脚本来使用。所需的Web服务测试人员的数量取决于所实现的Web服务集成定制的数量。
由于web服务集成可能需要使用脚本,因此Web服务测试人员应该具有高级编码经验。由于他们的经验,他们经常被拉进来帮助测试设计人员调试失败的测试或创建新的测试。
Web服务测试人员可以执行测试设计器的所有功能,以及以下功能:
· 构建web服务测试
编码技能要求: Pro-code
五、 开发ATF测试
开发ATF测试遵循以下流程:
1. 确定每个进程/应用程序的基本功能
关注ServiceNow实例独有的功能。在确定什么是必要的时候,要考虑风险。权衡验证的细节和需要进行的测试维护。
2. 创建测试以验证基本功能
一旦对新特性的更改最小,就开始创建测试。如果您同时开发新功能和ATF测试,那么要意识到任何达代更改都可能导致额外的ATF开发工作。
3. 将测试打包到套件中
将测试组织打包到可以一起运行的测试套件中。使用现有的测试套件或创建一个新的测试套件。相同的测试可以分组到多个测试套件中。
4. 运行或安排测试执行
ATF测试套件既可以按需运行,也可以按计划运行。ATF测试只能按需运行。测试中的测试步骤在客户端或服务器上运行。在客户端用户界面上执行的测试步骤由客户端测试运行器在单独的浏览器窗口内执行。在服务器上执行的测试步骤是针对实例执行的。
5. 监控和修复问题
运行测试后,查看测试结果。在测试套件、测试和测试步骤级别提供详细的测试结果。运行时截图包含在测试结果中,以帮助监控和调试任何问题。
六、 运行ATF测试和测试套件
1. 了解基本知识
测试可以与其他测试同时运行。但是,在测试套件中运行的测试将依次运行,一个接一个。
如果测试套件中的某个测试失败,测试设计器可以指定测试套件中的其余测试是否应继续运行,还是应中止测试套件。
要了解更多关于ATF测试套件运行时发生的情况,请稍微深入了解下面的图表。选择每个项目的标记,以了解更多关于运行ATF测试套件的信息。
① 每个测试都是隔离的
每个ATF测试独立运行,与任何其他测试隔离。一个测试的值不能作为值转移到另一个测试。测试结果是测试运行后唯一保留的内容。
② 测试步骤之间传递值
一个测试步骤的输出值可以作为同一测试中另一个测试步骤的输入值。输出值不能用作其他测试中测试步骤的输入值。
③ 被模拟的用户未被模拟
ATF测试可以模拟用户进行工作。被模拟的用户将在测试结束时自动取消模拟,或者在测试期间稍后模拟另一个用户时自动取消模拟。
④ 测试数据回滚
一旦每个ATF测试完成,在单个测试期间所做的任何实例更改都将回滚:
· 删除新记录
· 删除的记录恢复
· 更新后的记录恢复到以前的值
2. 将其排除在生产环境之外
ATF框架不应在Servicenow生产实例环境中运行。
ATF测试和测试套件应仅在非生产实例中运行验证生产实例通常涉及利益相关者执行的用户接受测试(UAT)
对于所有 Servicenow实例,启用测试和测试套件运行的ATF系统属性默认为关闭
3. ATF无法在生产实例上运行的原因
ATF无法在生产实例上运行的一些重要原因包括:
· 运行ATF测试会降低实例性能
· 在回滚之前,用户可以看到在ATF测试中所做的更改
· ATF测试更改的数据将触发可操作事件,例如向客户发送电子邮件通知或向经理发送批准
· 在冒充用户时,可以看到敏感的生产数据
· 即使在数据回滚之后,数据更改的审计历史也会保留
尽管ATF不是在生产环境中运行的,但ATF开发对象仍然被提升到生产实例中。这确保了当生产实例被克隆到开发或测试实例时,它们将被包括在内。
七、 通过快速启动测试加速开发
1. 代表一小组关键用例
2. 使用 ServiceNow 应用程序的演示数据轻松安装
3. 可用作模板来构建和定制与您独特流程相匹配的测试和测试套件
4. 复制并配置后,针对实例特定数据运行
5. 如果 ServiceNow 更改了原始测试,请注释您的测试副本
交付时,快速启动测试是非活动的只读模板。只有在使用相应的 Servicenow插件提供的演示数据运行时,它们才会产生一个通过的结果。
要允许快速启动测试成功运行针对您的实例数据,您必须首先创建快速启动测试的副本。
一旦复制了快速启动测试,您就可以应用任何所需的更改并运行测试。