一、概述
产品体验测试通过任务完成率、SUS量表、NPS和CES等指标评估产品可用性。本文从技术角度介绍指标计算和统计分析方法。
二、任务完成率分析
import pandas as pd # 测试记录数据 df = pd.read_excel('usability_test.xlsx') # 每个任务的完成率、平均时间、错误率 tasks = [f'task_{i}' for i in range(1, 7)] results = [] for task in tasks: completed = df[f'{task}_completed'] time = df[f'{task}_time'] errors = df[f'{task}_errors'] results.append({ 'task': task, 'completion_rate': completed.mean(), 'avg_time': time.mean(), 'avg_errors': errors.mean(), 'status': '✓' if completed.mean() >= 0.9 else '✗ 需优化' }) task_df = pd.DataFrame(results) print("任务完成率分析:") print(task_df.round(3))三、SUS量表计算
# SUS: System Usability Scale (10题, 5分李克特量表) # 奇数题: (得分-1), 偶数题: (5-得分), 总分×2.5 sus_cols_odd = [f'sus_{i}' for i in range(1, 10, 2)] # 1,3,5,7,9 sus_cols_even = [f'sus_{i}' for i in range(2, 11, 2)] # 2,4,6,8,10 # 计算每题转换分 for col in sus_cols_odd: df[f'{col}_adj'] = df[col] - 1 for col in sus_cols_even: df[f'{col}_adj'] = 5 - df[col] # SUS总分 = 转换分之和 × 2.5 (范围0-100) adj_cols = [f'{c}_adj' for c in sus_cols_odd + sus_cols_even] df['sus_score'] = df[adj_cols].sum(axis=1) * 2.5 print(f"SUS平均分: {df['sus_score'].mean():.1f}") print(f"标准差: {df['sus_score'].std():.1f}") print(f"评级: ", end="") score = df['sus_score'].mean() if score >= 80: print("优秀") elif score >= 70: print("好") elif score >= 68: print("一般(平均线)") elif score >= 60: print("一般偏下") else: print("差")四、NPS计算
# NPS = 推荐者%(9-10) - 贬损者%(0-6) nps_scores = df['nps_rating'] # 0-10分 promoters = (nps_scores >= 9).mean() detractors = (nps_scores <= 6).mean() passives = ((nps_scores >= 7) & (nps_scores <= 8)).mean() nps = (promoters - detractors) * 100 print(f"推荐者: {promoters:.1%}") print(f"中立者: {passives:.1%}") print(f"贬损者: {detractors:.1%}") print(f"NPS: {nps:.0f}")五、CES计算与相关性
# CES: Customer Effort Score (1-7分, 越低越好) ces = df['ces_score'].mean() print(f"CES平均: {ces:.2f} (7分量表)") # CES与NPS的相关性 from scipy.stats import pearsonr r, p = pearsonr(df['ces_score'], df['nps_rating']) print(f"CES与NPS相关系数: r={r:.3f}, p={p:.4f}") print("CES越高(费力)→ NPS越低(不推荐)" if r < 0 else "CES与NPS正相关,异常")六、可用性问题分析
# 问题严重度统计 issues = pd.read_excel('usability_issues.xlsx') severity_counts = issues['severity'].value_counts() print("可用性问题统计:") print(severity_counts) # 致命+严重问题按任务分布 critical = issues[issues['severity'].isin(['致命', '严重'])] print(f"\n致命+严重问题: {len(critical)}个") print(critical.groupby('task')['severity'].count())七、工具推荐
工具 | 用途 | 特点 |
91question | 用户招募+满意度问卷 | 筛选问卷、SUS量表模板、NPS题 |
Python (scipy) | 统计分析 | SUS计算、相关性检验 |
Hotjar | 行为记录 | 热力图、会话回放 |
Maze | 远程可用性测试 | 任务完成率自动统计 |
八、总结
体验测试的技术关键点:
1. 测试用户5-8人,任务5-8个
2. 任务完成率≥90%,SUS≥68分
3. SUS计算:奇数题(得分-1)+偶数题(5-得分),总和×2.5
4. NPS=推荐者%-贬损者%,范围[-100, 100]
5. CES是NPS的领先指标,两者应负相关