SDET / Frontend · Test Design

TikTok 全栈 E2E:关键旅程、真实依赖与可诊断失败

在UI到后端数据之间验证真实journey,控制fixture、异步等待与运行成本。

题目重点:在UI到后端数据之间验证真实journey,控制fixture、异步等待与运行成本。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练项目含前端、API和数据库,关键journey需按真实产品替换。
  • E2E不等于所有case都从浏览器走,第三方真实依赖按测试环境合同决定。

解题路线

  1. 从用户价值挑少数关键journey,例如登录→创建资源→刷新查看→授权另一用户→撤销权限。明确每步UI、API与持久化预期,避免只断言按钮存在。
  2. 基础环境要可重建,版本一致、迁移完成、独立测试账户与数据,外部服务用sandbox或受控替身;同时保留少量真实边界契约测试,mock不能证明供应商兼容。
  3. 定位元素使用稳定可访问名称或专用标识,避免易变CSS结构。等待可观测状态/网络/完成事件,不固定sleep;超时保存截图、请求日志和服务trace以能分层定位。
  4. 覆盖关键正常与一两条失败恢复,如网络失败重试、权限被撤、刷新后状态保持。大量输入边界放单测/API层,防止UI套件膨胀慢且脆弱。
  5. 同一次E2E跨系统trace关联,失败后区分UI事件、路由、鉴权、API、异步任务和数据提交。重跑通过不代表原失败无效,记录flaky并消除竞态或环境共享。
  6. CI先跑快层再关键E2E,发布前代表浏览器/设备覆盖,长期维护按journey owner;删除旧功能同时清理过时case,不以用例数量当质量。

手动走一遍

创建后页面显示资源,但刷新消失,E2E能发现只更新了前端本地状态。只等toast成功会漏缺陷,应刷新或新会话读取持久化结果。撤权后换账户直接访问URL验证后端拒绝。

规模与取舍

E2E成本主要是启动/网络/等待,case少而关键;并行度受独立账户、数据库与浏览器资源限制,不能用无限重试掩盖不稳定。

易错点与追问

容易失分的边界

  • toast成功等同落库成功。
  • 所有边界都堆UI层。
  • 共享fixture按顺序运行才通过。

继续深挖

  • 怎样设计可诊断artifact?
  • 第三方mock范围如何划分?
  • 哪些journey必须每次发布跑?
✓已复制微信号!