“把指标做上去”不是一个明确的要求。先要问:我们究竟在测量什么?

请求是否成功,描述的是系统一次响应;用户是否受影响,描述的是人的经历;任务是否完成,描述的是结果。把它们混在一起,常会得到一个看似精确、实际无法解释的数字。下面这份词典收录常见指标的定义方式,不预设任何具体阈值;它的重点是帮助人在使用数字前,把对象和边界说清楚。

这不是一份“看板应该放什么”的清单,而是一套可执行的工作流程。它适合四类常见场景:准备一个新功能、发现线上波动、推进体验优化,以及复盘一次问题。读者不必一次性建设所有指标;从一条关键用户任务开始,按下面六步做完一个小闭环,通常比铺开几十张图更有价值。

Define task

Draw states

Collect events

Build metric set

Investigate changes

Verify action

文中的“保存草稿”只是示例,可以替换为登录、搜索、支付、上传、预约或任何其他关键任务。数字、阈值和结论都应结合自己的场景重新建立,而不是直接套用。

先给一个完整示例:从“保存慢”到可执行问题

有人反馈:“保存草稿很慢,有时还不知道是否成功。”这不是可直接执行的问题。用本指南拆解后,会得到下面这个工作对象:

步骤产物示例
定义任务起点、终点、用户价值用户从编辑状态发起保存,到明确看见成功或失败结果。
画出状态可观测的状态序列开始编辑 → 点击保存 → 提交中 → 成功 / 失败 / 超时 / 取消。
定义指标组结果、体验、原因、数据质量完成率、P95 等待、超时率、重试率、状态上报完整率。
建立基线正常范围和可比条件在同一版本、同一入口下,持续观察按平台和网络切分的趋势。
调查变化证据链完成率下降是否集中在某网络;等待是否在提交后而非编辑中增加。
验证行动回到原任务修复后在原网络条件下实际保存,确认状态清晰、重试安全、内容可恢复。

后面的章节逐步展开这六步。若团队只能先采用一项做法,建议从“每个核心任务都有状态序列和指标定义卡”开始。

工作步骤一:把模糊目标翻译成一个用户任务

不要从“想监控某个页面”“想提升性能”开始。先写一句可观察的任务描述:谁,在什么条件下,为了得到什么结果,完成了哪些关键动作。

模糊说法可工作的任务定义
搜索不好用用户输入查询后,能在结果页找到并打开一个与目标相关的内容。
登录不稳定已注册用户在有效凭证和正常网络下,能完成身份验证并进入目标页面。
页面太慢用户从打开页面到能看见主要内容、进行第一次关键操作,经历的等待是否可接受。
发布经常失败用户从开始编辑到看到明确发布结果,能否在合理时间内完成任务。

方法:任务定义卡

每项核心任务先写一张不超过一页的卡。它不需要审批流程,但应在开始埋点或分析前被相关协作者看过。

字段内容
任务名称保存草稿
目标用户正在编辑内容、希望稍后继续的人
起点编辑页已完成必要输入,用户点击“保存”
终点用户获得明确的成功或失败结果
成功草稿可在后续打开,内容与用户提交的一致
失败明确失败、超时,或用户在未确认结果前离开
不纳入测试流量、自动保存(与手动保存另行统计)
关键风险弱网下重复点击、离开页面、客户端与服务端状态不一致

为什么这样做: 它把“保存接口 200”与“用户真的拥有可恢复的草稿”区分开。接口是实现细节;任务结果才是要保护的对象。

工作步骤二:先画状态,再决定埋什么

指标只能从事件中计算出来。埋点之前,先画出任务允许经过的状态和不允许发生的状态。状态不必复杂,但应覆盖成功、失败、取消和超时。

show "Saved"

no result within agreed window

user exits or cancels

Editing

Request

click Save

Waiting

for

result

Success

Recoverable

show reason, retryable

explicit next step

