探究灰度测试(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的使用问题了.小鲸大吃一鲸,原来你还是爱我的. ![请添加图片描述](https://img- ...
- 尖峰冲击测试(spike Testing)
与可靠性测试类似,尖峰冲击测试这种方法也是从其他行业借鉴而来.在电力工业,有一种冲击测试,用来验证设备在刚刚接通电源时能否经受住涌流的破坏.所谓涌流,通俗地说,就是电源接通瞬间,电流突然变大的现象.涌 ...
- A/B测试与灰度发布
1.A/B测试与灰度发布的理论 产品是多维度的,设计体验.交互体验.系统质量.运营支持等等, 测试的目的是为了系统最终的交付,一套各方面都足够好的系统,而不是文档上定义的系统,系统是需要不断进化的. ...
随机推荐
- http://circles.arenaofthemes.com/
http://pan.baidu.com/share/link?shareid=492277&uk=637823677 http://circles.arenaofthemes.com/ ht ...
- 【Unity3D】资源对象、预设、查找对象、组合模式等知识点
1.解释对象与资源区别于联系,根据官方案例,分别总结资源和对象组织的规则/规律. 下载并查看了Adam和Survival Shooter tutorial两个官方资源案例,这些案例作为资源,可以 ...
- xcode在代码中查找中文
总是忘记xcode中查找中文,这次记下来,以后就不会忘记了,哈哈 请看下图: 切换到查找,点击find后面的text,选择Regular Expression,然后输入 1. 查找非ascii的字符 ...
- java控制远程ssh-JSCH(二)
github: https://github.com/wengyingjian/ssh-java-demo.git 这次找到了一套新的api,叫jsch.网上查了一下,顺便把官网的几个demo给一通拿 ...
- Outlook 2016 自动发送/接收无法正常工作
如果您的自动/发送接收由于某种原因停止工作,可能会非常令人沮丧,因为您必须记住手动执行发送/接收(F9).如果您遇到Outlook无法自动发送或接收电子邮件的问题,可以尝试以下几项操作. #1 发送/ ...
- python+selenium之断言Assertion
一.断言方法 断言是对自动化测试异常情况的判断. # -*- coding: utf-8 -*- from selenium import webdriver import unittest impo ...
- UVA 10382 Watering Grass (区间覆盖,贪心)
问题可以转化为草坪的边界被完全覆盖.这样一个圆形就换成一条线段. 贪心,从中选尽量少的线段把区间覆盖,按照把线段按左端点排序,记录一个当前已经覆盖区间的位置cur, 从左端点小于等于cur选一个右端点 ...
- UVA 1616 Caravan Robbers 商队抢劫者(二分)
x越大越难满足条件,二分,每次贪心的选区间判断是否合法.此题精度要求很高需要用long double,结果要输出分数,那么就枚举一下分母,然后求出分子,在判断一下和原来的数的误差. #include& ...
- CoreData介绍
http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...
- shell脚本,awk里面的BEGIN讲解。
解释: BEGIN{}这个特殊的pattern最常用的就是 变量赋值. BEGIN这个pattern就是文件没开始读的时候 执行 awk 'BEGIN{FS=":";OFS=&qu ...