测试自动化框架:什么是 Archi结构与类型
自动化测试中的框架是什么?
A 测试自动化框架 是一组准则,如编码标准、测试数据处理、对象存储库处理等……在自动化脚本编写过程中遵循这些准则会产生有益的结果,如提高代码重用率、提高可移植性、降低脚本维护成本等。这些只是准则,而不是规则;它们不是强制性的,您仍然可以在不遵循准则的情况下编写脚本。但您将错过拥有框架的优势。
为什么需要框架?
让我们考虑一个例子来了解为什么需要框架。
我相信你参加过研讨会/讲座/会议,其中要求参与者遵守以下准则 -
- 参加者应于讲座开始前5分钟就座。
- 携带笔记本和笔以便做笔记。
- 阅读摘要,这样您就能了解演讲的内容。
- 手机应调至静音状态。
- 如果您需要在讲座中途离开,请使用演讲者另一端的出口门。
- 会议结束时将会解答问题。
你认为你可以举办研讨会吗 无 遵守这些准则👍
答案是大 国际学生是可以工作的! 当然,您可以在没有上述准则的情况下举办研讨会/讲座/会议/演示......事实上,即使有规定,我们中的一些人也不会遵循它们!
但如果遵循指导方针,将会产生有益的结果,例如减少讲座期间观众的注意力分散,提高参与者的保留率和对主题的理解。
基于以上内容, 框架可以定义为一组指导方针,遵循这些指导方针可以产生有益的结果。
测试自动化框架的类型
以下是不同类型的自动化测试框架:
- 1)线性脚本
- 2)测试库 Archi结构框架。
- 3)数据驱动 测试 框架。
- 4)关键字驱动或表驱动的测试框架。
- 5)混合测试自动化框架。
让我们详细看看——
1)线性脚本——录制和回放
它是所有测试自动化框架中最简单的,也被称为 “录制和播放”。在这 自动化测试 框架,测试人员手动记录每个步骤(导航和用户输入),在第一轮插入检查点(验证步骤)。然后,他在后续轮次中播放录制的脚本。
计费示例: 考虑登录 航班预订申请 并检查应用程序是否在成功登录时加载。在这里,测试人员只需记录步骤并添加验证步骤。
SystemUtil.Run "flight4a.exe","","","open" Dialog("Login").WinEdit("Agent Name:").Set "Guru99" Dialog("Login").WinEdit("Password:").Set "Mercury" Dialog("Login").WinButton("OK").Click 'Check Flight Reservation Window has loaded after successful log-on Window("Flight Reservation").Check CheckPoint("Flight Reservation")
性能
- 生成脚本的最快方法
- 无需自动化专业知识
- 了解测试工具功能的最简单方法
缺点
- 很少重复使用脚本
- 测试数据被硬编码到脚本中
- 维护噩梦
2)测试库 Archi结构框架
它也被称为 “结构化脚本” or “功能分解”。
在这个自动化测试框架中,测试脚本最初由“记录和播放“ 方法。 Later,脚本中的常见任务被识别并分组为函数。这些函数由名为 驱动器 以不同的方式创建测试用例。
计费示例: 使用与上面相同的例子,登录航班预订的功能将如下所示。
Function Login() SystemUtil.Run "flight4a.exe","","","open" Dialog("Login").WinEdit("Agent Name:").Set "Guru99" Dialog("Login").WinEdit("Password:").Set "Mercury" Dialog("Login").WinButton("OK").Click End Function
现在,您将在主脚本中调用此函数,如下所示
Call Login() --------------------------- Other Function calls / Test Steps. ---------------------------
性能
- 与“录制和回放”相比,结构化脚本可以实现更高级别的代码重用
- 由于代码重用性更高,自动化脚本的开发成本较低
- 更简单的脚本维护
缺点
- 使用测试库框架编写脚本需要技术专业知识
- 需要更多时间来规划和准备测试脚本。
- 测试数据在脚本中硬编码
3)数据驱动测试框架
在这个框架中,虽然 测试用例 逻辑驻留在测试脚本中,测试数据被分离并保存在测试脚本之外。测试数据从外部文件(Excel 文件、文本文件、CSV 文件、ODBC 源、DAO 对象、ADO 对象)读取并加载到测试脚本内的变量中。变量既用于输入值也用于验证值。测试脚本本身是使用线性脚本或测试库框架准备的。
计费示例: 使用此方法开发航班预订登录脚本将涉及两个步骤。
步骤1) 创建一个测试数据文件,可以是 Excel、CSV 或任何其他数据库源。
代理名称 | 密码 |
---|---|
吉米 | Mercury |
蒂娜 | 汞 |
Bill | 汞 |
步骤2) 开发测试脚本并引用您的测试数据源。
SystemUtil.Run "flight4a.exe","","","open" Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName", dtGlobalSheet) Dialog("Login").WinEdit("Password:").Set DataTable("Password", dtGlobalSheet) Dialog("Login").WinButton("OK").Click 'Check Flight Reservation Window has loaded Window("Flight Reservation").Check CheckPoint("Flight Reservation") **Note "dtGlobalSheet" is the default excel sheet provided by QTP.
性能
- 测试脚本的更改不会影响测试数据
- 可以使用多组数据集执行测试用例
- 只需改变外部数据文件中的测试数据即可执行各种测试场景
缺点
- 需要更多时间来规划和准备测试脚本和测试数据
4)关键字驱动或表驱动的测试框架
关键字驱动或表驱动的自动化框架开发需要数据表和关键字, 独立于 测试自动化工具 用于执行它们。可以使用或不使用应用程序来设计测试。在关键字驱动的测试中,被测应用程序的功能记录在表格中,并记录在每个测试的分步说明中。
关键字驱动框架有 3 个基本组件,即关键字、应用程序地图、组件功能。
什么是关键词?
关键字是可以在 GUI 组件上执行的操作。例如,对于 GUI 组件文本框,一些关键字(操作)将是 InputText、VerifyValue、VerifyProperty 等。
什么是应用地图?
应用程序映射为 GUI 组件提供命名引用。应用程序映射只不过是“对象库“
什么是组件功能?
组件函数是那些主动操作或询问 GUI 组件的函数。一个函数示例是单击 Web 按钮并进行所有错误处理,在 Web 编辑中输入数据并进行所有错误处理。组件函数可以依赖于应用程序,也可以独立于应用程序。
例如:: 为了理解关键词视图,让我们以同样的例子为例。它涉及 2 个步骤
第一步:创建数据表(不同于在数据驱动框架中创建的测试数据表)。此数据表包含要对 GUI 对象执行的操作以及相应的参数(如果有)。每行代表一个测试步骤。
摆件 | 操作 | |
---|---|---|
(申请地图) | (关键词) | 争论 |
WinEdit(代理名称) | 选择 | Guru99 |
WinEdit(密码) | 选择 | Mercury |
Win按钮(确定) | 点击 | |
航班预订窗口 | 确认 | 存在 |
第一步:以组件函数的形式编写代码。
创建数据表后,只需编写一个程序或一组脚本,读取每个步骤,根据 Action 字段包含的关键字执行步骤,执行错误检查并记录任何相关信息。此程序或脚本集类似于以下伪代码:
Function main() { Call ConnectTable(Name of the Table) { //Calling Function for connecting to the table. while (Call TableParser() != -1) //Calling function for Parsing and extracting values from the table. { Pass values to appropriate COMPONENT functions.Like Set(Object Name, Argument) ex.Set(Agent Name, Guru99). } } Call CloseConnection() //Function for Closing connection after all the operation has been performed. } //End of main
这就是关键字驱动框架的全部内容。
关键字驱动框架的优点是关键字可重复使用。要理解这一点,请考虑您想要验证网站(例如 YAHOO MAIL)的登录操作。表格将如下所示 -
摆件 | 操作 | |
---|---|---|
(应用图) | (关键词) | 争论 |
WebEdit(用户名) | 选择 | abc@yahoo.com |
网页编辑(密码) | 选择 | XXXXX |
Web按钮(确定) | 点击 | |
窗口(雅虎 Mail) | 确认 | 负荷 |
如果您在这种情况下观察到关键字设置、点击、验证保持不变,并且已开发了相应的组件功能。您需要做的就是将应用程序映射(对象存储库)从先前的 Flight Reservation 更改为 Yahoo Mail ,改变参数值,相同的脚本就可以运行!
性能
- 提供高度的代码可重用性
- 独立于测试工具
- 独立于被测应用程序,相同的脚本适用于 AUT(有一些限制)
- 测试可以设计为带有或不带有 AUT
缺点
- 由于初始投资相当高,因此只有在应用程序相当大并且测试脚本需要维护相当长几年的情况下才能实现其好处。
- 创建关键字驱动框架需要高度自动化的专业知识。
注意: 尽管 Micro Focus UFT 将自己宣传为关键字驱动框架,但您无法使用 HP UFT 实现完整的测试工具和应用程序独立性。
5)混合测试自动化框架
顾名思义,该框架是上述一个或多个自动化框架的组合,发挥它们的优势并尽量减轻它们的弱点。混合测试 QA 自动化框架是大多数测试自动化框架随着时间的推移和多个项目的发展而演变而成的。大多数行业使用关键字框架结合功能分解方法。
PS: 其他值得一提的自动化框架包括
测试模块化框架
在这个框架中,测试脚本中的常见任务被分组为模块。
例如::使用 QTP 中的 Actions 可以创建模块化脚本
登录示例脚本
SystemUtil.Run "flight4a.exe","","","open" Dialog("Login").WinEdit("Agent Name:").Set "Guru99" Dialog("Login").WinEdit("Password:").Set "Mercury" Dialog("Login").WinButton("OK").Click 'End of Script
现在您可以在主脚本中调用此操作,如下所示 -
RunAction ("Login[Argument]", oneIteration)
业务流程测试(BPT)
这些自动化框架将大型业务流程分解为可在相同或不同的测试脚本中多次重复使用的组件。例如,预订航班的业务流程被分解为登录、查找航班、预订、付款和注销等组件,这些组件可在相同业务流程或不同流程中重复使用。此外,BPT 促进了 SME 和自动化工程师之间的更紧密协调。
测试自动化框架的好处 Archi质地
以下是测试自动化框架架构的优点:
- 测试自动化框架有助于降低风险和成本费用
- 提高测试效率
- 有助于降低维护成本
- 允许重复使用代码
- 它允许实现最大的测试覆盖率
- 它最大化应用程序的功能
- 有助于减少测试用例重复
- 它有助于通过测试自动化提高测试效率和性能
总结
- 框架是一组指南,如编码标准、测试数据处理、对象存储库处理等……在自动化脚本编写过程中遵循这些指南可以产生有益的结果,如提高代码重用率、提高可移植性、降低脚本维护成本等。
- 线性脚本是所有自动化框架中最简单的,也称为“记录和回放”。
- 测试库 Architecture Framework 也称为“结构化脚本”或“功能分解”。
- 在数据驱动测试框架中,测试用例逻辑驻留在测试脚本中,测试数据被分离并保存在测试脚本之外。
- 关键字驱动或表驱动框架需要开发数据表和关键字,而与用于执行它们的测试自动化工具无关。
- 混合自动化框架是大多数测试自动化框架随着时间的推移和多个项目的发展而形成的。