← 全部文章

教程

从零搭建 QA 工具栏 —— 每天省下 2 小时的 5 个动作

一名 QA 测试员每天填同一份注册表单 30 次。开发说「我给你做个测试面板」,然后从来没做。JustZix 有「动作」—— 注入到悬浮工具栏里的一键按钮,背后是任意 JS。五个动作,真能让你每天省下 2 小时。

JustZix 里的动作是什么

一个动作就是悬浮工具栏上的一个按钮 —— 4 个字符的标签、一种颜色,以及点击时触发的 JavaScript。工具栏会出现在每个匹配某个 URL 模式的页面上。每位测试员都有自己的一套,在设备间同步,可通过链接分享给团队。

动作 1 —— FILL(绿色)—— 填入测试数据

用测试值填满每个被识别出的表单字段。会派发 input + change 事件,好让框架(React/Vue)作出反应:

const data = {
  email: 'test+' + Date.now() + '@example.com',
  phone: '+15550100',
  firstName: 'John',
  lastName: 'Tester',
  address: '1 Test Street',
  city: 'New York',
  postalCode: '10001',
  password: 'TestPass123!',
};

Object.entries(data).forEach(([name, value]) => {
  const el = document.querySelector(
    `[name="${name}"], [id="${name}"], [data-test="${name}"]`
  );
  if (!el) return;
  el.value = value;
  el.dispatchEvent(new Event('input', { bubbles: true }));
  el.dispatchEvent(new Event('change', { bubbles: true }));
});

小技巧:test+TIMESTAMP@example.com 每次都生成唯一的地址 —— 反复测试注册而不会撞上「邮箱已存在」。

动作 2 —— CART(橙色)—— 把商品加入购物车

用于电商 QA —— 跳过目录浏览,直接把一件商品送进购物车:

// 声明式版本 —— 通过商店 API(最快)
fetch('/api/cart/add', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ productId: 12345, quantity: 1 })
}).then(() => location.reload());

// 兜底方案 —— 点击 "加入购物车" 按钮
// document.querySelector('[data-action="add-to-cart"]')?.click();

两种变体,因为有些商店期望带分析的完整 JS 流程,而 API 端点会跳过分析 —— 按你正在测试什么来选。

动作 3 —— STATE(紫色)—— 把组件置于精确的状态

你在测试一个多步向导。第 5 步要求 1-4 已通过。直接跳到第 5 步:

// 通过 SessionStorage / LocalStorage 设置状态
sessionStorage.setItem('wizardState', JSON.stringify({
  step: 5,
  completed: [1, 2, 3, 4],
  data: { /* 来自前几步的模拟数据 */ }
}));
location.reload();

// 或者直接通过 Redux DevTools(当应用使用 Redux 时)
// window.__REDUX_DEVTOOLS_EXTENSION__?.dispatch({ type: 'SET_STEP', step: 5 });

动作 4 —— LINK(蓝色)—— 复制带认证令牌的 URL

你向开发演示一个 bug。你把链接粘给他 —— 但他没登录,是另一个会话。复制一个在查询字符串里带着有效令牌的 URL:

// 从 cookie / localStorage 读取令牌(取决于应用把它存在哪里)
const token = document.cookie.match(/auth_token=([^;]+)/)?.[1]
  || localStorage.getItem('auth_token');

const url = new URL(location.href);
if (token) url.searchParams.set('debug_token', token);
url.searchParams.set('source', 'qa-share');

navigator.clipboard.writeText(url.toString()).then(() => {
  // 视觉反馈 —— 绿色闪一下
  document.body.style.outline = '4px solid #2D9D53';
  setTimeout(() => document.body.style.outline = '', 500);
});

动作 5 —— TIME(灰色)—— 推进日期

你在测试 30 天后的订阅到期。或者 7 天的退款窗口。覆盖 Date.now()

const OFFSET_DAYS = 30;
const offsetMs = OFFSET_DAYS * 24 * 60 * 60 * 1000;

const origDateNow = Date.now;
Date.now = () => origDateNow() + offsetMs;

const OrigDate = window.Date;
window.Date = class extends OrigDate {
  constructor(...args) {
    super(args.length ? args[0] : Date.now());
  }
};
window.Date.now = Date.now;

console.log(`%c[QA] 日期已偏移 +${OFFSET_DAYS} 天`,
  'background:#888;color:#fff;padding:2px 6px;border-radius:3px');

警告:这个覆盖只影响前端。后端返回的仍然是「真正的现在」。要做全栈测试,需要在 API 一侧做改动,或者一个「模拟日期」的功能开关。

搭建工具栏的好做法

如何在 JustZix 中接入

  1. 安装 JustZix
  2. 文件夹「QA 工具栏」。URL 模式:https://*-staging.example.com/*
  3. 在文件夹设置里启用「动作面板」。
  4. 添加本文的动作 1-5 —— 每个都有自己的颜色和 4 个字符的标签。
  5. 生成一个分享链接发给团队 —— 他们一键导入整个工具栏。

免费安装 JustZix,给你的 QA 团队那些开发团队永远不会做的工具。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景