Experiment Guide

原文:https://docs.gitlab.com/ee/development/experiment_guide/

Experiment Guide

任何 GitLab 小组都可以进行实验,大多数情况下是来自成长子部门的小组 . 实验与发布无关,因为它们主要针对 GitLab.com.

实验将作为 A / B 测试运行,并且位于功能标记后面以打开或关闭测试. 根据实验产生的数据,团队将决定实验是否产生了积极影响,并将其设置为新的默认值或回滚.

Experiment tracking issue

每个实验都应有一个实验跟踪问题,以跟踪从推出到清除/删除的实验. 部署实验后,应立即设置问题的到期日期(这取决于实验,但最多可能需要几周的时间). 在截止日期之后,该问题需要解决,并且可以:

  • 成功,实验将成为新的默认设置.
  • 它不成功,与实验相关的所有代码都将被删除.

无论哪种情况,都应将实验结果与决策依据一起发布到问题上.

Code reviews

由于实验代码在很长一段时间内都不会成为代码库的一部分,并且我们想快速迭代以检索数据,因此实验的代码质量有时可能无法满足我们的标准,但无论实验是否为 GitLab 都不会对其产生负面影响运行与否. 最初,实验仅会部署到一小部分用户,但我们仍希望为这些用户提供完美的体验. 因此,实验仍然需要测试.

对于审阅者和维护者:如果您发现通常无法通过审阅但暂时可以接受的代码,请提及您的疑虑,但请注意,无需进行更改. 然后,作者在这段代码中添加注释,并添加指向该问题的链接以解决该实验. 如果实验成功并成为产品的一部分,则应解决这些后续问题.

How to create an A/B test

  • 实验添加到Gitlab::Experimentation::EXPERIMENTS中的散列experimentation.rb

    1. EXPERIMENTS = {
    2. other_experiment: {
    3. #...
    4. },
    5. # Add your experiment here:
    6. signup_flow: {
    7. environment: ::Gitlab.dev_env_or_com?, # Target environment, defaults to enabled for development and GitLab.com
    8. tracking_category: 'Growth::Acquisition::Experiment::SignUpFlow' # Used for providing the category when setting up tracking data
    9. }
    10. }.freeze
  • 在控制器中使用实验:

    1. class RegistrationController < ApplicationController
    2. def show
    3. # experiment_enabled?(:feature_name) is also available in views and helpers
    4. if experiment_enabled?(:signup_flow)
    5. # render the experiment
    6. else
    7. # render the original version
    8. end
    9. end
    10. end
  • 跟踪必要的事件. 有关详细信息,请参见遥测指南 .

  • 合并请求合并后, chatops适当的通道中使用chatops来为 10%的用户启动实验. 功能标记应带有附加了_experiment_percentage后缀的实验名称. 为了提高可视性,请在#s_growth通道中共享对生产运行的所有命令:

    1. /chatops run feature set signup_flow_experiment_percentage 10

    如果发现实验存在问题,则可以通过删除功能标记来禁用实验:

    1. /chatops run feature delete signup_flow_experiment_percentage