时间:2020-09-06来源:www.pcxitongcheng.com作者:电脑系统城
自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动化测试案例的执行以及分析,自动化测试平台一般需要解决测试案例执行任务的创建,任务的管理,任务的调度,测试案例的解析,测试案例分别根据不同的测试类型分发给不同的测试工具或者测试Lib库进行执行,并且需要对执行的数据进行分析,得出质量数据,然后才好给出对应的测试报告分析数据给测试经理,项目经理来辅助持续的改善项目版本的质量,下图是一个自动化测试平台框架的架构设计图。
本文作者:张永清,转载请注明出处:https://www.cnblogs.com/laoqing/p/13622088.html 节选自《Robot Framework 自动化测试框架核心指南》
框架图中的自动化测试平台框架主要包含了4个部分,自动化测试案例编写的IDE工具,自动化测试案例的执行,测试任务的管理和监控,测试案例执行后的数据分析。
一个通用的自动化测试案例编写的IDE工具一般需要包含的功能如下图所示。
本文作者:张永清,转载请注明出处:https://www.cnblogs.com/laoqing/p/13622088.html 节选自《Robot Framework 自动化测试框架核心指南》
友好的用户案例编写界面,通常一般可以表格或者表单的形式,比如RobotFramework,就是典型的表格界面,也可以用Eclipse的插件式开发实现这一需求。
在平台中,一个自动化测试案例的执行一般包括如下图中的基本步骤,最核心的就是将解析的案例数据分发出去给不同的Lib库去执行。
本文作者:张永清,转载请注明出处:https://www.cnblogs.com/laoqing/p/13622088.html 节选自《Robot Framework 自动化测试框架核心指南》
在做数据分析时,可以借用很多现在主流的大数据组件,如下图所示,数据分析通常包括实时数据分析和离线数据分析,分析中我们还会用到很多消息队列中间件,比如kafka,数据明细可以采用elasticsearch来进行存储,这和elasticsearch本身的特点有关系,可以支持大数据的存储以及方便以后我们来做全文检索。
平台框架图中包含的组件如下表所示。
IDE |
RIDE,eclipse插件,idea插件 |
测试案例版本服务器 |
svn,git等版本控制服务器 |
自动化测试案例数据 |
自动测试案例文件 |
案例解析器 |
负责自动化测试案例文件数据的读取和解析,翻译成自动化测试工具或者自动化测试Lib库可以执行的命令 |
资源监控和 |
负责各个执行器,案例解析器以及自动化工具服务器的资源监控和资源管理 |
任务调度器 |
调度自动化测试执行任务在多个节点上的执行 |
自动化任务管理器 |
接受自动化任务的提交,自动化任务的管理(任务启用,任务停用,任务新增,修改,删除等) |
告警 |
任务执行异常,超时等,自动产生告警 |
短信平台 |
告警短信发送,短信接收 |
邮件服务器 |
接收生成的测试报告或者告警短信,然后邮件发送给对应的相关人员 |
Kafka |
执行日志数据的缓存存储 |
Elasticsearch |
测试案例执行的日志明细数据存储 |
Kibana |
是一个开源的分析和可视化平台,旨在与 Elasticsearch 进行结合。Kibana 提供了搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。 |
离线分析 |
负责对日志定时做离线分析处理,比如通过hive等大数据方式进行数据归类分析 |
实时分析 |
将日志数据,通过大数据实时数据流的分析,提取案例执行过程的相关日志数据做实时的分析和统计,常用的实时流分析工具有spark,storm,flink等。 |
下图是自动化平台框架设计的一个分层结构图。
我们对常见的自动化测试架构思想做了一个如下的对比,如下表所示。
数据驱动测试 |
数据驱动测试的的思想是将我们的自动化测试脚本和测试数据放在共同的测试架构中,思想是提供可重用的测试逻辑,这样来做的目的是减少测试维护的工作量以及便于改善测试案例的覆盖率,测试案例需要输入的测试数据和测试完成后的测试结果数据都会被存储同一个数据库或者数据源中,并且将测试的数据和测试逻辑分开,这样测试数据放生了变化时,不会影响到我们的测试逻辑。并且使得同一套测试逻辑可以针对多种数据来进行测试,尽量来提高测试逻辑的使用效率和复用效率。 |
模块驱动测试 |
模块驱动测试的思想是使用独立的脚本或者代码来对应每一个待测试的模块单元和功能,模块驱动测试引入的是编程语言中的面向对象编程中的抽象和模块独立封装的思想,即将测试代码和每一个测试模块进行解耦,这样可以减低自动化测试脚本或者自动化测试代码的维护成本,同时也增强了可扩展性,测试的执行者不需要知道单元模块的内部实现,只需要调用单元模块的对外提供的抽象接口方法即可,单元模块的功能需求发生变化时,只需要修改该单元模块的内部实现,对外的提供的抽象接口方法依然可以做到不发生变化。 |
关键字驱动测试 |
RobotFramework就是一种典型的关键字驱动测试的框架模式,关键字驱动测试通常也被认为是表格驱动测试,通过在表格中调用关键字来实现自动化测试,这种设计思想一般会将自动化测试拆分为设计和实现两个不同的阶段,RedWoodHQ自动化测试工具框架也是这种思想来实现,设计时需要尽量考虑关键字的通俗易懂以及通用性,也就是可以在不同的测试案例或者场景中可以高效的复用。关键字驱动测试的优点就在于自动化测试案例的编写者不需要对脚本语言有非常深入的了解就可以完成自动化测试案例的编写。 |
混合自动化测试 |
混合自动化测试是上面几种自动化测试思想的综合使用,关键字驱动测试和模块驱动测试这两种在很多情况下就可以完美的结合起来使用,比如我们可以使用RobotFramework提供的自定义用户关键字来对单元模块业务进行封装,封装完成后,再提供一个新的用户自定义关键字出来,新的用户自定义关键字就可以认为是一个抽象的接口。 |
基于模型测试 |
基于模型测试的思想一般用的较少,一般只能适合于特定的也是基于这种模型设计思想的系统,通常的情况下,这一测试模型是全部或者部分从待测试的软件系统的功能模型中提取出来的。在测试模型中描述了待测试系统的抽象行为,因此从测试模型中也可以派生出功能测试案例。 |
行为驱动开发 |
行为驱动开发是一种敏捷开发的思想,Behavior Driven Development使用简单的,特定于领域的脚本语言(DSL)将结构化自然语言语句转换为通俗易懂的可执行测试,行为驱动开发的根基是一种“通用语言”,该语言通俗易懂,这种通用语言同时被客户和开发者用来定义系统的行为,Cucumber 就是一种行为驱动开发的自动化测试工具。 |
2024-07-07
Java框架如何实现非阻塞式编程?2023-03-11
Android Jetpack 组件LiveData源码解析2023-03-11
hbuilderx设置Firefox浏览器安装路径教程 hbuilderx怎么设置Firefox浏览器安装路径?一、AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 四、AVL树的旋转 1.左单旋 2.右单旋 3.左右双旋 4.右左双旋 五、进行验证 六、AVLTree的性能...
2023-03-09