2012-01-26 3 views
1

У меня есть веб-приложение, которое в основном CRUD, но также имеет некоторую бизнес-логику. Я использую ORM (Entity Framework) с уровнями домена, сервиса и интерфейса (ASP.NET MVC).Примеры автоматизированного тестирования в веб-приложении CRUD?

Я ищу, чтобы добавить автоматическое тестирование для этого приложения.

Существуют некоторые приложения с открытым исходным кодом, которые демонстрируют лучшие практики делать:

  • Unit Tests
  • Интеграция Тесты
  • UI тесты

в одном приложении.

Существует множество примеров кода очень простых случаев, но как насчет «несложного» приложения, которое используется в реальном мире.

ответ

1

Я буду описывать то, что я делаю здесь, но не предполагаю, что это правильный способ сделать это - просто описываю свой опыт:

Я использую NUnit, чтобы написать все мои модульные тесты для моего уровня доступа к данным с использованием SQLite db, чтобы «высмеять» базу данных. Таким образом, все вызовы базы данных реальны, но db находится в памяти, поэтому вы можете достичь хорошей производительности при выполнении своих тестов. Каждый метод доступа к данным должен быть тщательно протестирован здесь.

Мои бизнес-функции снова тестируются с использованием NUnit, но с использованием Moq, чтобы высмеять все операции доступа к данным. Если вы кешируете что-либо в своем бизнес-уровне (например, я это делаю), вы можете ввести класс кэша в памяти вместо своего реального, чтобы убедиться, что материал правильно помещен в кеш.

Несмотря на то, что многим нравится делать это для своих контроллеров, я предпочитаю использовать инструмент тестирования интерфейса, такой как Selenium, для «записи» моих модульных тестов и последующего преобразования их в код. Selenium - отличный инструмент для тестирования функциональности реального мира, а не только определенного случая в изоляции для остальных. Вы можете использовать соответствующий плагин Firefox для записи всех основных функций в вашей системе и спланировать свои утверждения (например, нажмите кнопку «A», чтобы перейти на страницу B, где я могу увидеть сообщение «Спасибо»). Selenium - отличный инструмент для запуска автоматических интерфейсных модульных тестов. Вы можете либо преобразовать свои тесты в код C#, и запустить их через свой инструмент непрерывной интеграции по своему выбору во время ваших ночных сборок (я использую TeamCity и отлично работает), или, альтернативно, в зависимости от размера вашего приложения, есть несколько веб-приложений, которые принимают ваши селеновые скрипты в качестве входных данных и запускайте их полуавтоматически.

Просто уточнить: хорошо иметь все эти тесты выше (доступ к данным, бизнес-уровень, интерфейсные тесты), так как NUnit тестирует и настраивает простой инструмент CI для запуска их каждую ночь. Таким образом, вы знаете, что что-то нарушает момент, когда вы совершаете какой-либо код или каждое утро, которое вы получаете в офисе.

Жаль, что это не тот пример, который вы искали, но я думал, что это может вам помочь.

Смежные вопросы