Примеры автоматизированного тестирования в веб-приложении CRUD? - PullRequest
1 голос
/ 26 января 2012

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

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

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

  • Юнит-тесты
  • Интеграционные тесты
  • Тесты пользовательского интерфейса

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

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

1 Ответ

1 голос
/ 06 февраля 2012

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...