Unrecoverable

Timeout

Cancelled

方法:状态-事件表

把每个状态转移对应到一个事件。这样既能计算任务完成率,也能看见用户在哪一步离开。

状态转移最小事件必要字段用来计算什么
点击保存draft_save_started任务 ID、会话 ID、时间、入口开始任务数。
发起请求draft_save_submitted任务 ID、尝试次数、网络类型重试率、提交到结果耗时。
显示成功draft_save_succeeded任务 ID、端到端耗时、是否首次成功完成率、首次成功率。
显示失败draft_save_failed任务 ID、标准错误类别、是否可重试错误率、错误分布。
显示超时draft_save_timed_out任务 ID、等待时长、是否仍在后台处理超时率、可见等待。
用户取消draft_save_cancelled任务 ID、取消阶段放弃率、可能的交互摩擦。

这里的任务 ID 应当贯穿一次任务的全部事件;若没有它,就很难区分“十个用户各试一次”和“一个用户连续试十次”。错误类别应使用受控枚举,例如网络不可用、鉴权失败、输入不合法、服务拒绝或未知错误,不要直接上报原始报错文本。

例外处理:最终结果晚到怎么办?

真实系统常有“用户先等到超时,后台后来又成功”的情况。这不是理由,不记录它反而会让完成率失真。可以同时保留两个指标:

  • 用户可见完成率:用户在约定窗口内明确得到成功结果的任务占比;
  • 最终处理成功率:系统最终处理成功的任务占比。

两者出现差距,恰恰说明系统结果与用户体验之间有断层:可能需要缩短等待、改善状态回传,或让用户稍后能安全恢复任务。

工作步骤三:为同一个任务建立一组指标

一个任务不该只配一个指标。最小可用指标组通常由四类问题组成:结果有没有发生、体验代价是什么、可能在哪一环出错、数据本身是否可信。

类别对保存草稿任务的提问例子
结果用户最后有没有得到可恢复的草稿?用户可见完成率、最终处理成功率。
体验过程是否需要猜、等或反复操作?P95 可见等待、重试率、超时率。
诊断失败更可能出现在哪个环节?网络错误率、非网络错误率、按版本的错误分布。
数据质量我们记录到了完整状态吗?任务 ID 覆盖率、开始与结束事件匹配率、上报延迟。

方法:指标定义卡

为每个核心指标保存一张定义卡。它应当短到可以在评审中读完,完整到可以由另一位同事复算。

字段内容
名称保存草稿的用户可见完成率
目的判断用户是否在合理时间内得到明确的保存成功结果
对象一次手动保存任务(由任务 ID 关联)
分子在约定窗口内产生 draft_save_succeeded 的任务数
分母产生 draft_save_started 且符合统计条件的任务数
排除测试流量、重复事件、无法关联任务 ID 的事件(另报覆盖率)
切分平台、应用版本、网络类型、入口
配套指标P95 可见等待、超时率、最终处理成功率、重试率
已知边界不能仅凭此指标判断保存内容是否完全符合用户预期

指标组示例:不要让一个数字独自承担结论

现象不能只看应一起看可能得到的判断
完成率下降最终处理成功率用户可见完成率、超时率、上报完整率系统可能最终成功,但用户先被超时提示打断。
报错增加错误事件数错误率、受影响用户占比、每用户问题频次可能只是流量增加,也可能是少数用户反复失败。
页面变快平均加载耗时P95、LCP/INP、任务完成率、布局偏移典型样本变快,长尾或交互不一定改善。
反馈变多反馈总数每百万活跃用户反馈数、确认率、同类问题占比入口变化或用户增长与质量问题需要区分。

先选对测量单位

测量单位适合回答的问题常见误用
请求某个接口或资源是否及时、正确地响应?用请求量代替用户影响。
会话一段连续使用过程中是否顺畅?把后台活动和真实使用混为一谈。
用户有多少人遇到过问题?忽略同一用户被反复影响的程度。
任务用户是否完成了目标?只看页面或接口成功,不看结果是否达成。
设备 / 版本问题是否集中在特定运行环境?把相关性直接当作根因。

