多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 测试自动化框架-您必须知道的东西! > 原文: [https://www.guru99.com/test-automation-framework.html](https://www.guru99.com/test-automation-framework.html) 在本教程中,您将学习 * [什么是框架?](#1) * [什么是 TEST 自动化框架?](#2) * [自动化框架的类型](#3) * [1)线性脚本-记录&播放](#4) * [2)测试库体系结构框架。](#5) * [3)数据驱动的测试框架。](#6) * [4)关键字驱动或表驱动测试框架。](#7) * [5)混合测试自动化框架。](#8) ## 什么是框架? 让我们考虑一个示例,而不是提供有关框架的粗俗定义。 我确定您已经参加了一个研讨会/讲座/会议,要求参与者遵守以下指南- * 参加者应在讲座开始前 5 分钟就座 * 带上笔记本和钢笔做笔记。 * 阅读摘要,以便您对演示文稿有一个大概的了解。 * 手机应设为静音 * 如果您需要在演讲中途离开,请使用扬声器对面的出口。 * 会议结束时将提出问题 您认为您可以在不遵守这些准则的情况下举办**研讨会吗?** 答案是很大的**是的!** 当然,您可以在没有上述指导的情况下进行研讨会/讲座/会议/示范(事实上,即使有……,我们中的某些人也不会遵循它们::-) 但是,如果遵循这些指导方针,将会带来有益的结果,例如减少演讲过程中的听众分心,增加参与者对主题的保留和理解。 基于以上内容,可以将**框架定义为一组准则,遵循这些准则可以产生有益的结果。** ## 什么是 TEST 自动化框架? 一套准则,例如编码标准,测试数据处理,对象库处理等,在自动化脚本编写过程中遵循这些准则可产生有益的结果,例如增加代码重用,更高的可移植性,降低的脚本维护成本等。 准则而非规则; 它们不是强制性的,您仍然可以在不遵循准则的情况下编写脚本。 但是您会错过拥有框架的优势。 ## 自动化框架的类型 1)线性脚本 2)测试库体系结构框架。 3)数据驱动的[测试](/software-testing.html)框架。 4)关键字驱动或表驱动测试框架。 5)混合测试自动化框架。 让我们详细了解一下- ## 1)线性脚本-记录&播放 它是所有框架中最简单的,也称为**“记录&回放”** 。在此框架中,测试仪手动记录每个步骤(导航和用户输入),在第一个步骤中插入检查点(验证步骤) 圆的。 然后,他在随后的回合中播放录制的脚本。 **示例:**考虑登录到 Flight Reservation Application,并检查是否在成功登录时加载了该应用程序。 在这里,测试人员将只记录步骤并添加验证步骤。 ``` 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)测试库体系结构框架。 也称为**“结构化脚本”** 或**“功能分解”。** 在此框架中,测试脚本最初是通过“记录&播放”方法记录的。 稍后,将识别脚本中的常见任务并将其分组为“功能”。 这些功能由称为**驱动程序**的主测试脚本以不同的方式来创建测试用例。 **示例:**使用与上述相同的示例,用于登录“航班预订”的功能将如下所示。 ``` 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. --------------------------- ``` ### Advantages * 与“记录&回放”相比,结构化脚本实现了更高级别的代码重用 * 由于重复使用代码较多,因此自动化脚本的开发成本较低 * 脚本维护更轻松 ### Disadvantages * 使用测试库框架编写脚本需要技术专家。 * 需要更多时间计划和准备测试脚本。 * 测试数据在脚本中进行了硬编码 ## 3)数据驱动的测试框架。 在此框架中,虽然[测试用例](/test-case.html)逻辑位于测试脚本中,但是测试数据是分开的,并保留在测试脚本之外。 从外部文件(Excel 文件,文本文件,CSV 文件,ODBC 源,DAO 对象,ADO 对象)读取测试数据,并将其加载到测试脚本中的变量中。 变量既用于输入值,又用于验证值。 测试脚本本身是使用线性脚本或测试库框架准备的。 **例如:**使用此方法开发航班预订登录脚本将涉及两个步骤。 **步骤 1)**创建一个 Test-Data 文件,该文件可以是 Excel,CSV 或任何其他数据库源。 | **代理名称** | **密码** | | --- | --- | | 吉米 | 汞 | | 蒂娜 | 汞 | | 法案 | 汞 | **步骤 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. ``` ### Advantages * 对测试脚本的更改不会影响测试数据 * 测试用例可以与多个数据集一起执行 * 只需更改外部数据文件中的测试数据,即可执行各种测试方案 ### Disadvantages * 需要更多时间来计划和准备测试脚本和测试数据 ## 4)关键字驱动或表驱动测试框架。 “关键字驱动”或“表驱动”框架要求开发数据表和关键字**,而独立于用于执行它们的测试自动化工具**。 可以在有或没有应用程序的情况下设计测试。 在关键字驱动的测试中,表中以及每个测试的分步说明中都记录了被测应用程序的功能。 关键字驱动框架即 3 个基本组成部分。 关键字,应用程序图,组件功能。 **什么是关键字?** 关键字是可以在 GUI 组件上执行的操作。 例如 对于 GUI 组件文本框,某些关键字(操作)为 InputText,VerifyValue,VerifyProperty 等。 **什么是应用程序映射?** 应用程序映射提供了 GUI 组件的命名参考。 应用程序映射不过是“ **对象存储库**” **什么是组件功能?** 组件功能是那些主动操纵或询问 GUI 组件的功能。 一个功能示例是单击具有所有错误处理的 Web 按钮,然后在具有所有错误处理的 Web 编辑中输入数据。 组件功能可以取决于应用程序或独立于应用程序。 **例**:要理解“关键字视图”,请举相同的示例。 它涉及 2 个步骤 **步骤 1** :创建数据表(与在数据驱动框架中创建的测试数据表不同)。 该数据表包含要在 GUI 对象上执行的操作以及相应的参数(如果有)。 每行代表一个测试步骤。 | **对象** **(应用程序映射)** | **动作** **(关键字)** | **参数** | | --- | --- | --- | | WinEdit(代理名称) | 设置 | 大师 99 | | WinEdit(密码) | Set | 汞 | | WinButton(确定) | 点击 |   | | 窗口(航班预订) | 验证 | 存在 | **步骤 2** :以组件函数的形式编写代码。 创建数据表后,您只需编写一个程序或一组脚本即可在每个步骤中读取,然后根据包含在“操作”字段中的关键字执行该步骤,执行错误检查并记录所有相关信息。 该程序或脚本集将类似于以下伪代码: ``` 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(用户名) | 组 | 此电子邮件地址已受到防止垃圾邮件机器人的保护。 您需要启用 JavaScript 才能查看它。 | | WebEdit(密码) | Set | xxxxxx | | WebButton(确定) | 请点击 | | | 窗口(雅虎邮件) | 校验 | 负荷 | 在这种情况下,如果您观察到关键字 Set,Click,Verify 仍然保持不变,则已经为其开发了相应的组件功能。 您需要做的就是将应用程序映射(对象存储库)从较早的 Flight Reservation 更改为 Yahoo Mail,并更改参数值,并且相同的脚本将起作用! ### Advantages * 提供高代码重用性 * 独立于测试工具 * 独立于被测应用程序,相同的脚本适用于 AUT(有一些限制) * 可以设计有无 AUT 的测试 ### Disadvantages * 最初的投资相当高,只有在应用程序很大且测试脚本要维持很多年的情况下,才能实现上述好处。 * 创建关键字驱动框架需要高级自动化专业知识。 **注意:**即使 Micro Focus UFT 宣传自己为关键字驱动框架,也无法使用 HP UFT 实现完整的测试工具和应用程序独立性。 ## 5)混合测试自动化框架。 顾名思义,该框架是上面讨论的一个或多个框架的组合,这些框架从其优点中脱颖而出,并试图减轻其缺点。 这种混合测试自动化框架是大多数框架随时间推移和多个项目而演变而成的。 最大化的行业使用结合了功能分解方法的关键字框架。 **PS:**其他值得一提的框架是 ### 测试模块化框架 在此框架中,测试脚本中的常见任务被分组为模块。 **例**:在 QTP 中使用动作可以创建 Modualr 脚本 登录示例脚本 ``` 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 和自动化工程师之间的紧密协作。