qa-probe · 驱动 Probe AI 软件测试智能体
Overview
用一条命令驱动本地 Probe 智能体完成「需求 → 测试计划 → 真实浏览器执行 → 通过/失败判定 + 证据 → 报告」。核心是 scripts/probe_qa.py(封装了登录/analyze/execute/轮询/解析的全部非显性细节)。详细 API 契约见 references/api.md,启停与排障见 references/operations.md。
Prerequisites(先确认再跑)
- 解释器:用托管 venv 解释器跑脚本与服务(含 Playwright):
C:/Users/liyin/.workbuddy/binaries/python/envs/default/Scripts/python.exe。用系统 Python 会缺 Playwright。 - 服务在线:先跑
python scripts/probe_qa.py health。若服务不可达,按references/operations.md的启动命令用后台任务拉起agent_server.py(带PROBE_LLM_*)。 - LLM(可选但推荐):Ollama 在线时用真实模型生成计划/步骤;不在线则退化为离线规则(仍可跑,计划质量下降)。health 会显示
ollama: UP/DOWN。Ollama 启动命令见references/operations.md。 - 登录:默认
admin/admin123(--user/--password可覆盖);另有operator/viewer账号。无probe账号,勿用旧文档的 probe/probe123。
Standard workflow(跑一次测试)
PY=C:/Users/liyin/.workbuddy/binaries/python/envs/default/Scripts/python.exe
"$PY" <skill>/scripts/probe_qa.py run \
--requirement "验证登录:正确账号可登录、错误密码被拒、空凭证有提示" \
--target "http://127.0.0.1:4173/target/login.html" \
[--extra-context "补充业务规则"] [--concurrency 2] [--scenario-timeout 120] \
[--environment env.json] [--save-plan plan.json] [--out result.json]
脚本自动完成:health 门禁 → 登录拿 Cookie → POST /api/analyze(async) → 轮询出计划 → POST /api/execute(async) → 轮询到 done → 打印报告。退出码:0=无失败,1=有失败(发现缺陷),2=环境/提交错误。
- 需求 ≤500 字(超了服务端 400,VAL-01)。
- 需要登录态的页面:用
--environment env.json传凭证({username,password,token,session_cookie}),执行前自动套用。 - 只要计划不执行:加
--save-plan plan.json存计划;之后用--plan-file plan.json复跑。
Interpreting the result
summary:total/passed/failed/skipped。- 每个场景
status:pass/fail/error/skipped;error是失败原因;evidence有screenshot/network/console/pageErrors。 - 内置演示
target/refund.html故意埋了"超额退款不拦截"bug → 跑退款流预期 1 个失败,这是正确检出,不是回归。 - LLM(
qwen2.5:3b) 计划质量有限:负面场景可能误断言成功态、无步骤场景执行时才动态生成步骤——报告里对此类场景提示人工复核(UI 标「AI 生成步骤」)。
Common tasks
- 只分析出计划:
run --requirement ... --target ... --save-plan plan.json(随后可--plan-file plan.json执行)。 - 重跑失败场景 / 聚合回归:用 Web UI 或
POST /api/execute只传失败场景;回归用例库见GET /api/regression/cases(按失败原因去重、复发≥3次升 P0)。 - 定位器自愈:
POST /api/heal/locators(重新探测步骤定位器)。 - 步骤录制:
POST /api/record/start|stop(把真实操作录成场景步骤)。 - 全量回归本项目自身:项目根
bash uat_regression.sh(四层测试,BROWSER=0跳过慢的真浏览器层)。
Important constraints & gotchas
- 轮询
/api/runs/<id>的结果在run键下,且必须带会话 Cookie(否则 401,属正常鉴权)。 - Ollama 没起时,探测
127.0.0.1:11434会被环境代理变成 502(非连接拒绝)——别误判为 Ollama 坏了;探测要绕过代理。 - 本地 LLM 出计划约 10-60s,浏览器关窗约 10s;用异步+轮询,别用同步阻塞调用。
- 单 localhost 实例、仅 Chromium、会话内存态(重启服务需重登)。
- 对用户真实系统(如 leads.seefishbest.com:8082/login)执行会产生真实操作,先确认已授权。
- 安全提示:默认账号密码硬编码且未强制改密(已知隐患),团队共享 / 生产部署前务必改密(详见
references/operations.md安全提示);对被测真实系统执行会产生真实操作,须先获授权。
Bundled resources
scripts/probe_qa.py— 端到端驱动 CLI(health/run)。references/api.md— API 契约、返回结构、坑。references/operations.md— 启停服务与 Ollama、解释器、排障、演示目标、安全提示。