тампони е проста WSGI A / B тестване инструмент.
<Силен> Usage:
& Nbsp; 1. Определете един експеримент:
& Nbsp; от тампон внос тампони
& Nbsp; S = тампони ("/ TMP / .swab-тест-данни")
& Nbsp; s.addexperiment ("бутон размери", ["неизпълнение", "голям"], "за да приключилия")
& Nbsp; Тук имаме един експеримент, наречен "бутон-текст", за тестване на два размера на
& Nbsp; бутон върху формуляр.
& Nbsp; The два варианта на experment се наричат "малки" и "големи". Първи
& Nbsp; изброени винаги се приема за контрол вариант, и резултати ще бъдат
& Nbsp; представени от гледна точка на това как много по-добре или по-зле от другите варианти имат
& Nbsp; извършва в сравнение с контрола
& Nbsp; Целта, свързана с измерването, се нарича "цел-завършен".
& Nbsp; 2. Направете заявка WSGI:
& Nbsp; от тампон внос record_goal, show_variant
& Nbsp; Def get_button_style (околната):
& Nbsp; ако show_variant ("бутон размери", околната) == "малка":
& Nbsp; връщане "размер на шрифта: 100%"
& Nbsp; друго:
& Nbsp; връщане "размер на шрифта: 150%"
& Nbsp; Def MyApp (околна, start_response):
& Nbsp; ако околната ['REQUEST_METHOD'] == 'Get':
& Nbsp; start_response ("200 ОК", [])
& Nbsp; върне ['' '
& Nbsp;
& Nbsp; <тялото>
& Nbsp; <метод форма = "POST">
& Nbsp; <стил бутон = "% S" тип = "представя"> Завършете поръчката бутона >
& Nbsp; форма>
& Nbsp; тялото>
& Nbsp; '' '% (get_button_style (околната),)
& Nbsp;]
& Nbsp; ако околната ['REQUEST_METHOD'] == "POST":
& Nbsp; swab.record_goal ("цел-завършен", околната)
& Nbsp; 3. Увийте го в тампон мидълуер:
& Nbsp; ап = s.middleware (MyApp)
4. Да го изпълним, и след известно време да разглеждате HTTP: // <сървър> / тампон / резултати, за да видите кой вариант е печеливш.
<Силен> Тестване
За да тествате своите конкурентни страници, започнете тампони в режим на отстраняване на грешки:
тампон = тампони ("/ TMP / .swab-тест-данни", отстраняване на грешки = True)
След това добавете "? Тампон. <Експеримент-име> = <вариант-име>" да URLs да принуди един от друг, за да се докаже, вариант или.
Изключете режима за отстраняване на грешки в производството да се избегне хора каша с вашите цифри.
<Силен> Basic дизайн
Всеки посетител е назначена за самоличност, което е продължило с помощта на бисквитката. Идентичността е base64 кодирани случайно генерирани байт последователност. Тази идентичност се използва като семена за RNG, който се използва за превключване посетители в тестови групи.
Всеки път, когато тест е показан (предизвикана от функцията show_variant), на ред е влязла в даден файл в
Всеки път голмайстор е записан (предизвикана от функцията record_goal), на ред е влязла в даден файл в
Всеки ред в дневника има формат: N .
Не се използва заключване на файл: предполага се, че това ще се движат по една система, в която всеки ред е по-малък от ФС на блока, което ни позволява да се избегне това натоварване. Линиите могат да станат на пластове, но трябва да има риск от корупция, дори с множество едновременни пише. Вижте http://www.perlmonks.org/?node_id=486488 за обсъждане на въпроса.
<Силен> Статистически анализ
В частта за допълнително четене съдържа връзки към различни предмети, които ми помогнаха да изпълнява алгоритми и статистически формули, използвани в тампони. Все пак аз не разполагат с опит в математиката или надминаване и бих приветствал вноски или корекции от лица, с по-дълбоко разбиране на тези тестове
Какво ново в това издание.:
- Добавена на JavaScript фар за запис на тестове (помага изключи ботове)
- По-добра изолация на ботове на сървъра страна също
- Record опити приложение, няма да породят за грешка, ако името на експеримента не съществува
- Премахнато дебъгване флаг, способността да принуди вариант сега е винаги налице
- Стриптийз HTTP кеширане хедъри ако експеримент е бил приложен по време на искането
- подобряване на точността на проследяването на реализациите
- Cookie пътека може да бъде определен в мидълуер конфигурация
Какво ново във версия 0.1.2:
- Незначителни поправки на грешки
Какво ново във версия 0.1.1:
- Bugfix за ZeroDivisionErrors, когато няма данни е събрана
<силни> Изисквания :
- Python
Коментари не е намерена