
空间应用最容易翻车的地方不是功能没做出来而是做出来之后没人能顺畅用下去。用户戴上设备、或者举起手机进入空间界面三分钟内是兴奋还是头晕决定了这个应用能不能留下来。可用性测试在 2D 时代已经有一整套成熟方法问题是搬到空间里之后哪些还能用、哪些必须加以及怎么把体验好不好变成可比较的数字。2D 那套方法大部分能直接搬别急着发明新流程。任务制定、出声思维Think Aloud、观察记录、事后访谈、SUS 量表这些骨架在空间应用里依然成立。用户的认知负荷、信息查找、操作失误底层机制没变。能直接沿用的部分任务式测试。给用户一个具体目标观察他怎么完成而不是问他你觉得好用吗。出声思维。让用户边做边说卡住的地方往往比最终结果更有价值。完成率与完成时间。这两个客观指标在空间里同样有效。访谈与问卷。SUSSystem Usability Scale这类成熟量表不用改题直接问。需要调整的是环境和变量。2D 测试坐在桌前点鼠标空间测试涉及设备佩戴、视野限制、身体姿态测试的组织方式差别很大。空间应用新增的四个维度舒适度用户能连续用多久而不感到疲劳是空间应用的生命线。舒适度受视觉疲劳、颈部负担、设备压感共同影响。测试时不能只问累不累要拆开眼睛干不干、脖子酸不酸、画面晃不晃。晕动晕动症motion sickness的成因是感觉冲突——眼睛看到画面在动前庭系统没感受到对应的身体运动。空间应用里相机加速过快、视野旋转与头部动作不同步、低帧率都会触发。评估晕动的标准工具是 SSQSimulator Sickness Questionnaire它把症状分成恶心、眼部不适、方向障碍三类用问卷打分。可达性3D 里的目标拾取比 2D 难得多。一个按钮在 2D 里是矩形在 3D 里是空间中一个可能被遮挡、可能超出舒适区的物体。Fitts 定律在 3D 中的延伸告诉我们目标距离越远、越小、越偏拾取时间越长且越容易失败。评估可达性要记录首次命中率和平均拾取时间。深度理解用户在空间界面里能不能正确判断元素的前后关系、层级关系这一点在 2D 里几乎不用测在 3D 里却是高频错误来源。常见测法让用户回答这两个卡片哪个更靠前或者要返回上一步应该点哪个通过回答正确率衡量空间层级设计是否清晰。一套可操作的指标与清单维度指标采集方式参考目标效率任务完成率观察记录核心任务 ≥ 90%效率任务完成时间埋点计时与 2D 版持平或更低效率操作错误次数埋点计数单任务 ≤ 1 次舒适度连续使用时长会话时长统计无强制休息下 ≥ 15 分钟舒适度视觉疲劳评分自评量表1-7≤ 3晕动SSQ 总分标准问卷无中度以上症状晕动帧率稳定性运行时监控主流机型 ≥ 55 FPS可达性首次命中率埋点统计≥ 85%可达性平均拾取时间埋点计时与 2D 点击接近深度理解层级判断正确率插入验证题≥ 80%整体SUS 总分标准量表≥ 70良好整体SEQ 难易度单题访谈平均 ≥ 5.5/7这套指标的好处是客观指标完成率、帧率、命中率用埋点采主观指标SUS、SSQ、SEQ用问卷采两类互相印证。如果客观数据很好但 SUS 很低说明功能能用但体验别扭问题在设计不在功能。把测试数据采下来评估不能靠记忆和印象要在应用里埋点。下面是一个轻量的测试记录器负责记录任务起止、耗时、错误数并把主观评分一起写入本地文件供测试后回收。import{fileIoasfs}fromkit.CoreFileKit;// 单次任务记录interfaceTaskRecord{taskId:string;startTs:number;endTs:number;durationMs:number;errorCount:number;success:boolean;seqScore:number;// 单项难易度 1-7}classUsabilityRecorder{privatestaticinstance:UsabilityRecordernewUsabilityRecorder();privatecurrentStart:number0;privateerrorCount:number0;privatetaskId:string;staticgetInstance():UsabilityRecorder{returnUsabilityRecorder.instance;}// 任务开始测试脚本或业务代码在进入任务时调用startTask(taskId:string):void{this.taskIdtaskId;this.currentStartDate.now();this.errorCount0;}// 记录一次误操作用于衡量学习成本recordError():void{this.errorCount1;}// 任务结束计算耗时并落盘finishTask(success:boolean,seqScore:number):void{constrecord:TaskRecord{taskId:this.taskId,startTs:this.currentStart,endTs:Date.now(),// 耗时统计要排除加载等待这里只覆盖交互阶段durationMs:Date.now()-this.currentStart,errorCount:this.errorCount,success:success,seqScore:seqScore};this.appendRecord(record);}// 追加写入沙箱文件测试结束统一导出分析privateappendRecord(record:TaskRecord):void{constpathgetContext(this).filesDir/usability_log.jsonl;try{constfilefs.openSync(path,fs.OpenMode.CREATE|fs.OpenMode.APPEND|fs.OpenMode.READ_WRITE);fs.writeSync(file.fd,JSON.stringify(record)\n);fs.closeSync(file);}catch(err){console.error(usability log write failed: JSON.stringify(err));}}}配合一个帧率采样把晕动风险的客观数据也拿上。帧率掉到 60 以下时画面迟滞会加重感觉冲突晕动概率明显上升。import{displaySync}fromkit.ArkGraphics2D;// 用 displaySync 采样帧率低于阈值就计数作为晕动风险的客观依据functionstartFpsMonitor(onSample:(fps:number,lowFps:boolean)void):displaySync.DisplaySync{constsyncdisplaySync.create();sync.setExpectedFrameRateRange({expected:60,min:30,max:120});letframes0;letwindowStartDate.now();sync.on(frame,(){frames1;constelapsedDate.now()-windowStart;if(elapsed1000){return;}constfpsMath.round(frames*1000/elapsed);// 60 是主流刷新率掉到 55 以下时画面迟滞会加重感觉冲突onSample(fps,fps55);frames0;windowStartDate.now();});sync.start();returnsync;}测试流程怎么组织空间应用测试比 2D 多出准备环节和恢复环节流程大致是这样招募被试 含空间感差异设备与安全说明基线问卷 视力/前庭敏感度熟悉环节 教基础操作执行任务 出声思维即时 SEQ 评分休息恢复 缓解疲劳SSQ 与 SUS 问卷事后访谈与复盘数据汇总 对照指标表两个容易被压缩掉但很关键的环节熟悉环节和休息恢复。空间操作有学习曲线不做预热直接测完成时间会被不熟悉污染。休息恢复则关系到后半段任务的数据有效性用户疲劳之后的操作表现不能和前半段混为一谈。案例3D 商品浏览的两次测试一个家具应用准备上线 3D 看货功能团队做了两轮测试。第一轮招了 8 人用中端机测试。任务是把沙发转到背面看靠垫细节、再换个配色。结果完成率 75%SEQ 平均 4.2SSQ 里有 3 人报告了轻度眼部不适。埋点数据显示转到背面这个任务平均耗时 11 秒错误主要发生在继续旋转和切换配色两个按钮上——用户分不清当前手势是在转模型还是转整页。分析后做了三处调整把旋转手势限定在模型区域区域外恢复页面滚动把配色切换从隐藏菜单提到常驻操作条把默认相机距离拉远一点减少近距离注视引发的眼疲劳。第二轮同样是 8 人。完成率升到 96%SEQ 平均 5.8SSQ 无人报告中度症状SUS 从 62 升到 78。全过程中端机的帧率稳定在 58 FPS 以上。这个案例说明一件事可用性测试的价值不在证明做得好而在精确定位那几处让用户犹豫的地方。手势归属和按钮可见性光靠设计评审很难发现只有真人操作才能暴露。总结一下下客观指标和主观问卷都要单看一边容易误判。测前一定要有熟悉环节别把学习成本算进任务时间。帧率数据要单独采它同时影响效率和晕动是最划算的一个埋点。被试要包含对空间感不敏感的人只看玩过 VR 的人测不出真实门槛。插入少量验证题测深度理解比只看完成率更能发现层级设计缺陷。任务设计要贴真实场景随便看看这类模糊任务收集到的数据没有分析价值。只在旗舰机测试忽略了应用实际覆盖的中低端设备晕动和高延迟都被藏起来。用户强忍不适不好意思说要主动、定时询问不要等对方开口。拿 2D 的 SUS 基线直接对比空间应用两者难度不同对比要谨慎。任务时间没有排除加载等待把网络耗时算进了交互效率。问卷当场填得太晚用户已经忘了具体感受主观数据要即时采。测试结束没有导出日志埋点白做分析只能靠回忆。