探究灰度测试(A/B Testing)
一段小插曲
前段时间产品改版,产品经理为了改进用户体验,就决定改版用户的注册流程页面,但又怕身份证注册验证接口不稳定(第三方的身份证校验)。
于是产品经理就让我通过随机概率去控制注册流程,让一部分用户使用身份证注册,让一部分用户使用手机号注册。当时我听这种需求确实有点懵,总感觉不好做,产品经理就说了句,先用灰
度测试一下,听完我就学到了这个“灰度测试”术语,网上研究了一下这个术语,顺便把这个需求实现。
概念
什么是灰度测试(发布)
测试同一个产品发布,随机让一部分用户会使用新版,一部分用户仍然使用旧版。比如:A组用户使用新版,B组用户使用旧版。
什么是A/B Testing
测试同一个产品页面,不同的组件设计风格。(颜色,大小,形状)比如:A组用户看到购买按钮是红色的,B组用户看到购买按钮是橙色的。
什么是Split Test
测试同一个产品页面,不同的布局设计风格。(左右布局,上下布局)比如:A组用户会在首页顶部菜单看到注册按钮,B组用户会在首页banner位看到注册按钮。
PS:灰度测试是国内IT行业的说法,国外并没有这么一说。某些业界人员认为灰度测试与A/B Testing是不同的概念,认为灰度测试是从技术上看产品质量问题,A/B Testing与Split Test是从市场上看用户体验问题。A/B Testing与Split Test本质是相似的,在我看来,灰度测试与A/B Testing实施方案是一样的,所以没必要去区分灰度测试、A/B Testing、Split Test。
灰度测试≈A/B Testing(两项测试)≈A/B/N Testing(多项测试)≈Multivariate Testing(多项测试)≈Split Test(分类测试)
目的
为什么要进行灰度测试(A/B Testing)
1.从用户体验角度来讲,可以分析用户数据,改进用户体验。
2.从产品质量角度来讲,可以保证产品顺利迭代,控制产品影响范围。
实施
如何进行AB Testing
第一步:制定A/B Testing的用例。
考虑用户界面技术实现。
考虑预期用户界面体验效果。
第二步:确定A/B Testing的用户。
1.没有用户ID关联的
根据用户的IP区域信息来测试。
根据用户的设备信息来测试。
通过消息推送/提示窗口通知用户测试。
2.有用户ID关联的
根据用户的活跃度来测试。
通过邮件/短信通知用户来测试。
第三步:控制A/B Testing 周期。
周期最好控制在一个月内,周期越长,A/B Testing的结果就容易受到污染。(原因请看后面)
第四步:收集数据并分析。
不要片面分析结果,进行产品技术分析,数据分析,互动分析(比如社交群反馈)。
PS:互动分析由为重要,能直接反馈用户对产品的看法,请不要忽视社交群反馈意见。
问题
A/B Testing结果是否准确?
不准确,A/B Testing结果会存在一定的误差,A/B Testing结果误差产生有以下几个主要原因。
1.随机访问。
随机访问意味着任何用户访问该网站都有相同的概率被选择进入新版(另一个用户界面),从而看到网站的A/B Testing的变化。从技术的角度来讲,无论是前端,还是后端控制概率A/B,往往都是基于cookie去控制这个A/B测试的变化。假设用户更换电脑,更换浏览器,清除cookie,那A/B Testing的结果就不准确。
2.用户样本过少。
用户样本过少意味着产品测试覆盖率低,不容易发现产品问题。从技术的角度来讲,可能抽样的用户测试新功能都没有问题,结果全面推送给所有用户使用新功能就有可能出现一些产品问题(Bug),那A/B Testing的结果就不准确。
3. 网站营销活动。
网站营销活动意味着会提高网站的访问量,无论网站A/B Testing的变化如何,A 组用户界面与B 组用户界面的转化率都有较大的提升。从用户体验的角度来讲,看不出哪一组的用户界面转化率高,那A/B Testing的结果就不准确。
4.人为不可控的活动。
人为不可控的活动因素有很多,比如抽样的用户没时间去使用新功能或者不喜欢使用新功能,又或者同一台电脑或者浏览器给多人使用等不可控因素,那A/B Testing的结果就不准确。
总结
A/B Testing结果可以反馈产品质量问题,但不能准确反馈用户体验问题。(如果需要收集更多数据分析网站转化率,请配合第三方分析工具进行数据分析,比如Google Tag Manager,友盟,百度统计等工具)
探究灰度测试(A/B Testing)的更多相关文章
- 模糊测试(fuzz testing)介绍(一)
模糊测试(fuzz testing)是一类安全性测试的方法.说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅.脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具 ...
- 模糊测试(Fuzz testing)
模糊测试(fuzz testing)是一种安全测试方法,他介于完全的手工测试和完全的自动化测试之间.为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统.查找漏洞, ...
- 冒烟测试(smoke testing)
冒烟测试(smoke testing),就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障.冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常 ...
- 浅谈冒烟测试(Smoke Testing)
鉴于之前跟开发提到提测前需要进行冒烟测试,然后几个开发一脸迷茫的问我:什么叫冒烟测试?所以我准备跟大家从以下几个方面简单的分享一下什么是冒烟测试. 一.软件测试的分类 二.冒烟测试(Smoke Tes ...
- 测试理论--branch testing and boundary testing
1 branch testing 分支测试 测试代码的所有分支 2 boundary testing 测试 程序的限制条件
- 缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo
此文已由作者王婷英授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 缓存,看到这两个字,第一反应,最近怎么又要弄缓存的改造啊,这个测试好复杂,一不不留心就踩一个线上bug.实在 ...
- 腾讯产品快速尝鲜,蓝鲸智云社区版V6.1灰度测试开启
这周小鲸悄悄推送了社区版V6.1(二进制部署版本,包含基础套餐.监控日志套餐),没过一天就有用户来问6.1的使用问题了.小鲸大吃一鲸,原来你还是爱我的. 
与可靠性测试类似,尖峰冲击测试这种方法也是从其他行业借鉴而来.在电力工业,有一种冲击测试,用来验证设备在刚刚接通电源时能否经受住涌流的破坏.所谓涌流,通俗地说,就是电源接通瞬间,电流突然变大的现象.涌 ...
- A/B测试与灰度发布
1.A/B测试与灰度发布的理论 产品是多维度的,设计体验.交互体验.系统质量.运营支持等等, 测试的目的是为了系统最终的交付,一套各方面都足够好的系统,而不是文档上定义的系统,系统是需要不断进化的. ...
随机推荐
- event——事件对象详解
PS:转自https://www.cnblogs.com/songyaqi/p/5204143.html 1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标 ...
- 【简抄】h5 新增的几个背景属性和文本属性
一.背景图像显示: ①background-size:规定背景图像的大小: 值:像素值.百分比.auto.cover.contain ②background-origin :规定背景图像的起始位置: ...
- mysql操作封装
<?php//连接数据库function connect(){ $link = mysql_connect(DB_HOST,DB_USER,DB_PWD)or die("数据库连接失 ...
- 云计算的那些「What」
本文从云计算讲起,介绍了选择云计算的各种理由和一些最基本的概念. 经过十多年发展,云计算早已成为不可阻挡的技术潮流,逐渐深入到各行各业,不同规模的组织中,帮助用户以更低运营成本获得完善高效的 IT 服 ...
- 日常-acm-三位数反转
输入一个三位数,分理出它的百位,十位和个位,反转后输出. 样例输入: 127 样例输出: 721 tips:注意最后一位为0的情况,如360,输出063 #include <iostream&g ...
- codeforce Gym 100685E Epic Fail of a Genie(MaximumProduction 贪心)
题意:给出一堆元素,求一个子集,使子集的乘积最大,如有多个,应该使子集元素个数尽量小. 题解:贪心,如果有大于1的正数,那么是一定要选的,注意负数也可能凑出大于1的正数,那么将绝对值大于1的负数两两配 ...
- 使用notepad++远程编辑Linux文档
上一篇中,我写了如何使用使用ftp服务器实现很方便的通信,这一篇我分享一个使用notepad++的一个NPPFTP插件远程编辑Linux中的文档的小技巧. 首先要确保你的Linux的ftp服务已经打开 ...
- Java字符串池(String Pool)深度解析(转)
出自 http://www.cnblogs.com/fangfuhai/p/5500065.html 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避 ...
- Repeat a string repeat a string-freecodecamp算法题目
Repeat a string repeat a string(重复输出字符串) 要求 重复一个指定的字符串 num次 如果num是一个负数则返回一个空字符串. 思路 将给定的字符串赋给定义的变量te ...
- ubuntu 16.04 连接 wifi
我的电脑是win10+ubuntu16.04双系统.在ubuntu下无法连接wifi,一直用usb连接的手机流量,不太方便.现在来用安装无线驱动,顺便翻个墙. https://blog.csdn.ne ...