2009-09-24 2 views
25

Qual è il modo migliore e più pulito per implementare i test A-B in asp.net mvc? Cioè, quando apportiamo nuove modifiche a un sito Web aspvc mvc, vogliamo testare il nuovo html/css/js con un determinato sottoinsieme di visitatori (definito su cookie, ID di accesso, ecc.) E quindi analizzare alcune metriche (tempo di risposta della pagina, numero di pagine visitate, $$$ in vendite, ecc.) per misurare il livello di successo delle modifiche.Qual è il modo migliore/più pulito per implementare i test A-B in asp.net mvc?

Sto cercando un modo pulito per implementare un modo di scegliere quale vista (html/css/js, ecc.) Per renderizzare usando asp.net mvc.

risposta

-1

Penso che per questo non ci sia una soluzione pronta per l'uso e si dovrà improvvisare.

Provare a sovrascrivere la funzionalità corrente in punti ben definiti senza romperla. Disegna in modo esplicito un bordo dove risiede il tuo normale codice e il codice di test A-B.

L'inversione del principio di controllo può essere di grande aiuto anche qui (ad esempio, la fabbrica di controller potrebbe fornire un controller derivato invece di uno originale). Per le viste & partialviews - è possibile modificare viewengine in modo che proverà a cercare "MyPartialViewAB.ascx" anziché "MyPartialView.ascx".

E potrebbe essere una buona idea dare un'occhiata a ciò che sono performance counters (nel caso non l'abbiate).

2

Google Content Experiments? È una soluzione basata su Javascript che non richiede nulla dal tuo back-end.

  1. includere Javascript di Google sulla tua pagina
  2. Lo script sostituisce in modo casuale gli elementi sulla pagina, come definito dal vostro Un test/B
  3. sito di Google si presenta con un bel ripartizione dei risultati ...
+0

Forse essere di parte, ma qualsiasi cosa fornisca a Google più informazioni gratuitamente [come se fossero un'azienda, proprio come chiunque altro; non è un ente di beneficenza], e, d'altra parte, è un motore di test di JavaScript [che soffre di mancanza di supporto prestazioni SEO/client], non è una buona soluzione –

2

Se si utilizza il motore di visualizzazione spark, è possibile farlo con una variazione del filtro dei temi (http://sparkviewengine.com/documentation/viewlocations#Extendingfilepatternswithdescriptorfilters). Per ogni nuovo visitatore del sito, determinare se si desidera che visualizzino la versione esistente o nuova del sito e impostino un cookie. Collegare un filtro descrittore che cerca la presenza del cookie e modificare il percorso della vista per cercare nella cartella contenente le viste modificate. Se esiste una vista alternativa, il motore Spark lo renderà automaticamente al posto della vista "normale", altrimenti renderà la vista normale.

Se si utilizza la normale WFVE, il modo più semplice per gestirlo è definire una cartella in Viste in cui le alternative di visualizzazione sono attive. Quando si desidera fornire una vista alternativa, la si posiziona in una posizione che corrisponde alla sua posizione all'interno della normale cartella Viste ma radicata nella cartella delle alternative, ad es. per fornire un'alternativa a Views/Users/login.aspx posizionare la nuova vista su Views/Alternative/Users/login.aspx.

Con una convenzione per l'individuazione di viste alternative, è possibile estendere WebFormViewEngine e sovraccaricare CreatePartialView/CreateView per esaminare alcuni aspetti di ControllerContext per determinare se visualizzare la visualizzazione predefinita o sovraccaricata e modificare il percorso come appropriato, ad es. modifica .../Viste/Utenti/login.aspx in .../Viste/Alternativa/Utenti/login.aspx.

+0

Sto usando scintilla. – Lamar

11

Check out FairlyCertain (http://www.fairtutor.com/fairlycertain/) quando si ha la possibilità. È una libreria A/B .NET che puoi inserire nel tuo progetto e iniziare a scrivere test.

A differenza delle librerie Javascript di Google e VisualWebsiteOptimizer, tutto accade sul server in modo da non subire alcuna prestazione, esperienza utente o problemi di SEO. L'ho usato nella mia roba per un po 'di tempo e funziona abbastanza bene.

+2

Finalmente trovato dove memorizza i dati (in un file di testo - mi ci è voluto un po '...). Potrebbe valere la pena aggiungere un disclaimer se è il tuo prodotto. ;-) – davewasthere

+2

Sembra che questo riguardi i moduli Web: esiste un'implementazione MVC/Razor? – sydneyos

+0

@JasonKester Quale licenza è distribuita sotto? –

3

C'è uno A/B testing framework specifico per ASP.NET MVC. Questo è un software open source che mi sono scritto quando, proprio come te, non ha trovato uno strumento gratuito che funzioni bene con ASP.NET MVC e non richiede molte impostazioni.

0

Suggerisco di utilizzare le modalità di visualizzazione per ottenere il test A/B.

Ma le modalità di visualizzazione supportano solo problemi semplici per impostazione predefinita.

Se si implementano già le Modalità di visualizzazione in qualche altro scenario. Puoi considerare DisplayModeMatrix (solo google). Ti aiuta a utilizzare le modalità di visualizzazione più efficienza.

https://www.nuget.org/packages/DisplayModeMatrix/

Modalità Wth di visualizzazione è possibile semplicemente eliminare/rinominare parere dopo il test A/B per ripulire il vostro progetto.