测试自动化框架:什么是、架构和类型
自动化测试中的框架是什么?
测试自动化框架是一套指导方针,例如编码标准、测试数据处理、对象库处理等……在自动化脚本编写过程中遵循这些方针可以产生有益的结果,例如增加代码重用、提高可移植性、降低脚本维护成本等。这些只是指导方针而不是规则;它们并非强制性的,即使不遵循这些方针,您仍然可以编写脚本。但您将失去拥有框架的优势。
为什么需要框架?
让我们考虑一个例子来理解为什么需要框架。
我确信您参加过研讨会/讲座/会议,其中要求参与者遵守以下指导方针 –
- 参与者应在讲座开始前 5 分钟入座。
- 请携带笔记本和笔以备记录。
- 阅读摘要,以便了解演示内容。
- 手机应设置为静音。
- 如果讲座中途需要离开,请使用与演讲者相对的出口。
- 提问环节将在会议结束时进行。
您认为可以不遵守这些指导方针进行研讨会吗???
答案是肯定的,当然可以!您当然可以在没有上述指导方针的情况下进行研讨会/讲座/会议/演示……事实上,我们中的一些人即使有规定也不会遵守!
但是,如果遵循这些指导方针,将会产生有益的结果,例如减少讲座期间观众的干扰,提高参与者的注意力,以及对主题的理解。
基于以上所述,框架可以定义为一套指导方针,遵循这些方针可以产生有益的结果。
测试自动化框架的类型
以下是不同类型的自动化测试框架
- 1) 线性脚本
- 2) 测试库架构框架。
- 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) 测试库架构框架
它也称为“结构化脚本”或“功能分解”。
在此自动化测试框架中,测试脚本最初通过“录制和回放”方法进行录制。之后,识别脚本中的常见任务并将其分组为函数。这些函数由称为驱动程序的主测试脚本以不同方式调用以创建测试用例。
示例:使用与上面相同的示例,登录航班预订的函数将如下所示。
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 或任何其他数据库源。
代理名称 | 密码 |
---|---|
吉米 | 水星 |
蒂娜 | 水星 |
比尔 | 水星 |
步骤 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 组件的函数。函数的一个示例是点击带有所有错误处理的网页按钮,在带有所有错误处理的网页编辑框中输入数据。组件函数可以是应用程序相关的或独立的。
示例:为了理解关键字视图,让我们使用相同的示例。它涉及 2 个步骤
步骤 1:创建数据表(与数据驱动框架中创建的测试数据表不同)。此数据表包含要在 GUI 对象上执行的操作以及任何相应的参数。每行代表一个测试步骤。
对象 | 行动 | |
---|---|---|
(应用程序映射) | (关键字) | 论证 |
WinEdit(代理名称) | 设置 | Guru99 |
WinEdit(密码) | 设置 | 水星 |
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
这就是关键字驱动框架的全部内容。
关键字驱动框架的优点是关键字可重用。为了理解这一点,假设您想验证网站(例如雅虎邮箱)的登录操作。表格将如下所示:
对象 | 行动 | |
---|---|---|
(应用映射) | (关键词) | 论证 |
网页编辑(用户名) | 设置 | abc@yahoo.com |
网页编辑(密码) | 设置 | XXXXX |
网页按钮(确定) | 点击 | |
窗口(雅虎邮箱) | 验证 | 加载 |
如果您注意到,在这种情况下,关键字“设置”、“点击”、“验证”保持不变,相应的组件函数已经开发好。您所需要做的就是将应用程序映射(对象库)从之前的航班预订更改为雅虎邮箱,并更改参数值,相同的脚本即可运行!
优点
- 提供高代码重用性
- 独立于测试工具
- 独立于被测应用程序,相同的脚本适用于 AUT(有一定限制)
- 可以带或不带 AUT 设计测试
缺点
- 初始投资相当高,只有当应用程序规模相当大且测试脚本需要维护多年时,才能实现其效益。
- 创建关键字驱动框架需要高水平的自动化专业知识。
注意:尽管 Micro Focus UFT 自称是关键字驱动框架,但您无法使用 HP UFT 实现完全的测试工具和应用程序独立性。
5) 混合测试自动化框架
顾名思义,该框架是上述一个或多个自动化框架的组合,它吸取了它们的优点并试图弥补它们的缺点。混合测试质量保证自动化框架是大多数测试自动化框架随着时间和多个项目发展而成的。大多数行业都将关键字框架与功能分解方法结合使用。
PS:其他值得一提的自动化框架是
测试模块化框架
在这个框架中,测试脚本中的常见任务被分组为模块。
示例:在 QTP 中使用 Action 可以创建模块化脚本
登录示例脚本
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
现在你可以在主脚本中这样调用这个 Action –
RunAction ("Login[Argument]", oneIteration)
业务流程测试(BPT)
这些自动化框架将大型业务流程分解为可以在相同或不同测试脚本中多次重用的组件。例如,预订航班的业务流程被分解为登录、查找航班、预订、支付和注销等组件,这些组件可以在相同或不同的业务流程中重用。此外,BPT 促进了 SME 和自动化工程师之间的更紧密协作。
测试自动化框架架构的优势
以下是测试自动化框架架构的优势
- 测试自动化框架有助于降低风险和成本支出
- 它提高了测试效率
- 它有助于降低维护成本
- 允许代码重用
- 它允许实现最大的测试覆盖率
- 它最大化了应用程序功能
- 有助于减少测试用例重复
- 它有助于通过测试自动化提高测试效率和性能
摘要
- 框架是一套指导方针,例如编码标准、测试数据处理、对象库处理等……在自动化脚本编写过程中遵循这些方针可以产生有益的结果,例如增加代码重用、提高可移植性、降低脚本维护成本等。
- 线性脚本是最简单的自动化框架,也称为“录制和回放”。
- 测试库架构框架也称为“结构化脚本”或“功能分解”。
- 在数据驱动测试框架中,测试用例逻辑位于测试脚本中,而测试数据则被分离并保存在测试脚本之外。
- 关键字驱动或表驱动框架需要开发数据表和关键字,这些都独立于用于执行它们的测试自动化工具。
- 混合自动化框架是大多数测试自动化框架随着时间和多个项目发展而成的。