同一件事可以有多个合法的测量单位。例如文件上传:请求成功率反映服务响应,受影响用户占比反映覆盖范围,上传完成率反映任务结果,上传耗时的高分位数反映等待最久的一部分体验。不要强迫一个指标回答所有问题。

常见指标及其定义

可用性与完成

指标通用公式说明
成功率成功事件数 / 全部有效事件数先定义“成功”和“有效”;取消、重复提交和无效请求通常应单列。
错误率失败事件数 / 全部有效事件数与成功率互补,但两者的事件集合必须一致。
可用性可正常提供预期能力的时间或请求比例要说明是按时间、按请求还是按任务计算。
任务完成率完成目标的任务数 / 开始任务数需要明确任务起点、终点和合理的超时窗口。
放弃率开始后未完成的任务数 / 开始任务数不等于失败率;用户主动改变主意也可能造成放弃。

成功率很高,并不必然代表任务顺畅。若用户必须重试多次才能成功,最终成功率可能掩盖了真实摩擦。对关键路径,最好同时观察首次成功率、最终完成率和每次任务的尝试次数。

错误与影响

指标通用公式说明
错误事件数统计窗口内的失败事件总和用于评估处理量和突发程度,受流量变化影响大。
错误率错误事件数 / 有效事件数适合比较不同流量规模下的变化。
受影响用户占比出现过至少一次问题的去重用户数 / 活跃用户数描述影响面,而非问题重复程度。
每用户问题频次问题事件数 / 受影响用户数,或 / 活跃用户数两种分母含义不同,必须在名称中写清。
崩溃率发生崩溃的会话或用户数 / 会话或用户总数应明确按会话还是按用户去重,且区分前台与后台。

“每用户每分钟可感知错误次数”是有价值的体验指标:它把重复失败和使用时长都纳入考虑。但“可感知”应有可审查的定义,例如是否展示错误提示、是否阻断任务、是否发生在前台;不能把所有日志异常都直接当作用户问题。

延迟与等待

指标通用公式或取值说明
平均耗时全部样本耗时的算术平均易受极端值影响,适合作为补充而不是唯一判断。
中位数(P50)一半样本快于该值,一半慢于该值描述典型体验,但看不到长尾。
高分位耗时(如 P90 / P95 / P99)大部分样本不超过的耗时反映较慢用户的等待;需标注所用分位点。
超时率超过约定等待阈值的事件数 / 有效事件数阈值应来自任务需要或交互预期,而不是为了让图表好看。
前台等待时长用户可见等待状态的持续时间比纯网络或服务耗时更接近体验,但要定义起止点。

分位数不应被神秘化。它只是在排序后的样本中取位置:P95 的意思是 95% 的样本不超过这个值。使用它时必须有足够样本,并避免把不同类型任务混在一个分布里。

前端与交互性能

公开的 Web 性能指标可用来描述加载和交互体验。它们应与浏览器版本、网络状况、页面类型等维度一起解读。Web Vitals 的定义会随标准和浏览器实现演进,使用时应以 web.dev 的指标说明 为准。

指标关注的问题解读边界
LCP(最大内容绘制)用户何时看到主要内容适合加载体验,不代表页面已完全可操作。
INP(下次绘制交互延迟)用户操作到视觉反馈是否及时需观察真实交互样本;不等于所有业务任务都完成。
CLS(累积布局偏移)页面元素是否意外跳动反映视觉稳定性,不描述加载速度。
FCP(首次内容绘制)用户何时第一次看到内容内容可能还不足以完成任务。
长任务 / 卡顿占比主线程持续忙碌是否影响交互需定义卡顿阈值、前台范围和采样方式。

