Можете ли вы самостоятельно проверить вид бритвы без необходимости проведения интеграционных испытаний?
У меня есть веб-сайт MVC с множеством различных шагов, которые пользователь должен предпринять, чтобы пройти через него. Существуют проверки проверки и временные разделы (для юридических требований). Для проведения теста интеграции каждый раз, когда мне нужно протестировать небольшое изменение на странице, это настоящая головная боль. В идеале, я хочу знать, есть ли способ (возможно, плагин?), Который позволит мне щелкнуть правой кнопкой мыши по виду, как-то указать поддельный объект модели и открыть его напрямую?
В конечном итоге я хочу проверить, как выглядит любой новый скрипт на стороне клиента (который сочетает в себе бритву /javascript/jQuery ) и работает в разных браузерах. Речь идет не о функциональности тестирования моих контроллеров.
Ответы
Ответ 1
Данные о времени разработки
Данные о времени разработки обычно используются в WPF, здесь есть статья, в которой описывается техник для отображения данных времени разработки в MVC:
http://blog.dezfowler.com/2010/11/adding-design-mode-to-your-mvc-app.html
Это должно предоставить вам метод "как-то указать поддельный объект модели и открыть его напрямую".
Это может быть все, что вам нужно, или:
Curl
Может использоваться с данными реального времени или времени разработки, как указано выше.
Я использую cURL, выполненный из пакетных файлов, и вывод содержимого в несколько файлов.
Например, эта партия может моделировать вход в систему:
logon.bat:
echo Index without logon
curl http://localhost/index.html
echo Logon
curl http://localhost/login.html --data "username=a&password=p" ---dump-header auth.txt
echo Index after logon
curl http://localhost/index.html --cookie auth.txt
RunAll.bat:
call Logon.bat > logon_result.txt
В первый раз, когда я запускаю его, я также вручную просматриваю страницы в браузере, тогда я знаю, что могу выполнить эти файлы пакетного результата (например, logon_result.txt
) в качестве ожидаемого результата.
Последующие времена я запускаю командные файлы, любые изменения выделяются в контроле версий. На этом этапе я просматриваю различия и либо ОК их, и фиксирую как новый ожидаемый результат. Или я исправлю ошибку.
Обычно я использую это для тестирования интеграции WebAPI, но он должен работать для любой страницы, обслуживаемой http. Один конкретный сценарий, который нужно учитывать, заключается в том, что для радикальных изменений в общем макете, например, вы можете не захотеть проверить их вручную. Поэтому убедитесь, что все проверено и выполнено до изменения макета, затем небольшие ошибки не будут скрыты в пределах большого количества изменений.
Я поймал некоторые плохие ошибки с этим techinque. Когда-либо ставьте System.Web.Mvc.AuthorizeAttribute
на ApiController
вместо System.Web.Http.AuthorizeAttribute
? Не блокирует неавторизованных пользователей, но код выглядит нормально.
Возможно, вы захотите также настроить новую чистую базу данных или восстановить снимок одного в качестве первой задачи файла RunAll.bat
, чтобы любые данные, отображаемые на страницах, были одинаковыми для каждого запуска и не отображались как изменение.
Ответ 2
Тестирование веб-приложения - довольно большая тема, но позволяет сохранить его просто:
Чтобы правильно протестировать приложение, вам необходимо разработать приложение таким образом
- что вся бизнес-логика может быть протестирована с помощью стандартных модульных тестов.
- весь доступ к данным можно абстрагировать и высмеивать
- доступ к данным может быть протестирован отдельно.
Если у вас есть веб-сайт MVC, вам обычно необходимо, чтобы вся бизнес-логика была отделена от любого пользовательского интерфейса. Это фактически должно позволить вам использовать стандартные unit test проекты для тестирования, скажем, 80% вашего кода. Из-за этого вам нужно написать много кода, чтобы проверить его правильно...
Если у вас есть тонны бизнес-логики, это приведет к очень сложному тестированию кода.
Единственный способ сделать это (я знаю) - это автоматическое тестирование пользовательского интерфейса.
Для этого есть несколько полезных фреймворков, а также визуальная студия предлагает некоторые инструменты для автоматизации тестов.
В общем, он работает так: вы определяете действия, которые обычно выполняете как пользователь в веб-браузере. Все действия, которые должен выполнить пользователь, могут быть протестированы, скриптируя его.
Чтобы сделать это, это сильно зависит от того, насколько сложным и/или динамическим является ваш пользовательский интерфейс. Чем больше у вас фантазии, тем труднее будет написать тест script...
Ниже приведены некоторые замечательные статьи об автоматизации тестирования:
http://visualstudiomagazine.com/Articles/2012/12/01/Automated-UI-Testing.aspx
http://blog.typemock.com/2012/05/22/automated-testing-of-asp-net-mvc-applications
Здесь также приведено быстрое видео о том, как получить автоматические тесты пользовательского интерфейса, запущенные в VS2012:
http://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2012-Virtual-Launch/Automated-UI-testing-with-Visual-Studio-2012