Каков наилучший/самый чистый способ реализации тестирования A-B в asp.net mvc?
Каков наилучший и самый чистый способ реализации тестирования A-B в asp.net mvc? То есть, когда мы вносим новые изменения на веб-сайт asp.net mvc, мы хотим протестировать новый html/css/js с определенным поднабором посетителей (определенный в cookie, идентификатор входа и т.д.), А затем проанализировать некоторые показатели ( время отклика страницы, количество посещенных страниц, $$$ в продажах и т.д.), чтобы оценить уровень успеха изменений.
Я ищу чистый способ реализовать способ выбора вида (html/css/js и т.д.) для рендеринга с использованием asp.net mvc.
Ответы
Ответ 1
Отъезд FairlyCertain ( http://www.fairtutor.com/fairlycertain/, когда вы получаете шанс. Это библиотека .NET A/B, которую вы можете просто добавить в свой проект и начать писать тесты.
В отличие от Javascript-библиотек от Google и VisualWebsiteOptimizer, все происходит на сервере, поэтому вы не страдаете какой-либо производительностью, пользовательским опытом или проблемами SEO. Я использовал его в своих вещах некоторое время, и он работает очень хорошо.
Ответ 2
Существует структура тестирования A/B специально для ASP.NET MVC. Это программное обеспечение с открытым исходным кодом, которое я написал себе, когда, как и вы, не нашел бесплатный инструмент, который хорошо работает с ASP.NET MVC и не требует большой настройки.
Ответ 3
Эксперименты в Google Content? Это решение на основе Javascript, которое ничего не требует от вашего сервера.
- Вы включаете Google Javascript на своей странице
- script случайным образом заменяет элементы на вашей странице, как определено вашим тестом A/B
- Сайт Google показывает вам хороший анализ результатов...
Ответ 4
Если вы используете механизм искрового просмотра, вы, вероятно, можете сделать это с изменением фильтра темы (http://sparkviewengine.com/documentation/viewlocations#Extendingfilepatternswithdescriptorfilters). Для каждого нового посетителя сайта определите, хотите ли вы, чтобы они увидели существующую или новую версию сайта и установили файл cookie. Подключите фильтр дескриптора, который ищет наличие файла cookie и изменит местоположение представления, чтобы посмотреть в папке, содержащей измененные виды. Если существует альтернативный вид, механизм Spark автоматически отобразит его вместо "обычного" представления, в противном случае он отобразит обычный вид.
Если вы используете обычный WFVE, самым простым способом управления этим будет определение папки в разделе "Виды", в которых живут ваши альтернативы вида. Если вы хотите предоставить альтернативный вид, вы поместите его в место, которое соответствует его положению в обычной папке "Виды", но внедренной в папку альтернатив, например. для предоставления альтернативы Views/Users/login.aspx поместите новое представление в Views/Alternative/Users/login.aspx.
С помощью соглашения о поиске альтернативных представлений вы можете расширить WebFormViewEngine и перегрузить CreatePartialView/CreateView, чтобы проверить какой-либо элемент ControllerContext, чтобы определить, следует ли отображать по умолчанию или перегружать представление и изменять путь соответствующим образом, например. изменение... /Views/Users/login.aspx to.../Views/Alternative/Users/login.aspx.
Ответ 5
Я предлагаю вам использовать режимы отображения для достижения тестирования A/B.
Но режимы отображения просто по умолчанию поддерживают простые проблемы.
Если вы уже реализуете Режимы отображения в другом сценарии. Вы можете рассмотреть DisplayModeMatrix (просто Google). Это помогает повысить эффективность режимов отображения.
https://www.nuget.org/packages/DisplayModeMatrix/
Режимы Wth Display вы можете просто удалить/переименовать представления после тестирования A/B для очистки вашего проекта.
Ответ 6
Я думаю, что для этого нет готового решения, и вам придется импровизировать.
Попробуйте переопределить текущую функциональность в четко определенных точках, не нарушая ее. Явно нарисуйте границу, где живет ваш обычный код и код тестирования A-B.
Здесь может также помочь инверсия принципа управления (т.е. контроллер factory мог бы предоставить производный контроллер вместо исходного). Для просмотров и частичного просмотра - вы можете изменить viewengine, чтобы он попытался найти "MyPartialViewAB.ascx" вместо "MyPartialView.ascx".
И может быть хорошей идеей посмотреть, что счетчики производительности (в случае, если вы этого не сделали).