探究灰度测试(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测试与灰度发布的理论 产品是多维度的,设计体验.交互体验.系统质量.运营支持等等, 测试的目的是为了系统最终的交付,一套各方面都足够好的系统,而不是文档上定义的系统,系统是需要不断进化的. ...
随机推荐
- ABAP常用事务码
开发----------------------------------------------- SE51 屏幕制作 SE91 MESSAGE OBJECT SE80 对象浏览器(可以建开发类 ...
- MVC与Holla聊天工具
MVC 是一种设计模式, 它将应用划分为 3 个部分 : 数据( 模型). 展现层( 视图) 和用 户交互层( 控制器). 换句话说, 一个事件的发生是这样的过程 : 1. 用户和应用产生交互. 2. ...
- c# winform 关于DataGridView的一些操作
转自:http://heisetoufa.iteye.com/blog/405317 设置字段名 设置字段值 设定单元格表示 Error图标 设定当前单元格 取得当前单元格内容 取得当前单元格的列 I ...
- 【Python图像特征的音乐序列生成】如何生成旋律(大纲),以及整个项目的全部流程
今天连看三篇论文,不是很细致地看,也没有具体去实现,只是大概明白了一些新思路.这三篇论文,一篇概述了Decoder-Encoder模型,一篇延伸这个模型,首次提出了Attention机制,最后一篇详细 ...
- js各运算符的执行顺序
本文原链接:https://www.sojson.com/operation/javascript.html https://www.jianshu.com/p/d569c6ca1060 JavaSc ...
- hadoop相关资料集锦
1 Hadoop集群系列集锦http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html 2 Hadoop和MapReduce详解ht ...
- python 列表 字典转json
一.Dictionary 转为JSON 将dict转为JSON,这里利用包json import jsonaItem = {}aItem["id"] = "2203&qu ...
- C10 C语言数据结构
目录 枚举 结构体 共用体 枚举 enum enum枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读. 枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,……}; 枚举 ...
- javaweb基础(8)_HttpServletResponse生成验证码
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- linux 安装并且设置环境lua环境变量
在lua官网下载lua安装包并安装: http://www.lua.org/download.html 解压编译: wget http://www.lua.org/ftp/lua-5.3.2.tar. ...