对于 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 浅谈扩展功能(开启你的无限想象)相关推荐

  1. 浅谈tcp协议与tcp_tw

    浅谈tcp_tw_reuse 流量控制.拥塞控制 什么是TIME_WAIT状态? 为什么要设计TIME_WAIT状态? 原因一:防止历史连接中的数据,被后面相同四元组的连接错误的接收 原因二:保证「被 ...

  2. 浅谈网络流的基本算法

    引言 过去听起来高深莫测的网络流算法,现在已飞入寻常百姓家了,对于每一个OIER,网络流是一个神圣的东西(个人见解),但神圣的同时,它并不是那样抽象,最形象的模型就是水流,从长江源点无限的向外流水,而 ...

  3. emacs配置文件浅谈

    标题: .emacs配置文件浅谈 .emacs 指的是emacs的配置文件.在UNIX下为".emacs".它在用户的HOME目录下. 你可以自己写一个全新的.emacs.但一般都 ...

  4. 浅谈XS-Leaks之Timeless timing attck

    本文首发于先知社区,转载请联系对方 原文链接:浅谈XS-Leaks之Timeless timing attck 文章目录 1 XS-Leaks简介 1 什么是XS-Leaks? 2 XS-Leaks和 ...

  5. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  6. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  7. 浅谈网络游戏的设计——服务器端编程 (3)

    关键词: 网络游戏 构思 策划 创意 竞争机制 竞争系统 本系列文章始终以浅谈二字开头,所以内容简单,不够深入,希望大家谅解. 但是,正如人类的学习过程一样,是一个由浅入深的过程.市面上很多昂贵的图书 ...

  8. iOS实录15:浅谈iOS Crash

    导语:在当前的iOS开发中,虽然ARC为开发者解决了手动内存管理时代 的许多麻烦,但是内存方面的问题依然是产生iOS Crash的元凶之一,本文介绍内存方面,有关僵尸对象.野指针.内存泄漏.废弃内存这 ...

  9. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

最新文章

  1. java 泛型 .net_Java基础11:Java泛型详解
  2. 处理音频文件的python模块
  3. mybatis批量插入(insert)和批量更新(update)
  4. 为你的项目启用可空引用类型
  5. 比开源快30倍的自研SQL Parser设计与实践
  6. Zookeeper(三)——选举机制
  7. ES6新特性_ES6函数参数的默认值设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记011
  8. error: src refspec main does not match any
  9. 想要给视频去色有什么方法?原来用这个就可以了
  10. 物料编码的制定(资料收集)
  11. 移动硬盘显示要格式化怎么办?
  12. c语言中14 3,C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?
  13. 帆软FineReport8.0使用技巧总结及常见问题解决
  14. android 复制屏幕,iphone或者android的手机或者pad可以屏幕复制到Z1上了!
  15. Python3抓取Bing每日图片做桌面背景,并设置为开机更新背景
  16. 虎符遥控器(PPT遥控翻页)
  17. Win11怎么禁止软件后台运行?Win11系统禁止应用在后台运行的方法
  18. Android实现类似微信联系人中的分组列表
  19. 【电机/基础知识】电机介绍和数学模型
  20. jmeter断言beanshell判断日期/整型大小比较

热门文章

  1. jupyter notebook切换conda环境时相关报错
  2. 北京大学 科学道德与学术规范基本知识测试 题库
  3. 看中国 | 王强:化解供需错配新零售行业必须回归两大职能
  4. 【Python】爬虫:微博找人页面爬虫(四)
  5. 计算n以内的偶数和(c++)
  6. 基于海量数据的关联规则挖掘(五)
  7. 概率论经典分布与定律
  8. composer proc_open(): fork failed – Cannot allocate memory
  9. 驾考 php mysql,驾考理论模拟考试系统的设计与实现(PHP,MySQL)(含录像)
  10. Tensorflow笔记之 全连接层tf.kera.layers.Dense()参数含义及用法详解