← Tutti gli articoli

Tutorial

Forzare una variante specifica di A/B test o feature flag per il QA

Gli A/B test e i feature flag sono ottimi per i team di prodotto e una sofferenza per il QA. Vieni assegnato a un bucket una volta, in modo casuale, e poi non puoi piu vedere l'altra variante. Questo articolo mostra come prendere il controllo: trovare il valore che il sito usa per assegnarti il bucket, sovrascriverlo prima che la pagina lo legga e bloccare una variante per pattern di URL con una regola JustZix.

Come i siti ti assegnano i bucket

Quasi ogni strumento di sperimentazione lato client — Optimizely, GrowthBook, LaunchDarkly, Statsig, Split, soluzioni interne — funziona allo stesso modo. Alla tua prima visita lancia un dado, scrive il risultato da qualche parte in modo persistente e legge sempre lo stesso posto a ogni visita successiva, cosi la tua esperienza resta stabile. Quel "da qualche parte in modo persistente" e quasi sempre una di tre cose:

Le prime due puoi sovrascriverle direttamente. La terza e piu difficile — ne parliamo sotto.

Trovare la chiave di bucketing

Apri i DevTools e vai alla scheda Application. Sotto Storage hai Cookies e Local Storage affiancati. Ricarica la pagina e cerca qualcosa che sembri un esperimento: chiavi che contengono ab, exp, variant, flag, bucket, test, feature, o un nome di vendor come optimizely o growthbook.

Se non compare nulla di evidente, la decisione arriva dalla rete. Apri la scheda Network, filtra su Fetch/XHR, ricarica e cerca una richiesta a qualcosa come /api/flags, /decide o config.json. Il JSON della risposta ti dice i nomi delle varianti e — cosa cruciale — sotto quale chiave l'SDK le memorizza.

Sovrascrivere localStorage prima che gli script lo leggano

Il tempismo e tutto. L'SDK di sperimentazione legge la sua chiave presto, spesso prima di DOMContentLoaded. La tua regola JS di JustZix deve girare prima di quella lettura. Imposta la regola perche giri a document_start e scrivi subito il valore:

// Pin the GrowthBook-style variant before the SDK initialises
const KEY = 'gb_anonymous_id';      // the bucketing key you found
const FORCED = 'qa-pinned-variant-b';

// Overwrite whatever value the SDK would have rolled
localStorage.setItem(KEY, FORCED);

// Some SDKs cache a whole decision object — pin that too
localStorage.setItem('growthbook_features', JSON.stringify({
  'new-checkout': { defaultValue: true },
  'pricing-table-v2': { defaultValue: 'variant-b' }
}));

Per l'approccio dell'ID anonimo scegli un ID stabile e non casuale: la maggior parte degli SDK ne calcola l'hash per ottenere un bucket, quindi la stessa stringa finisce sempre nella stessa variante. Prova qualche ID una volta, annota quale ti da la variante B e riusalo per sempre.

Sovrascrivere un cookie

I cookie sono piu semplici — non c'e un SDK di mezzo, solo una stringa. Scrivilo a document_start cosi gli script della pagina vedono il tuo valore:

// Force the experiment cookie for this domain
function setCookie(name, value) {
  document.cookie =
    name + '=' + value + '; path=/; max-age=31536000; SameSite=Lax';
}

setCookie('ab_variant', 'B');
setCookie('feature_new_nav', 'on');

Se il cookie e HttpOnly non puoi toccarlo affatto da JavaScript — quello e un flag lato server, trattato di seguito. Puoi confermarlo nella scheda Application: i cookie HttpOnly mostrano una spunta in quella colonna.

Gestire i flag lato server

Quando la variante e decisa sul server, l'HTML che ricevi e gia la variante. Non c'e alcun valore lato client da capovolgere. Hai due opzioni oneste:

Un override tramite parametro di query e la via piu pulita. Se il tuo sito supporta ?ff_override=new-checkout:true non ti serve nemmeno JavaScript — basta un segnalibro sull'URL.

Bloccare una variante per pattern di URL

Il vero vantaggio di JustZix e lo scoping. Non vuoi che ogni sito sia assegnato allo stesso bucket — vuoi che questo ambiente di staging sia bloccato sulla variante B e quello lasciato in pace. Crea una regola con un pattern di URL ristretto:

URL pattern:  https://staging.example.com/*
JS (document_start):
  localStorage.setItem('exp_checkout', 'variant-b');
  document.cookie = 'ab_force=B; path=/';

Crea una regola per variante — "Pin checkout A", "Pin checkout B", "Pin control" — e attivale dalla barra delle azioni. Un giro di QA su tutti e tre i rami diventa tre clic invece di tre finestre in incognito e molta fortuna.

Verificare che la variante sia davvero attiva

Non fidarti del fatto che l'override abbia funzionato solo perche la pagina sembra diversa. Confermalo. La maggior parte degli SDK espone l'assegnazione attiva da qualche parte — registrala dalla Output Console:

// Read back what the SDK decided, after it initialised
window.addEventListener('load', () => {
  // GrowthBook example
  if (window.growthbook) {
    console.log('Active features:', window.growthbook.getFeatures());
  }
  // Generic: dump every storage key for the audit trail
  console.log('Forced storage:', { ...localStorage });
});

Abbina questo alla finestra Output Console cosi l'assegnazione e visibile nella scheda mentre clicchi attraverso il flusso. Se l'SDK riporta la variante che hai forzato, il tuo test e reale. Se riporta qualcos'altro, la tua regola e girata troppo tardi — spostala a document_start.

Insidie comuni

Vedi anche

Smetti di affidarti a finestre in incognito e tiri di dado fortunati. Installa JustZix, costruisci una regola per variante ed esercita ogni ramo di ogni esperimento a richiesta.

Valuta questo articolo

Nessuna valutazione — sii il primo.

Provalo tu stesso

Installa JustZix e incolla qualsiasi snippet di questo articolo. Due minuti da zero a una regola funzionante su tutti i tuoi dispositivi.

Ottieni JustZix

Funzionalità · Come funziona · Esempi · Casi d'uso