一、项目介绍
Recorder 是一款 UI录制 和 回归测试 工具,用于录制浏览器页面 UI 的操作。通过 UIRecorder 的录制功能,可以在自测的同时,完成测试过程的录制,生成 JavaScript 测试脚本代码。回归测试过程中,可以利用生成的 JavaScript 测试脚本代码,使用 Mocha 对自测过程进行回放,以达到零成本做自动化回归测试的目的(需要地址的朋友关注转发后,私信回复:UI)。
二、整体架构
三、底层依赖
Chrome Extension:Chrome 拓展程序是一个用 Web 技术开发增强浏览器功能的软件,由 HTML、CSS、JavaScript、图片等静态资源组成打包的一个 .crx 后缀的压缩包。UIRecorder 主要利用了 Chrome Extension 实现事件驱动、DOM 捕捉的能力。
NodeJS:Node.js 是一个基于 Chrome V8 JavaScript 引擎实现的 JavaScript 运行时。UIRecorder 主要利用其 http 模块实现 Websocket 通信能力、利用其 fs 模块实现生成脚本能力。
Selenium:Selenium 是一款主流的 Web UI 测试框架,是一款用于运行端到端功能测试的工具,且得到了各大浏览器厂商的支持。UIRecorder 主要利用其 WebDriver 服务能力实现端到端功能测试,并且 Selenium 支持各大主流浏览器,因此可以利用 Selenium 进行多浏览器兼容测试。
Mocha:Mocha 是一款主流的 JavaScript 测试框架,包括多种测试风格脚本模版、执行库、报告器等测试场景通用能力。UIRecorder 主要利用其 BDD 风格设计脚本模版,利用其执行库功能进行场景回归测试,且将回归测试的结果通过报告器进行数据提炼、渲染,多维度直观呈现回归结果。
四、核心能力
事件驱动:UIRecorder 录制功能中,Chrome Extension 基于 JavaScript 的 事件机制 进行全局事件监听,当触发事件操作时(click、keyDown等),记录事件类型及当前操作节点信息。
DOM 捕捉:录制过程中记录的元素信息,Chrome Extension 基于 JavaScript 的 DOM 实现,记录的信息主要包括 DOM 节点的标签(tag)、属性(attribute)、文本内容(text)、值(value)等。
WebSocket 通信:WebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信。UIRecorder 主要利用 WebSocket 实现 Chrome Extension 与 Node Process 的通信,Chrome Extension 将录制过程的相关指令、数据(事件类型、节点信息)传输至 Node Process。
生成脚本:Node Process 利用 Chrome Extension 传输的相关指令、数据,结合配置好的录制脚本模版,生成对应的测试用例脚本。
WebDriver:Selenium 提供的 WebDriver 服务能力,符合 W3C WebDriver Protocol 规范,UIRecorder 执行回归测试时,可通过 http 请求的形式,调用浏览器并进行操作,且 WebDriver 会返回对应响应信息。
多浏览器兼容:Selenium 的 WebDriver 服务支持各大主流浏览器,包括 Chrome、Firefox、IE 等,采用 Selenium 进行回归测试时,可同时测试多浏览器兼容性。
执行库:UIRecorder 进行回归测试的执行库基于 Mocha 实现,其功能主要是将测试用例脚本按照一定的规则处理、执行,返回对应的执行结果。
报告器:执行库返回的执行结果,可经过报告器进行数据提炼,多维度展示。