这些指标适合发现体验风险,不适合单独证明某个改动一定带来了业务结果。若要判断改动效果,仍应回到对应的用户任务、覆盖范围和实验设计。

用户反馈与质量信号

指标通用公式说明
反馈率有效反馈数 / 活跃用户数或任务数明确分母,避免流量增长被误读为质量变差。
问题确认率经核实的问题数 / 有效反馈数反映反馈分类和处理质量,不代表全部真实问题。
重复问题占比某类问题反馈数 / 全部问题反馈数有助于发现集中痛点,但受分类规则影响。
修复后复发率修复后同类问题再次出现的比例需明确“同类”的判定和观察窗口。
每百万活跃用户的问题反馈数Valid Problem Reports/Active Users×1,000,000\text{Valid Problem Reports} / \text{Active Users} \times 1{,}000{,}000适合在不同规模的产品或周期之间比较,前提是反馈入口与分类规则一致。

用户反馈是发现问题的入口,不是对真实分布的无偏抽样。愿意反馈的人、反馈入口的位置和分类方式都会改变数据;因此它应与行为数据、日志和访谈互相验证。

可感知质量与竞品对照

有些指标的单位不是“服务是否返回”,而是用户在使用中实际经历了什么。它们可以单独形成一组体验质量信号:

指标建议定义适合发现什么
每用户每分钟可感知网络错误前台使用期间,向用户呈现且可归类为网络失败的事件数 / 去重用户使用分钟数弱网、断连、资源加载失败是否真实打断使用。
每用户每分钟可感知非网络错误前台使用期间,向用户呈现且非网络原因的失败事件数 / 去重用户使用分钟数客户端、服务逻辑或状态一致性问题的体验影响。
每用户每分钟可感知等待响应时间用户可见加载、提交或等待状态的总时长 / 去重用户使用分钟数用户在一次会话中被迫等待的总负担。
每用户每分钟卡顿时长或次数前台交互中满足既定卡顿条件的时长或次数 / 去重用户使用分钟数滚动、输入、动画或页面切换是否不连贯。
关键物理性能对照在可复现的设备、版本、网络与任务下,比较加载、内存、耗电、流量或响应等公开可测项发现体验或资源效率上的相对差异;不用于替代用户价值判断。

这类“每用户每分钟”指标的关键在于分母。它不应把后台驻留、异常超长会话或无法确认的时长混入使用分钟数;否则分母会稀释问题。若用它做外部对照,也应只比较公开可复现条件下的结果,写清设备型号、系统版本、网络、任务脚本和测量工具。不同产品的任务、内容规模和登录状态不同,不能只凭一个排名断言谁“更好”。

工作步骤四:确认变化是真的,再开始解释原因

图表出现波动时,最容易犯的错误是先找一个看起来合理的原因。正确顺序应是先验证数据、再判断范围、最后提出并验证假设。

方法:五问排查法

顺序要问的问题保存草稿的例子证据与动作
1数据本身完整吗?某个版本的成功事件是否漏报?对照开始、成功、失败事件的覆盖与上报延迟;数据缺失先修数据。
2变化从何时开始?是否从某次发布后的第一个完整统计窗口开始?在趋势图标记版本、入口和采集变更;不要把两个改动混为一谈。
3影响集中在哪里?是否只发生在某平台或某类网络?先按最可能相关的维度切分,保留每组样本量。
4用户代价是什么?只是后台成功变慢,还是用户看到超时并离开?联看可见完成率、等待、超时、重试和放弃。
5哪个假设能被复现或证伪?特定网络切换时重复点击会产生两个草稿吗?用可复现环境、日志或小范围验证来确认,不靠直觉定案。

例子:同样是“完成率下降”,行动可能完全不同

