Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计
自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的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 就是一种行为驱动开发的自动化测试工具。 |
备注:本文内容摘选自作者自己出版的Robot Framework自动化测试框架核心指南 一书。
关于自动化测试的更多内容,请关注:
Robot Framework自动化测试框架核心指南京东官方购买
Robot Framework自动化测试框架核心指南电子版试读
Robot Framework自动化测试框架核心指南天猫官方旗舰店购买
Robot Framework自动化测试框架核心指南当当网购买
Robot Framework自动化测试框架核心指南 作者签名版本购买
相关博文汇总:
RobotFramework下的http接口自动化Create Http Context关键字的使用
RobotFramework下的http接口自动化Get关键字的使用
RobotFramework下的http接口自动化post关键字的使用
RobotFramework下的http接口自动化Get Response Body关键字的使用
RobotFramework下的http接口自动化Get Response Status 关键字的使用
RobotFramework下的http接口自动化Get Response header 关键字的使用
RobotFramework下的http接口自动化Set Request Header 关键字的使用
RobotFramework下HttpLibrary库其它关键字
RobotFramework下的http接口自动化Set Request Body 关键字的使用
RobotFramework下的http接口自动化Follow Response关键字的使用
RobotFramework自动化测试框架的基础关键字(一)
RobotFramework自动化测试框架的基础关键字(二)
RobotFramework自动化测试框架的基础关键字(三)
RobotFramework自动化测试框架的基础关键字(四)
RobotFramework自动化测试框架的基础关键字(五)
RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary介绍
RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary库其它的常见自动化关键字
RobotFramework自动化测试框架-移动手机自动化测试Input Text和Click Button关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Clear Text关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click Element关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click A Point关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click Element At Coordinates关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Get Element Location关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Element Attribute Should Match关键字的使用
RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)
RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib
RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
RobotFramework自动化测试框架-MongoDBLibrary库的使用
Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计的更多相关文章
- 三年磨一剑,robot framework 自动化测试框架核心指南,真正讲透robot framework自动化测试框架(笔者新书上架)。
序 关于自动化测试的工具和框架其实有很多.自动化测试在测试IT行业中扮演着越来越重要的角色,不管是在传统的IT行业还是高速发展的互联网行业或是如今的大数据和大热的人工智能领域,都离不开测试,也更加离不 ...
- Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib
如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...
- Robot Framework使用Phantomjs进行无界面UI自动化测试
Robot Framework 是一款关键字驱动的验收自动化测试框架,现在在国内使用的越来越广泛了.一种通用的Web UI自动化测试解决方案是Robot Framework+Selenium2Libr ...
- Robot Framework测试框架用例脚本设计方法
Robot Framework介绍 Robot Framework是一个通用的关键字驱动自动化测试框架.测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储.通过测试库中实现的关键字驱动 ...
- Robot Framework自动化测试的应用
Robot Framework自动化测试的应用(一) 最近尝试用Robot Framework代替之前全部采用python实现测试case,开始对Robot Framework进行些了解学习. 1. ...
- 2小时入门Robot Framework
1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...
- Robot Framework简介
概述 Robot Framework是一个通用的关键字驱动自动化测试框架.测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储. 通过测试库中实现的关键字驱动被测软件.Robot Fra ...
- 【Robot Framework 介绍】总纲
Robot Framework是一个由python构建的的开源的自动化测试框架,现在版本还在不停的更新中.由于它开源性,网上有大量的第三方接口和很多资料.下面提供两个比较官方的链接,有兴趣的同学可以直 ...
- 《转》Robot Framework 的安装配置和简单的实例介绍
Robot Framework 介绍 Robot Framework 是一款基于 Python 的功能自动化测试框架.它具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进 ...
随机推荐
- Android 的Glide、TabLayout、RecyclerView(下一章补充)。
今天的内容主要和一些依赖有关, //Glide依赖implementation 'com.github.bumptech.glide:glide:4.11.0'//Google Design依赖//n ...
- Node.js 和 Python之间如何进行选择?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/nodejs-vs-python-which ...
- String 的两种实例化方式
String 的两种实例化方式 隐式实例化:直接赋值 public class Demo { public static void main(String[] args) { String s = & ...
- 2018-04-19:innodb和myisam区别
福哥答案2020-04-19:
- springboot中RedisTemplate的使用
springboot中RedisTemplate的使用 参考 了解 Redis 并在 Spring Boot 项目中使用 Redis--以IBM为学习模板 springboot之使用redistemp ...
- Spring Boot 教程 - MyBatis-Plus
1. Mybatis-Plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 为什么说Myba ...
- Linux进程管理与性能监控
1. 进程管理工具 这一节我们介绍进程管理工具: 使用进程管理工具,我们可以查询程序当前的运行状态,或终止一个进程: 任何进程都与文件关联:我们会用到lsof工具(list opened files) ...
- 微信小程序-人脸识别
wx.checkIsSupportFacialRecognition({success:res=>{ wx.startFacialRecognitionVerifyAndUploadVideo( ...
- Jmeter 常用函数(1)- 详解 __Random
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 产生一个随机数 语法格式 ${__Ra ...
- echars 饼图使用
option = { tooltip: { trigger: 'item', formatter: '{a} <br/>{b}: {c} ({d ...