测试工程师如何从 0 搭建一个自己的 Web 测试工具
导读:文章面向"会写简单接口的测试同学",讲清测试工程师为什么要自建 Web 测试工具(重复操作多、业务流程长、经验应沉淀成工具而非文档),以及怎么搭建:技术栈够用就好(后端 Django 或 Spring 全家桶、前端 Bootstrap/Vue、常用关系型数据库即可),并给出从环境搭建、写页面/接口到前后端联调、发布部署的完整落地路径与常见坑。适合想给自己和团队造内部工具的测试工程师,面试官可据此考察候选人的工程化意识与端到端落地能力。
为什么要自己做测试工具、技术栈怎么选、从环境搭建到发布部署的完整路径。适合会写简单接口、想给自己和团队造轮子的测试同学。
一、为什么测试要自己做工具
先想清楚一个问题:我们的测试工具,本质上是做什么的?
大部分测试工具做的事情其实很简单:调用开发已有的接口,对数据库做增删改查和数据展示,通过这些操作简化测试流程、减少重复劳动、辅助测试。
那为什么一定要"自己做",而不是一直靠人工?主要有三个动机。
1. 重复操作太多,人工成本高
很多测试人员都积累了一些"捷径"经验:比如修改数据库的某几个字段,就能快速跳过不必要的测试阶段,直达我们要测试的环节。这种经验很实用,但问题在于——它没法每次都手把手教给别人。
2. 有些场景要走一条很长的流程
有的业务场景并不是改几个数据库字段就能搞定的,往往要完整走完一条很长的业务流程才能到达目的。比如创建"核心业务线"的对象,它的子流程就包含认证、培训、上架等多个环节,一步都不能省。
这种经验即便总结成文档,别人照着操作也还是会有各种问题或误操作。如果有一个工具,传入必要参数就能一键生成,就能方便很多测试人员。
3. 经验要沉淀成工具,而不是躺在文档里
测试过程中沉淀的经验和技巧,如果不能变成可复用、随时可用的东西,价值就流失了——需求反复讲、文档照着做还是出错。把这些经验做成工具,才是真正把个人能力沉淀成团队资产的方式。
从技术上说:Java、Python、JS 都能写脚本,但要让别人方便地使用,还是做成 Web 网站最好——省去使用方的学习成本,一个链接直接访问就能用。
二、技术栈怎么选:选自己熟悉的,别贪多
搭建 Web 服务的通用原则:选用自己熟悉的技术,有现成的框架就"站在上面添砖加瓦",没有就从零搭。作为测试,不一定要把各种框架全部学会,用自己会的东西能把功能实现就行。
后端选型对比
| 方案 | 语言 | 优点 | 不足 |
|---|---|---|---|
| Django | Python | 易上手,自带后台管理系统,扩展方便 | 生态更偏 Python,与 Java 技术栈团队协作时需要额外约定 |
| Spring 全家桶 | Java | 成熟稳定,组件丰富,方案多 | 有一定学习成本,上手慢 |
如果团队内部已有基于 Spring 的自研脚手架,直接用它最省事——很多公共能力(登录、权限、配置)都是现成的,你只需要专注写业务接口。本文按这种方案展开。
备注:作为测试,对开发框架的了解仅为个人见解,如有不同意见欢迎指正。
前端选型对比
| 方案 | 定位 | 说明 |
|---|---|---|
| HTML + JS + CSS | 前端基础 | 必须会,是一切前端能力的地基 |
| Bootstrap | 样式框架 | 快速美化页面外观,成本低 |
| Vue | 成熟前端框架 | 组件化开发,适合较复杂的工具页面,本文采用 |
数据库怎么选
测试工具的常见形态就是对数据库做增删改查和数据展示,所以一个常用的关系型数据库(如 MySQL)基本就够用,一般直接复用团队已有的库,或者单独建一张工具表即可,不需要为工具单独搭建复杂的数据体系。
选型小结
- 后端:Python 熟就 Django,Java 熟就 Spring 全家桶,团队有脚手架就用脚手架;
- 前端:Bootstrap 打底,页面复杂再上 Vue;
- 数据库:常用关系型数据库即可,够用优先;
- 核心原则:用自己会的技术栈,先把功能跑起来。
三、落地步骤:从环境搭建到发布部署
下面按"前端 → 后端 → 联调 → 发布"的顺序,把从上手到上线的完整路径走一遍。
1. 前端:环境搭建
知识储备:HTML + JS + CSS 必须会;Vue 会一点最好。
- 下载安装 Node.js,配置好 npm 国内镜像(如 npmmirror);
- 安装 VSCode,在扩展里安装 Vue 相关插件(如语法高亮);
- 从内部代码仓库把前端项目 clone 下来:
git clone <内部仓库地址>; - 想从零写 Vue 前端,可以参考社区的 vue-element-admin 文档;团队有现成脚手架就直接用脚手架;完全不想写代码的话,也可以看看现成的低代码平台,拖拽生成页面。
2. 前端:把项目跑起来
# 安装依赖(过程可能比较慢,耐心等待;有报错基本百度都能解决)
npm install
# 启动开发服务,会自动打开浏览器
npm run dev
3. 前端:写页面
- 页面结构:页面主要分两大块(暂不考虑样式):一是写页面,主要是表单、表格、文本、图片的布局;二是写功能代码,主要是调接口、把数据渲染到页面。
- 用 Element 写页面:打开 Element 官网,找到对应组件代码复制到项目里调试,直到满意即可。
- 写 script:需要一点 Vue 基础,可以照着项目里的样例模仿着写;重点了解怎么调接口、模板语法、组件传值。调试就按 F12,盯着 console 控制台的报错和参数值查问题。
- 路由:侧边栏和路由绑定在一起,在
@/router/index.js下配置对应路由,侧边栏就能动态生成,省去手动重复编辑侧边栏的工作量。 - 调后端接口:在项目的 api 目录下定义接口,照着已有样例写即可;接口定义好后还要知道服务的 host——开发环境的配置写在
.env.development文件里,其中VUE_APP_BASE_API就是代指服务 host 的变量(本地联调时,后端项目需先在本地通过 Tomcat 等启动并正常提供服务)。 - Mock:如果知道接口的定义和返回格式,可以先用 mock 来调试自己的页面。
- Debug:直接用 Chrome 的 F12,查看接口返回和 console 日志。
4. 后端:环境搭建
知识储备:Java 基础必须会。
- 下载安装 JDK、Tomcat、Maven,配置好 Maven 仓库(公司内网仓库或公共镜像);
- 安装 IntelliJ IDEA;
- 从内部代码仓库 clone 后端项目:
git clone <内部仓库地址>; - 如果想从零搭一个后端工程,可以参考你所在框架/脚手架的官方文档。
5. 后端:把项目跑起来
- 用 IDEA 打开项目,配置好 Maven 并更新依赖;
- 切换到开发分支;
- 配置 Tomcat 后启动;
- 启动成功后无需理会自动打开的页面——我们采用前后端分离的方式调试:后端只提供接口服务,前端用 Vue 方式启动页面。
6. 后端:写接口,先理解 MVC
写接口前需要简单了解 MVC 的分层思想:
| 分层 | 职责 |
|---|---|
| M(Model) | 数据层/数据模型,负责数据库访问 |
| V(View) | 视图层,用户交互界面;本项目前后端分离,即 Vue 页面 |
| C(Controller) | 控制层,接收用户请求,把模型与视图匹配在一起 |
通常的调用链路是这样的:Controller 定义路由、接收参数,调用 Service 层;Service 处理具体业务逻辑,调用 Model 层,再返回数据给 Controller;最终数据传给前端渲染到页面。
7. 前后端联调
采用本地前后端分离的调试方式:后端本地启动提供接口,前端把 VUE_APP_BASE_API 指向本地后端地址,两边跑起来即可调试完整链路。
8. 发布部署
- 确认在正确的分支开发完成、测试通过后,提交代码到内部代码仓库,并确认上线管理平台上关联的分支与提交分支一致;
- 前端部署:构建后把静态资源发布到静态资源托管服务,按环境区分访问入口(如测试环境、预发布环境各一个地址);
- 后端部署:部署到应用服务器(Tomcat 或容器化均可),并申请对应的环境域名,一般需要提工单由运维人员开通;熟悉容器的话直接容器化部署更省心,原理类似:构建镜像、发布、暴露访问入口。
常见坑提醒:
- 前端打包失败,多半是 npm 包没有同步,npm 源里找不到对应包,先在源里同步一下;
- 本地能正常打包、但发布平台提测失败,有可能是没有关闭 ESLint 语法检查。
四、给想自建测试工具的同学几个建议
- 从一个小而具体的痛点开始:比如"一键生成数据""一键改库跳过某阶段",把一个场景做透,比搭一个空架子有用得多;
- 技术栈够用就好:不必把各种框架都学会,用自己会的知识能实现功能就行,学习成本低才容易坚持;
- 优先用现成的东西:有现成的脚手架、组件库、低代码平台就先用,把精力花在业务逻辑上;
- 做成 Web 是最好的交付形态:一个链接直接访问,省去使用方的环境配置和学习成本,工具才真的会被用起来;
- 保持对个人见解的开放:本文只是使用层面的讲解,技术深度较浅,适用于会写简单接口的同学;对框架的理解如有不同意见,欢迎指正交流。