观察到的组合更合理的解释下一步
任务开始数正常,成功事件突然接近零,但服务日志正常成功事件采集或上报可能失效先修复数据链路,标注该窗口不可比。
最终处理成功率稳定,用户可见完成率下降,超时率上升后台仍在处理,但反馈回传或等待体验变差检查客户端超时、轮询、状态刷新和提示策略。
某版本的网络错误率、重试率和放弃率同时上升新版本可能在弱网下引入退化回滚、灰度修复或针对该版本做降级;在弱网条件复测。
错误事件总数上升,但错误率和每百万活跃用户反馈数稳定使用规模或任务量增长不宜按“质量事故”处理,继续观察容量与绝对处理成本。

这一步的产物不应是“根因已经确定”,而是一条可以被反驳的陈述,例如:“从版本 X 起,某平台在弱网条件下的用户可见超时率上升;最终处理成功率未变,怀疑客户端等待状态未正确刷新,待用抓取日志和复现验证。”

工作步骤五:把分析结论变成有验证条件的行动

数据分析的结束不是“找到了问题”,而是明确下一步行动、预期影响和验证方法。否则团队很容易把“观察”写进结论,却没有把它变成可追踪的改动。

方法:行动假设卡

字段内容
观察弱网下用户可见完成率下降,P95 等待时间和重复点击率上升。
假设提交结果已返回,但客户端在网络恢复后没有及时刷新成功状态。
行动修正状态刷新;在等待中提供明确状态;使重复点击幂等。
预期用户可见完成率上升,超时率和重试率下降;最终处理成功率不应变差。
验证在相同版本范围、相同网络切片下,对比改动前后完整统计窗口;回到原任务手动验证。
风险护栏错误率、内容一致性问题、崩溃率不得恶化。

这里的关键是把“预期”写成一组指标,而不是只写“体验更好”。如果改动提高了完成率,却增加了错误或重复内容,护栏会及时暴露这种代价。

当没有条件做严格实验时

并非所有改动都能做 A/B 测试。仍可以采用较审慎的验证方式:保持统计定义不变;选取改动前后的完整可比窗口;标记同时发生的发布或流量变化;按受影响范围分群;并在结论中明确“观察到的相关变化”而非宣称因果。对于风险较高的改动,应优先采用小范围发布和可回退方案。

工作步骤六:把一次分析沉淀成可复用的工作节奏

指标体系不是一次性项目。一个轻量、可持续的节奏通常包括以下四件事:

时机要做什么最小产物
新任务或改动前写任务定义卡、状态图和指标定义卡关键任务与事件清单。
发布前用真实或模拟场景走一遍状态,检查成功、失败、超时和取消是否都被记录验收记录与已知盲区。
日常观察看结果与护栏的趋势,异常时按五问排查一页异常记录,而不是只截一张图。
修复或迭代后回到原任务验证,观察复发与副作用行动假设卡的结论与后续观察期。

一页异常记录模板

字段内容
发现时间与指标何时、哪一项指标、相对哪个基线出现变化?
范围影响哪些平台、版本、网络或任务?分子、分母、样本量是多少?
用户影响用户会看到什么,能否继续完成任务?
数据可信度覆盖率、延迟、定义和采集链路是否正常?
当前证据哪些指标或日志支持,哪些事实尚未确认?
行动先缓解、继续调查、修复或观察?负责人和验证时间是什么?
验证结果行动后同口径数据如何变化,护栏是否稳定,是否需要继续跟踪?

它的价值是让下一位参与者不用从一张孤立的截图重新开始,也让复盘能够区分“当时已知的事实”和“后来确认的解释”。

每个指标都要写清分子、分母与排除项

指标争论中最容易漏掉的不是公式,而是排除项。建议为每个核心指标保留一个简短定义:

字段内容
名称草稿保存任务完成率
对象一次从编辑开始到明确保存结果的用户任务
分子在约定窗口内得到“保存成功”结果的任务数
分母已开始且符合统计条件的保存任务数
排除测试流量、重复上报、用户主动取消的任务(单独统计)
维度平台、版本、网络类型、地区、入口
延迟数据在事件发生后多久可用于分析

