测试自动化框架: Archi结构和类型

自动化测试中的框架是什么?
A 测试自动化框架 是一组准则,如编码标准、测试数据处理、对象存储库处理等……在自动化脚本编写过程中遵循这些准则会产生有益的结果,如提高代码重用率、提高可移植性、降低脚本维护成本等。这些只是准则,而不是规则;它们不是强制性的,您仍然可以在不遵循准则的情况下编写脚本。但您将错过拥有框架的优势。
为什么需要框架?
让我们考虑一个例子来了解为什么需要框架。
我相信你参加过研讨会/讲座/会议,其中要求参与者遵守以下准则 -
- 参加者应于讲座开始前5分钟就座。
- 携带笔记本和笔以便做笔记。
- 阅读摘要trac这样,你就能大致了解演讲的内容了。
- 手机应调至静音状态。
- 如果您需要在讲座中途离开,请使用演讲者另一端的出口门。
- 会议结束时将会解答问题。
你认为你可以举办研讨会吗 无 遵守这些准则吗?
答案是大 国际学生是可以工作的! 当然,您可以在没有上述准则的情况下举办研讨会/讲座/会议/演示......事实上,即使有规定,我们中的一些人也不会遵循它们!
但如果遵循这些准则,将会带来诸如减少观众不满等有益结果。trac讲座期间的参与度提高,参与者的记忆力增强,对主题内容的理解加深。
基于以上内容, 框架可以定义为一组指导方针,遵循这些指导方针可以产生有益的结果。
测试自动化框架 Archi结构:关键组成部分
在比较各种类型之前,了解每个框架包含哪些内容会有所帮助。 Archi结构描述了这些部分是如何分层的,使得一层的变化不会破坏其他层。
- 测试脚本层: 包含测试用例。脚本之所以简短,是因为它们调用的是可重用的函数,而不是重复的导航步骤。
- 函数库: 存储登录、搜索和注销等共享操作,以便只需进行一次工作流程更改。
- 对象库: 将友好名称映射到 GUI 元素定位器。界面更改时,仅编辑此图层。
- 测试数据层: 将输入值和预期值保存在 Excel、CSV 或数据库源中,而不是保存在代码内部。
- 配置层: 包含环境 URL浏览器选项、超时时间和凭据。
- 报告层: 生成执行报告、故障截图和诊断日志。
- 执行层: 从构建服务器触发套件,将自动化链接到 持续整合.
下面列出的框架类型主要区别在于它们对这些层的划分是否严格。
测试自动化框架的类型
以下是不同类型的自动化测试框架:
- 线性脚本
- 测试库 Archi结构框架。
- 数据驱动 测试与验证 框架。
- 关键字驱动或表格驱动测试框架。
- 混合测试自动化框架。
让我们详细看看——
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 对象)读取,并加载到测试脚本内部的变量中。这些变量既用于存储输入值,也用于存储验证值。测试脚本本身可以使用线性脚本或测试库框架编写。该技术将在后续章节中进行更详细的解释。 数据驱动测试 教程。
计费示例: 德韦洛ping 使用此方法的航班预订登录脚本将包含两个步骤。
步骤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按钮(确定) | 点击 | |
| 航班预订窗口 | 确认 | 存在 |
第四步: 写作 Code 以组件函数的形式。
创建数据表后,只需编写一个程序或一组脚本,读取每个步骤,根据 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) | 确认 | 负荷 |
在这种情况下,你会发现“关键字集”、“点击”和“验证”保持不变,相应的组件功能已经开发完成。你只需要更改应用程序映射即可。ping (对象库)从早期的航班预订到雅虎 Mail ,改变参数值,相同的脚本就可以运行!
优势
- 提供高度的代码可重用性
- 独立于测试工具
- 独立于被测应用程序,相同的脚本适用于 AUT(有一些限制)
- 测试可以设计为带有或不带有 AUT
缺点
- 由于初始投资相当高,因此只有在应用程序相当大并且测试脚本需要维护相当长几年的情况下才能实现其好处。
- 创建关键字驱动框架需要高度自动化的专业知识。
注意: 即使 OpenText UFT One(前身为 Micro Focus) UFT虽然它自称是关键字驱动框架,但使用它无法实现完全的测试工具和应用程序独立性。
5)混合测试自动化框架
顾名思义,该框架是上述一个或多个自动化框架的组合,发挥它们的优势并尽量减轻它们的弱点。混合测试 QA 自动化框架是大多数测试自动化框架随着时间的推移和多个项目的发展而演变而成的。大多数行业使用关键字框架结合功能分解方法。
PS: 其他值得一提的自动化框架包括
测试模块化框架
在这个框架中,测试脚本中的常见任务被分组为模块。
例如::使用操作 QTP 可以使用创建模块化脚本
登录示例脚本
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 和自动化工程师之间的更紧密协调。
如何选择合适的测试自动化框架
没有哪一种类型能每次都胜出。正确的选择取决于团队技能、应用程序规模以及套件需要运行的时间。下表比较了五种类型在决定结果方面的因素。
| 框架类型 | 设置工作量 | Code 重用 | 维修费用 | 最适合 |
|---|---|---|---|---|
| 线性脚本 | 非常低 | 非常低 | 很高 | 示威游行和一次性烟雾测试 |
| 测试库 Archi质地 | 中 | 中 | 中 | 具有重复工作流程的稳定应用程序 |
| 数据驱动 | 中 | 中 | 低 | 需要大量输入集的表单和计算 |
| 关键词驱动 | 高 | 很高 | 低 | 由混合技术团队维护的大型套房 |
| 混合型 | 高 | 很高 | 低 | 长期企业计划 |
在做出决定之前,请先思考以下问题:
- 这套套房能使用多久? 多年的维护成本足以证明关键词驱动或混合设计方案的高额初始投资是值得的。但对于短期项目而言,则不然。
- 谁来编写试题? 如果手动测试人员贡献测试用例,关键字表可以让他们在不学习脚本语言的情况下进行测试。
- 界面的稳定性如何? 频繁的屏幕切换使得单独的对象库必不可少,否则每个脚本都需要编辑。
- 需要多少数据变异? 许多输入组合都直接指向数据驱动设计。
- 目前使用的是哪个工具? 该框架必须与所选框架相匹配。 自动化工具 以及团队所掌握的语言,例如 Selenium - Java or Cucumber.
大多数团队最初都采用库驱动或数据驱动的方法,然后逐渐发展为混合模型。 回归 套房扩展。
测试自动化框架的好处 Archi质地
以下是测试自动化框架架构的优点:
- 测试自动化框架有助于降低风险和成本费用
- 提高测试效率
- 有助于降低维护成本
- 允许重复使用代码
- 它允许实现最大的测试覆盖率
- 它最大化应用程序的功能
- 有助于减少测试用例重复
- 它有助于通过测试自动化提高测试效率和性能
