<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>fabel</title>
    <link>https://fabel.cn/</link>
    <description>个人工作记录：项目、笔记与随手写下的东西。</description>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 04 Aug 2026 09:05:48 GMT</lastBuildDate>
    <atom:link href="https://fabel.cn/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用rancher、MySQL做测试容器构建，但Windows 端实际 TCP 连接失败？</title>
      <link>https://fabel.cn/p/rancher-mysql-windows-tcp</link>
      <guid isPermaLink="true">https://fabel.cn/p/rancher-mysql-windows-tcp</guid>
      <pubDate>Tue, 04 Aug 2026 07:00:00 GMT</pubDate>
      <description>原因： 测试架构频繁跨越“Rancher Desktop/WSL 容器网络 → Windows 宿主机”的端口转发层，导致不稳定。 典型链路是： MySQL 容器内正常 ↓ Doc…</description>
      <content:encoded><![CDATA[<p>原因：<br>测试架构频繁跨越“Rancher Desktop/WSL 容器网络 → Windows 宿主机”的端口转发层，导致不稳定。<br>典型链路是：<br>MySQL 容器内正常<br>    ↓<br>Docker 记录 127.0.0.1:3340 → 3306<br>    ↓<br>Rancher Desktop / WSL 转发层<br>    ↓ 这里失效<br>Windows 127.0.0.1:3340 无监听<br>    ↓<br>Windows 上运行的测试 ECONNREFUSED<br>docker port 显示映射，只代表 Docker 已登记发布规则，不等于 Windows 端口转发进程一定正常。Docker 官方说明，发布端口还需要通过宿主机的 NAT/PAT、防火墙和转发规则才能抵达容器。Docker 端口发布机制<br>为什么 Win Hunt 多条任务线容易反复遇到？因为 Codex 经常采用以下方式做真实数据库测试：<br> 临时创建一个 MySQL 容器；<br> 随机选择 3340、3341…… 等 Windows 端口；<br> 在 Windows PowerShell/Node 里运行测试；<br> 通过 127.0.0.1:3340 访问容器。<br>而你的容器实际运行在 Rancher Desktop 的 WSL 环境中。Windows、WSL、Rancher Desktop、Hyper-V 防火墙和 VPN 网络组件之间，任何一层转发状态异常，就会出现这个问题。Rancher Desktop 官方说明，原生 Windows 程序使用 Testcontainers 时应通过 Windows named pipe 连接 Docker，并预期容器端口可以从 localhost 访问；现在的现象说明这一预期链路已经失效。<br>建议：<br>自动化真实 MySQL 测试，不要再依赖 Windows 的 127.0.0.1:随机端口。改成：<br>测试运行容器<br>    ↓ Docker内部网络<br>mysql-test:3306<br>例如：<br>services:<br>  mysql-test:<br>    image: mysql:8.0<br>    environment:<br>      MYSQL_ROOT_PASSWORD: test-password<br>      MYSQL_DATABASE: winhunt_test<br>    healthcheck:<br>      test: [&quot;CMD&quot;, &quot;mysqladmin&quot;, &quot;ping&quot;, &quot;-h&quot;, &quot;localhost&quot;]<br>      interval: 2s<br>      timeout: 2s<br>      retries: 30<br>    networks:<br>      - winhunt-test</p>
<p>  backend-test:<br>    build:<br>      context: .<br>      dockerfile: backend/Dockerfile<br>    environment:<br>      DB_HOST: mysql-test<br>      DB_PORT: 3306<br>      DB_NAME: winhunt_test<br>    depends_on:<br>      mysql-test:<br>        condition: service_healthy<br>    networks:<br>      - winhunt-test</p>
<p>networks:<br>  winhunt-test:<br>这里 MySQL 不需要配置 ports:，测试容器直接通过 mysql-test:3306 连接。Docker 官方确认，同一容器网络内可以直接通信，不需要把端口发布到 Windows。Docker 网络说明<br>这会同时解决：<br> Rancher Desktop localhost 转发失效；<br> VPN与WSL网络冲突；<br> 随机宿主机端口冲突；<br> Windows防火墙拦截；<br> Codex反复创建 r5、r6、r7 容器试错；<br>docker port 显示正常但实际无法连接。</p>
]]></content:encoded>
      <category>AI开发</category>
    </item>
    <item>
      <title>推进测试慢？</title>
      <link>https://fabel.cn/p/20260804</link>
      <guid isPermaLink="true">https://fabel.cn/p/20260804</guid>
      <pubDate>Tue, 04 Aug 2026 07:00:00 GMT</pubDate>
      <description>需要设定一个合理的推进测试机制，如果不是非常严格的金融系统项目，可以适当放宽测试通过的标准。 1. C 线不再“一处失败，全线停止” 今后发现问题后按以下方式处理： P0/P1：停…</description>
      <content:encoded><![CDATA[<p>需要设定一个合理的推进测试机制，如果不是非常严格的金融系统项目，可以适当放宽测试通过的标准。</p>
<ol>
<li>C 线不再“一处失败，全线停止”<br>今后发现问题后按以下方式处理：<br> P0/P1：停止受影响的业务链路，但其他无关 UAT 继续；<br> P2/P3：登记缺陷，当前用例标记 CONDITIONAL_PASS，继续后续任务；<br> 环境或测试数据问题：标记 BLOCKED，不算业务 FAIL，也不阻塞其他模块；<br> 只有会污染全局数据、破坏权限基线或影响公共环境的问题，才停止整条 C 线。<br>也就是说，即使财务文件预览被阻塞，人才、客户、招聘任务、推荐、公共组件等不依赖该问题的 UAT 仍可继续。</li>
<li>把串行 C-UAT 改成三条测试流<br>建议拆成：<br>测试流<br>范围<br>推进方式<br>C-Core<br>登录、权限、核心业务闭环、财务、数据完整性<br>严格串行，P0/P1 阻塞<br>C-Module<br>客户、人才、项目、任务、推荐、供应商等模块功能<br>可并行，P2/P3 不阻塞<br>C-Experience<br>UI、交互、提示、兼容性、非关键边界<br>批量检查，全部进入缺陷池<br>三条测试流使用独立账号和独立数据编号，避免互相覆盖。<br>涉及 Backend 重启、数据库恢复、公共配置修改的用例，单独安排维护窗口，不与其他测试并行。</li>
<li>B 线退出“产品扫雷”<br>B 线以后只负责：<br> Git 基线和变更范围；<br> 构建、镜像、Migration；<br> 备份和回滚；<br> 部署健康；<br> 与本次变更直接相关的 Smoke。<br>B 线不再负责：<br> 开放式全项目审查；<br> 每次 RC 都重新跑全部产品功能；<br> 主动寻找 P2/P3；<br> 替代 C 线进行完整 UAT。<br>否则每一个 RC 都会演变成一次新的全项目测试。</li>
<li>D 线改成“缺陷批处理”<br>除 P0 外，不要发现一个问题就马上修一个。<br>建议每天固定一到两个收口时间：<br>上午：C线集中测试和登记<br>下午：统一评审缺陷等级<br>当天：D线集中修复一批真正的P1<br>次日：B线生成一个候选版本<br>这样可以从：<br>发现1个问题 → 修复 → RC → 部署 → 又发现1个问题<br>改成：<br>集中发现问题 → 一次分级 → D线批量修P1 → 一次RC<br>5、减少重复测试<br>每个用例都要标记“已通过基线”和“受哪些文件影响”。<br>新的 Hotfix 只回归：<br>直接修改功能</li>
</ol>
<ul>
<li>直接调用方</li>
<li>安全/权限边界</li>
<li>一条核心冒烟链路<br>只有出现以下情况，才重新完整回归：<br> Migration 变化；<br> 权限模型变化；<br> 公共认证或请求封装变化；<br> 核心领域模型变化；<br> 数据修复或存储结构变化；<br> 多个模块的大规模合版。<br>当前 RC5 虽然会涉及认证请求链路，但如果只是复用已有认证 fetch，并没有修改全局认证机制，就不需要重新跑全部权限和业务模块。<br>6、建议采用“有限上线”标准<br>Win Hunt v1.0 首次上线可以定义为：<br> 仅内部及指定业务人员使用；<br> 控制首批账号和业务量；<br> 不开放大规模外部注册；<br> 保留快速回滚；<br> 每日检查错误日志和核心数据；<br> P2/P3 在上线后分批修复。<br>这样上线判断就不是“系统是否完美”，而是：<br>是否足够安全地让一小批真实用户开始使用，并且发现问题时能够控制影响和快速回退。</li>
</ul>
]]></content:encoded>
      <category>AI开发</category>
      <category>测试</category>
    </item>
    <item>
      <title>SSH传输镜像慢？</title>
      <link>https://fabel.cn/p/ssh</link>
      <guid isPermaLink="true">https://fabel.cn/p/ssh</guid>
      <pubDate>Mon, 03 Aug 2026 07:00:00 GMT</pubDate>
      <description>原因：不要让AI通过SSH去传输完整镜像，会很慢。 建议：本地/CI推送镜像 → 腾讯云镜像仓库 UAT服务器按不可变Tag或Digest执行docker pull</description>
      <content:encoded><![CDATA[<p>原因：不要让AI通过SSH去传输完整镜像，会很慢。<br>建议：本地/CI推送镜像 → 腾讯云镜像仓库 UAT服务器按不可变Tag或Digest执行docker pull</p>
]]></content:encoded>
      <category>AI开发</category>
    </item>
  </channel>
</rss>
