eTest 浅谈扩展功能(开启你的无限想象)
对于 ete、api、 压力测试来说,由于项目的复杂度不同,流程不同,我们虽然尽可能的穷举所有的测试场景,但是对于特殊的测试流程依旧无法更好的支持,如果对于一些特殊的测试场景做兼容处理,那么我们会陷入无限期的需求开发迭代,就无法抽身对自动化测试做其他功能的开发,最后我们会被这些特殊的需求而缠身,最终导致项目因为过于臃肿,而维护成本上升,BUG 量急剧上升。
为了彻底解决根本问题,我们做了大量的技术方案调研,参考市面上的优秀开源项目设计方案,最终我们参考webpack
的 plugin 功能,通过tapable
来管理插件,大大提高了自动化的测试工具的使用场景,也给使用者更多的想象空间。
思路
对于 ete、api、 压力测试,每个测试执行阶段都会向外暴露生命周期,开发者只需要了解每个生命周期暴露的参数和接收的参数,在插件扩展编辑器里按照要求自定以自己的插件即可。
然后通过高级配置
挂载到指定的生命周期,在运行项目前开启开启插件配置
,在运行项目的时候,会优先初始化插件配置,把插件挂载到相应的生命周期,当执行到当前生命周期的时候,内部会开辟一块沙箱执行插件,防止插件错误导致程序崩溃;这样就可以的实现测试场景的控制,大大的提高了测试工具的灵活性、实用性。
举例(ETE)
ETE 插件执行流程图
生命周期钩子
1.初始化参数前(initBefore):自定义是否需要执行、 自定义 api、 修改配置参数(设置 无头模式,性能分析,行为快照,开启调试,高就配置,插件,超时时间)。
2.初始化参数后(initAfter):自定义是否需要执行、 自定义 api、修改配置参数(设置 无头模式,性能分析,行为快照,开启调试,高就配置,插件,超时时间)。
3.单步执行前(stepBefore):单个定义过滤执行用例(满足条件)、单个修改参数(在文件中查找)、链接数据库断言、单个自定义断言、自定义 api。
4.单步执行后(stepAfter):单个修改断言、单个替换断言、链接数据库断言、自定义 api。
5.报告&推送消息前(resultBefore):批量修改测试报告、批量修改推送信息、定义推送规则、自定义推送 api
6.报告&推送消息后(resultAfter):自定义 api
插件模版
function myselfPlugin(config, callBack) {const itemInfor = {config: config.config,params: config.item,sendNotice: false,report: '',isEllipsis: false,isReplace: false};callBack(null, itemInfor);
}
参数
config
参数 | 说明 | 类型 | 默认值 | 有效使用周期 |
---|---|---|---|---|
config | 项目配置信息和项目信息 | object | - | ALL |
params | 单个执行参数信息 | object | - | stepBefore、stepAfter |
content | 每一次执行用例测试的 html 页面内容 | string | - | stepBefore、stepAfter |
report | 测试报告结果 | Array | - | stepBefore、stepAfter、resultBefore、resultAfter |
lifeCycle | 周期名称 | string | - | ALL |
sendNotice | 是否在执行完毕后发生消息 | boolean | - | resultBefore、resultAfter |
callBack(param1,param2) tapable
暴露的周期函数
param1
参数 | 说明 | 类型 | 默认值 | 有效使用周期 |
---|---|---|---|---|
param1 | 如果参数不为 null,则返回执行错误并且停止执行测试 | null string | - | ALL |
param2(插件修改返回值)
参数 | 说明 | 类型 | 默认值 | 有效使用周期 |
---|---|---|---|---|
config | 项目配置信息和项目信息 | object | - | initBefore、initAfter |
params | 单个执行参数 | object | - | stepBefore、stepAfter |
report | 测试报告结果 | Array | - | stepBefore、stepAfter、resultBefore |
sendNotice | 是否在执行完毕后发生消息 | boolean | - | resultBefore |
isEllipsis | 是否省略执行本次测试用例 | boolean | false | stepBefore |
isReplace | 是否是替换测试报告 | boolean | false | stepBefore、stepAfter |
结尾
引入插件功能后,大大的提高了测试工具的灵活性、实用性;也为我们节省的时间去好好打磨eTest 测试工具,以及做垂直功能的开发,持续提升 eTest 测试工具专业化,提升eTest 测试工具使用体验,请持续关注
eTest 浅谈扩展功能(开启你的无限想象)相关推荐
- 浅谈tcp协议与tcp_tw
浅谈tcp_tw_reuse 流量控制.拥塞控制 什么是TIME_WAIT状态? 为什么要设计TIME_WAIT状态? 原因一:防止历史连接中的数据,被后面相同四元组的连接错误的接收 原因二:保证「被 ...
- 浅谈网络流的基本算法
引言 过去听起来高深莫测的网络流算法,现在已飞入寻常百姓家了,对于每一个OIER,网络流是一个神圣的东西(个人见解),但神圣的同时,它并不是那样抽象,最形象的模型就是水流,从长江源点无限的向外流水,而 ...
- emacs配置文件浅谈
标题: .emacs配置文件浅谈 .emacs 指的是emacs的配置文件.在UNIX下为".emacs".它在用户的HOME目录下. 你可以自己写一个全新的.emacs.但一般都 ...
- 浅谈XS-Leaks之Timeless timing attck
本文首发于先知社区,转载请联系对方 原文链接:浅谈XS-Leaks之Timeless timing attck 文章目录 1 XS-Leaks简介 1 什么是XS-Leaks? 2 XS-Leaks和 ...
- 浅谈MySQL存储引擎-InnoDBMyISAM
浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...
- python中内置的四种数值类型为_浅谈python语言四种数值类型
Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...
- 浅谈网络游戏的设计——服务器端编程 (3)
关键词: 网络游戏 构思 策划 创意 竞争机制 竞争系统 本系列文章始终以浅谈二字开头,所以内容简单,不够深入,希望大家谅解. 但是,正如人类的学习过程一样,是一个由浅入深的过程.市面上很多昂贵的图书 ...
- iOS实录15:浅谈iOS Crash
导语:在当前的iOS开发中,虽然ARC为开发者解决了手动内存管理时代 的许多麻烦,但是内存方面的问题依然是产生iOS Crash的元凶之一,本文介绍内存方面,有关僵尸对象.野指针.内存泄漏.废弃内存这 ...
- java对象头_浅谈java对象结构 对象头 Markword
概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...
最新文章
- java 泛型 .net_Java基础11:Java泛型详解
- 处理音频文件的python模块
- mybatis批量插入(insert)和批量更新(update)
- 为你的项目启用可空引用类型
- 比开源快30倍的自研SQL Parser设计与实践
- Zookeeper(三)——选举机制
- ES6新特性_ES6函数参数的默认值设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记011
- error: src refspec main does not match any
- 想要给视频去色有什么方法?原来用这个就可以了
- 物料编码的制定(资料收集)
- 移动硬盘显示要格式化怎么办?
- c语言中14 3,C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?
- 帆软FineReport8.0使用技巧总结及常见问题解决
- android 复制屏幕,iphone或者android的手机或者pad可以屏幕复制到Z1上了!
- Python3抓取Bing每日图片做桌面背景,并设置为开机更新背景
- 虎符遥控器(PPT遥控翻页)
- Win11怎么禁止软件后台运行?Win11系统禁止应用在后台运行的方法
- Android实现类似微信联系人中的分组列表
- 【电机/基础知识】电机介绍和数学模型
- jmeter断言beanshell判断日期/整型大小比较
热门文章
- jupyter notebook切换conda环境时相关报错
- 北京大学 科学道德与学术规范基本知识测试 题库
- 看中国 | 王强:化解供需错配新零售行业必须回归两大职能
- 【Python】爬虫:微博找人页面爬虫(四)
- 计算n以内的偶数和(c++)
- 基于海量数据的关联规则挖掘(五)
- 概率论经典分布与定律
- composer proc_open(): fork failed – Cannot allocate memory
- 驾考 php mysql,驾考理论模拟考试系统的设计与实现(PHP,MySQL)(含录像)
- Tensorflow笔记之 全连接层tf.kera.layers.Dense()参数含义及用法详解