一段小插曲

前段时间产品改版,产品经理为了改进用户体验,就决定改版用户的注册流程页面,但又怕身份证注册验证接口不稳定(第三方的身份证校验)。

于是产品经理就让我通过随机概率去控制注册流程,让一部分用户使用身份证注册,让一部分用户使用手机号注册。当时我听这种需求确实有点懵,总感觉不好做,产品经理就说了句,先用灰

度测试一下,听完我就学到了这个“灰度测试”术语,网上研究了一下这个术语,顺便把这个需求实现。

概念

什么是灰度测试(发布)

测试同一个产品发布,随机让一部分用户会使用新版,一部分用户仍然使用旧版。比如: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)的更多相关文章

  1. 模糊测试(fuzz testing)介绍(一)

    模糊测试(fuzz testing)是一类安全性测试的方法.说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅.脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具 ...

  2. 模糊测试(Fuzz testing)

    模糊测试(fuzz testing)是一种安全测试方法,他介于完全的手工测试和完全的自动化测试之间.为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统.查找漏洞, ...

  3. 冒烟测试(smoke testing)

    冒烟测试(smoke testing),就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障.冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常 ...

  4. 浅谈冒烟测试(Smoke Testing)

    鉴于之前跟开发提到提测前需要进行冒烟测试,然后几个开发一脸迷茫的问我:什么叫冒烟测试?所以我准备跟大家从以下几个方面简单的分享一下什么是冒烟测试. 一.软件测试的分类 二.冒烟测试(Smoke Tes ...

  5. 测试理论--branch testing and boundary testing

    1 branch testing 分支测试 测试代码的所有分支 2 boundary testing 测试 程序的限制条件

  6. 缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo

    此文已由作者王婷英授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 缓存,看到这两个字,第一反应,最近怎么又要弄缓存的改造啊,这个测试好复杂,一不不留心就踩一个线上bug.实在 ...

  7. 腾讯产品快速尝鲜,蓝鲸智云社区版V6.1灰度测试开启

    这周小鲸悄悄推送了社区版V6.1(二进制部署版本,包含基础套餐.监控日志套餐),没过一天就有用户来问6.1的使用问题了.小鲸大吃一鲸,原来你还是爱我的. ![请添加图片描述](https://img- ...

  8. 尖峰冲击测试(spike Testing)

    与可靠性测试类似,尖峰冲击测试这种方法也是从其他行业借鉴而来.在电力工业,有一种冲击测试,用来验证设备在刚刚接通电源时能否经受住涌流的破坏.所谓涌流,通俗地说,就是电源接通瞬间,电流突然变大的现象.涌 ...

  9. A/B测试与灰度发布

    1.A/B测试与灰度发布的理论 产品是多维度的,设计体验.交互体验.系统质量.运营支持等等, 测试的目的是为了系统最终的交付,一套各方面都足够好的系统,而不是文档上定义的系统,系统是需要不断进化的. ...

随机推荐

  1. SpringBoot热部署的两种方式

    SpringBoot热部署方式一共有两种,分别使用两种不同的依赖 SpringBoot 1.3后才拥有SpringBoot devtools热部署 ①:spring-boot-devtools   ② ...

  2. 在jquery事件中修改Angular的model

    HTML代码如下 <!DOCTYPE html> <html ng-app="qm"> <body> <input type=" ...

  3. HDU 4055 Number String(DP计数)

    题意: 给你一个含n个字符的字符串,字符为'D'时表示小于号,字符为“I”时表示大于号,字符为“?”时表示大小于都可以.比如排列 {3, 1, 2, 7, 4, 6, 5} 表示为字符串 DIIDID ...

  4. MovieReview—Despicable Me 3(神偷奶爸3)

    Minions&Unicorn         The film focuses on the story of Grew and the bastard Bled. A variety of ...

  5. 多线程程序设计-Thread的一些方法

    run():是程序中会和会和其他线程“同时”执行的部分.   wait():使得当前线程进入等待状态,等待的线程不会主动进入到线程队列中排队等待cpu资源,必须由其他线程调用notify()方法通知它 ...

  6. HTTP、HTTP2.0、HTTPS、SPDY

    本文原链接:https://cloud.tencent.com/developer/article/1082516 HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事 1.web始祖HT ...

  7. Set、Map及数组去重

    https://cloud.tencent.com/developer/article/1437254 https://blog.csdn.net/weixin_34247299/article/de ...

  8. CentOS为用户增加root权限

    1.修改 /etc/sudoers vi /etc/sudoers 在下边增加一行内容 root    ALL=(ALL)     ALLusername   ALL=(ALL)     ALL 2. ...

  9. 关于SQL语言的初步认识

    关于SQL语言的初步认识 1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义. 2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项. 3.一个表或者是一 ...

  10. TreeMap 底层是红黑树 排序是根据key值进行的 添加元素时异常 Comparable异常 Comparator比较自定义对象放在键的位置

    package com.swift; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; ...