这份定义不需要很长,但应足以让另一位读者独立复算,并知道它与相近指标有什么不同。

补充:把指标放进一次任务,而不是放进孤立的图表

以“发布一条内容”为例,可以把一次用户任务拆成状态序列:

Start

editing

Enter/select

content

Submit

Processing

Explicit

success

failure

User

cancelled

Timeout

由此可以得到一组彼此互相校验的指标:

观察角度对应指标它能回答什么
结果任务完成率、首次提交成功率用户最后是否发布成功,是否需要重试。
覆盖受影响用户占比、受影响任务占比问题有多大范围。
体验P50/P95 等待时间、可见等待总时长完成之前需要等多久,慢的是不是集中在长尾。
稳定性网络错误率、非网络错误率、超时率失败更像发生在哪一个环节。
行为重试率、放弃率、从失败到退出的比例用户有没有被迫绕路或放弃。
质量事件上报覆盖率、状态序列完整率上述结论是否建立在完整数据上。

这比只盯住“接口成功率”更接近真实体验。接口返回成功但客户端没有展示结果,任务依然可能失败;某次请求失败但自动重试成功,用户可能根本未受影响。把任务状态与可感知状态分开记录,才能把两种情况区分开。

补充:分群不是为了找到最好看的切片

总体指标是入口,分群是为了找出差异来自哪里。常见维度包括平台、应用版本、网络类型、地区、设备能力、入口和新老用户状态。一次分析不宜把所有维度同时展开,否则很容易从大量切片中挑到偶然波动。

更稳妥的顺序是:先确认总体变化真实存在,再按最有因果可能的维度切分,最后用样本量、时间趋势和复现验证该切片。任何分群结论都应同时写出分子、分母和样本量;“某个小群体错误率很高”在样本极少时,往往只能说明需要继续观察。

维度也有隐私边界。能用粗粒度版本、网络类型或设备能力回答的问题,就不应引入精确位置、个人内容或可识别身份。数据越细不一定越有用,且会带来更高的误用和保护成本。

补充:避免六种常见误读

  1. 把总量当成质量。 流量增加时,错误总量可能上升,而错误率下降。两个事实并不冲突。
  2. 把平均值当成所有人。 平均耗时变快,仍可能有一部分用户等待更久;同时查看分位数和分布。
  3. 把相关性当成因果。 两条曲线同时变化,只能说明值得调查;还需要检查版本、流量结构、实验或其他证据。
  4. 把没有数据当成没有问题。 采集缺失、样本不足、用户绕开路径,都可能让问题从图表上消失。
  5. 把最终成功当成没有摩擦。 自动重试、重复点击和长时间等待可能让最终结果成功,却已消耗用户耐心。
  6. 把外部对照当成绝对排名。 设备、网络、任务脚本、内容规模和账户状态不同,性能对照只能提供假设,不能直接替代独立验证。

附:一个可复用的指标评审模板

每次新增或改动核心指标,可以用下面七个问题快速过一遍:

  1. 它服务于哪个用户任务或决策?
  2. 测量对象是什么:请求、会话、用户还是任务?
  3. 分子、分母、去重规则和排除项分别是什么?
  4. 数据从何而来,覆盖率、延迟和已知缺失是什么?
  5. 需要按哪些维度切分,哪些维度不应采集?
  6. 它的配套护栏和诊断指标是什么?
  7. 数值变化后,哪种行动会随之改变?

如果最后一个问题没有答案,这个指标可能只是在记录,而没有真正进入决策。

结语:数字是观察,不是裁决

好的指标让问题更容易被看见,也让判断可以被复查;它不替代对用户、系统和场景的理解。每次开始讨论前,先花一分钟确认测量对象、事件定义和分母。很多看似棘手的指标争论,会在这一步变成一场更具体、更有结果的协作。