自动化测试中的框架是什么?
测试自动化框架是一组指导原则,如编码标准、测试数据处理、对象存储库处理等。当在自动化脚本编写过程中遵循这些规则时,会产生一些好的结果,如增加代码重用、提高可移植性、降低脚本维护成本等。但是,使用框架建将更受益。
在本教程中,将了解
- 为什么需要一个框架?
- 测试自动化框架的类型
-
- 线性脚本-录制和回放
-
- 测试库架构框架
-
- 数据驱动测试框架
-
- 关键字驱动或表驱动测试框架
-
- 混合测试自动化框架
- 测试自动化框架架构的优势
为什么需要一个框架?
考虑一个例子来理解为什么需要一个框架。 例如,我们曾出席一个研讨会/讲座/会议,参加者被要求遵守以下指引:
- 参加者应在讲座开始前5分钟就座。
- 带上笔记本和钢笔做笔记。
- 阅读概要,对演讲的主题有了一个概念。
- 移动电话设置为静音
- 如果需要中途离开,使用演讲者对面的出口。
- 问题将在会议结束时提问
认为可以在不遵守这些指导方针的情况下举办研讨会吗?
答案是肯定的!当然,可以在没有上述指导的情况下进行研讨会/讲座/会议/演示(事实上,即使有…,我们中的一些人也不会遵循这些指导原则)。但是,如果遵循这些指导方针,将会带来好的结果,比如减少讲课期间听众的分心,增加参与者对主题的留存和理解。
基于以上,框架可以被定义为一套指导方针,当遵循这些准则时,能提升效率,产生好的结果。
测试自动化框架的类型
下面是不同类型的自动化测试框架:
-
- 线性脚本
-
- 测试库体系结构框架。
-
- 数据驱动测试框架。
-
- 关键字驱动或表驱动测试框架。
-
- 混合测试自动化框架。
让我们详细看看
1) 线性脚本-录制和回放
它是所有测试自动化框架中最简单的,也被称为“录制和回放”。在这个自动化测试框架中,Tester手动记录每个步骤(导航和用户输入),在第一轮中插入检查点(验证步骤)。然后,他在接下来的几轮中播放录制的脚本。
示例:考虑登录到航类预订应用程序,并检查应用程序是否已在成功登录时加载。测试人员将简单地记录步骤并添加验证步骤。
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) 测试库架构
测试库架构也被称为“结构化脚本”或“功能分解”。 在该自动化测试框架中,测试脚本最初采用“录制&回放”的方式进行记录。这些函数由名为Driver的主测试脚本以不同的方式调用,以创建测试用例。
示例:使用与上面相同的示例,用于登录到航类预订的函数将如下所示。
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测试脚本本身使用线性脚本或测试库框架准备)中读取。
示例:使用此方法开发航类预订登录脚本将涉及两个步骤。
步骤1) 创建一个测试数据文件,该文件可以是Excel、CSV或任何其他数据库源。
名称 | 密码 |
---|---|
小米 | MiXiao |
华为 | Huawei |
苹果 | Apple |
步骤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")
"dtGlobalSheet" is the default excel sheet provided by QTP.
优势
- 对测试脚本的更改不会影响测试数据
- 可以使用多组数据执行测试用例
- 只需更改外部数据文件中的测试数据即可执行各种测试方案
劣势
- 计划和准备测试脚本和测试数据需要更多时间
4) 关键字驱动或表驱动测试框架
关键字驱动或表驱动的自动化框架开发需要数据表和关键字,独立于用于执行它们的测试自动化工具。在关键字驱动的测试中,被测应用程序的功能记录在表格中以及每个测试的分步说明中。
关键字驱动框架有3个基本组件,即:关键字、程序地图、组件函数。
什么是关键字?
关键字是可以在GUI组件上执行的操作。对于GUI组件文本框,一些关键字(操作)将是InputText、VerifyValue、VerifyProperty等。
什么是应用程序地图?
应用程序映射为GUI组件提供命名引用。应用程序映射只不过是“对象存储库”
什么是组件函数?
组件函数是那些主动操作或询问GUI组件的函数。函数的一个示例是组件函数可以是依赖于应用程序的,也可以是独立的。
示例:为了理解关键字视图,让我们以相同的示例为例。它包括2个步骤
步骤1:创建数据表(不同于在数据驱动框架中创建的测试数据表)。每行代表一个测试步骤。
对象 | 动作 | |
---|---|---|
(应用程序地图) | (关键字) | 参数 |
WinEdit(Agent Name) | Set | itxiaonv |
WinEdit(Password) | Set | xxxx |
WinButton(OK) | Click | |
Window(Flight Reservation) | Verify | exist |
步骤2:以组件函数的形式编写代码。
一旦创建了数据操作,只需编写一个程序或一组脚本来读取每个步骤,根据包含 table(s) 字段的关键字执行步骤,执行错误检查,并记录任何相关信息。此程序或脚本集看起来类似于下面的伪代码:
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, itxiaonv).
}
}
Call CloseConnection() //Function for Closing connection after all the operation has been performed.
} //End of main
这就是关键字驱动框架的全部内容。
关键字驱动框架的优点是关键字可重用。
对象 | 动作 | |
---|---|---|
(应用程序地图) | (关键字) | 论据 |
WebEdit(UserName) | Set | 邮箱:abc@qq.com |
WebEdit(Password) | Set | xxxxx |
WebButton(OK) | Click | |
Window(Yahoo Mail) | Verify | Loads |
如果在这种情况下观察到关键字Set、Click、Verify,则已经为其开发了相应的组件功能。所需要做的就是将Application Mapping(对象存储库)从早期的航类预订更改为QQ Mail,并更改参数值,相同的脚本也会起作用!
优势
- 提供高度的代码可重用性
- 独立于测试工具
- 独立于被测应用程序,相同的脚本适用于AUT(有一些限制)
- 测试可以设计为使用或不使用AUT
劣势
- 初始阶段成本相当高,只有当应用程序相当大并且测试脚本要维护相当长的时间时,才能实现这样的好处。
- 创建关键字驱动框架需要高自动化专业知识。
注意:即使Micro Focus UFT将自己声明为关键字驱动框架,也不能使用HP UFT实现完整的测试工具和应用程序独立。
5) 混合测试自动化框架
顾名思义,这个框架是上面讨论的一个或多个自动化框架的组合,吸取了它们的优点,并避开它们的缺点。优秀自动化框架有:
模块化(Test Modularity)框架
在这个框架中,测试脚本中的一个常见任务被分组为模块。例如,在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)
这些自动化框架将大型业务流程分解为组件,组件可以在相同或不同的测试脚本中多次重用。例如,预订航类的业务流程也是SPL,BPT促进了中小企业和自动化工程师之间更紧密的协作。
自动化框架的优势
下面是自动化框架的优势:
- 自动化框架降低风险和成本
- 提高了测试的效率。
- 降低维护成本
- 允许重用代码
- 允许实现最大测试覆盖率
- 最大化应用程序的功能
- 减少测试用例重复
- 提高测试效率和性能
总结
- 框架是一组指导原则,如编码标准、测试数据处理、对象存储库处理等…当在自动化脚本期间遵循这些规则时,会产生有益的结果,如增加代码重用、更高的可移植性、降低脚本维护成本等。
- 线性脚本是所有自动化框架中最简单的,也称为“录制和回放”。
- 测试库架构框架也称为“结构化脚本”或“功能分解”。
- 在数据驱动测试框架中,测试用例逻辑驻留在测试脚本中,测试数据被分离并保存在测试脚本之外。
- 关键字驱动或表驱动框架需要开发数据表和关键字,独立于用于执行它们的测试自动化工具。
- 混合自动化框架是大多数自动化框架随着时间和多个框架融合而演变成的。