scense_demo/docs/self-test-cases.md
2026-08-29 21:10:23 +08:00

6.5 KiB
Raw Blame History

W-07 demo 模块功能点自测(正例 + 反例)

依据 feature-granularity-and-testing每个小功能点至少 1 正例 + 1 反例,期望可判定。 执行入口:部署到 /d/scense/scense_app 后,用登录 cookie 请求 http://<host>:<port>/demo/api/*.dspy。 数据库宿主库get_module_dbname('demo')),表 demo_session / demo_session_state / demo_hot_script / demo_presence。

W-07a 开始演示(进入预览态)— POST /demo/api/start.dspy

  • 正例 W-07a-posbody {"world_id":"w001","session_name":"产品演示"} → 期望 status=200data.session_id 非空、data.status="preview"data.camera_mode="orbit";库 demo_session 新增 1 行 status=preview。
  • 反例 W-07a-neg-1缺参body {} → 期望 status=400 且 message 含 "world_id"。
  • 反例 W-07a-neg-2重复同一 world_id 连续两次 start → 第二次期望 status=409 且 message 含 "已有进行中的演示会话"。
  • 反例 W-07a-neg-3世界不存在{"world_id":"no_such_world"} → 期望 status=404world 模块可用时)或 200world 模块未挂载时跳过校验,防御式)。

W-07b 结束演示(状态隔离)— POST /demo/api/stop.dspy

  • 正例 W-07b-pos对进行中会话 {"session_id":"<sid>"} → 期望 status=200data.overlay_cleared=truedemo_session.status=endeddemo_session_state/demo_hot_script/demo_presence 中该 session_id 记录数为 0正式 entity/world 表无变化
  • 反例 W-07b-neg-1缺参{}status=400
  • 反例 W-07b-neg-2不存在{"session_id":"no_such"}status=404
  • 反例 W-07b-neg-3重复结束对已 ended 会话再 stop → status=400 且 message 含 "已结束"。

W-07c 编辑实体实时反映(<1s) — POST /demo/api/entity_edit.dspy

  • 正例 W-07c-pos{"session_id":"<sid>","entity_id":"e1","fields":{"color":"#22C55E","size":2}}status=200;随后调 state.dspyentities[].state.color="#22C55E";前端轮询 500ms → 编辑后 <1s 反映demo_session_state.demo_json 更新、base_json 不变。
  • 反例 W-07c-neg-1缺参缺 entity_id → status=400
  • 反例 W-07c-neg-2fields 非法fields 传数组/字符串 → status=400 message 含 "fields 必须是对象"。
  • 反例 W-07c-neg-3会话不存在{"session_id":"no_such",...}status=404
  • 反例 W-07c-neg-4会话已结束ended 会话 → status=400 message 含 "已结束"。

W-07d 脚本保存热加载 — POST /demo/api/hotload.dspy

  • 正例 W-07d-pos{"session_id":"<sid>","script_id":"s1","script_type":"python","script_content":"print('hi')"}status=200data.status="hot_loaded"demo_hot_script 新增 1 行state.dspy scripts 列表可见。
  • 反例 W-07d-neg-1语法错误content="def f(:"status=400 message 含 "语法错误"。
  • 反例 W-07d-neg-2内容为空content 空 → status=400
  • 反例 W-07d-neg-3类型非法script_type="sql"status=400 message 含 "非法脚本类型"。

W-07e 视角切换 — POST /demo/api/camera.dspy

  • 正例 W-07e-pos{"session_id":"<sid>","camera_mode":"topdown"}status=200data.camera_mode="topdown"state.dspy 中 camera_mode=topdown。
  • 反例 W-07e-neg-1白名单外camera_mode="free"status=400 message 含 "非法视角模式"。
  • 反例 W-07e-neg-2会话不存在status=404
  • 反例 W-07e-neg-3已结束ended 会话 → status=400

W-07f 暂停/继续 — POST /demo/api/pause.dspy

  • 正例 W-07f-pos-暂停:{"session_id":"<sid>","paused":true}status=200data.status="paused"
  • 正例 W-07f-pos-继续:再传 paused:falsestatus=200data.status="preview"
  • 反例 W-07f-neg-1缺参缺 paused → status=400
  • 反例 W-07f-neg-2已结束ended 会话 → status=400

W-07g 全屏 — POST /demo/api/fullscreen.dspy

  • 正例 W-07g-pos{"session_id":"<sid>","enabled":true}status=200data.fullscreen=truedemo_session.extra_json 含 "fullscreen":true
  • 反例 W-07g-neg-1缺参缺 enabled → status=400
  • 反例 W-07g-neg-2会话不存在status=404

W-07h 状态隔离(演示改动不污染正式数据)— 组合验证

  • 正例 W-07h-pos演示中编辑 e1 后,查询正式 entity 表entity_id=e1确认字段未被修改stop 后 demo_session_state 无残留;再次 query entity 表仍为原值。
  • 反例 W-07h-neg残留污染stop 后若 demo_session_state 仍查到该 session_id 记录 → 判 FAIL隔离失效

W-07i 查看实体属性 — POST /demo/api/entity_attrs.dspy

  • 正例 W-07i-pos{"session_id":"<sid>","entity_id":"e1"}status=200 且 data 含 base/demo/merged 三对象merged=base 与 demo 合并。
  • 反例 W-07i-neg-1实体不在会话{"session_id":"<sid>","entity_id":"no_such"}status=404 message 含 "实体不存在于演示会话"。
  • 反例 W-07i-neg-2缺参status=400

W-07j 多人预览 — POST /demo/api/presence.dspy

  • 正例 W-07j-pos-加入:{"session_id":"<sid>","action":"join","user_id":"u1"}status=200data.viewer_count=1demo_presence 新增 1 行。
  • 正例 W-07j-pos-离开:action:"leave","user_id":"u1"status=200data.viewer_count=0
  • 正例 W-07j-pos-多人在线u1/u2 都 join → viewer_count=2
  • 反例 W-07j-neg-1action 非法):action="kick"status=400 message 含 "action 只能为 join/leave"。
  • 反例 W-07j-neg-2会话不存在status=404

状态机合法性补充

  • W-07a 开始后 → previewW-07f 暂停 → paused继续 → previewW-07b 结束 → ended唯一出口ended 后 start/camera/pause/entity_edit/hotload/presence 全部 400。

验收汇总表(执行后填写)

功能点 用例数(正/反) pass fail blocked 证据
W-07a 1/3
W-07b 1/3
W-07c 1/4
W-07d 1/3
W-07e 1/3
W-07f 2/2
W-07g 1/2
W-07h 1/1
W-07i 1/2
W-07j 3/2
合计 13/25=38

说明:本工作空间无 /d/scense/scense_app 部署目录与运行库,无法在此实跑;上述用例在部署环境执行, actual_result 记录原始响应体status/message/datafail 一律落 sd_bugs关联 task_id