Тестирование приложений веб-форм ASP.NET - PullRequest
7 голосов
/ 20 февраля 2010

Если вы находитесь в моем положении, у вас есть большие приложения WebForms, которые переросли в эту неразрешимую вещь. Когда вы добавляете новые функции, вам не все по душе, и вам нужен недорогой и понятный способ автоматизированного тестирования.

Теперь, насколько я понимаю, правильно было бы попытаться создать абстракцию макета страницы и пользовательскую модель управления, присутствующую в ASP.NET WebForms, однако, поскольку это потребовало бы значительных инвестиций в существующее приложение, оно не вариант.

Я стараюсь и стараюсь как можно больше REST-подобной разработки, потому что она обладает некоторыми хорошими свойствами. И при этом я написал простого робота-паука, который сканирует все URL-адреса, которые он может найти, и пытается их просто получить. Это позволило мне быстро находить неверные данные, которые вызывали проблемы, и избегать того, чтобы мои конечные пользователи нажимали на сломанные вещи, однако этого, конечно, недостаточно.

Я продолжил работу над своим сканером, и он превратился в простой REST-клиент, который пробует разные комбинации ввода, выискивая вероятную ошибку или сбой. Он более интеллектуален, чем просто исчерпывающий поиск (потому что он знает о прикладном уровне ASP.NET WebForms), и моя цель здесь состоит в том, чтобы в основном изучить состояние веб-приложения, надеясь охватить все ключевые случаи перед нашими пользователями.

Есть ли у кого-нибудь опыт создания чего-то подобного?

Кроме того, для вас есть тестовые гуру. Это пустая трата времени, или я смогу что-то сказать о качестве здесь? С моей точки зрения, это, кажется, приятное место в том, что он будет пробовать то, что потенциальный конечный пользователь будет делать через браузер.

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

Мы пробовали такие вещи, как Selenium, но он требует много дополнительной работы, и мы все время меняем вещи, просто невозможно поддерживать несколько тестовых наборов для селена для 50 различных приложений.

Ответы [ 3 ]

5 голосов
/ 20 февраля 2010

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

  1. Выберите контейнер МОК - мне нравится Ninject для этого лично
  2. Найдите удобное место для вставки "служебных" классов на вашу страницу (констурктор базового класса страницы или переопределите модуль, который загружает страницы, что бы у вас ни было)
  3. Выберите фреймворк для юнит-теста, и если у вас нет автоматической сборки, настройте его; включает в себя запуск полного набора модульных тестов в этой сборке
  4. Каждый раз, когда вы приближаетесь к фрагменту логики в файле aspx.cs, посмотрите, не можете ли вы изолировать его в сервисе и оберните вокруг него модульные тесты
  5. Посмотрите, будет ли вам полезен MVP Pattern - мы обнаружили, что он снизил производительность настолько же, насколько это повысило тестируемость (он сделал и то и другое), но у некоторых это работает
  6. См. О медленной миграции вашего приложения в MVC, страницу за раз, если необходимо

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

1 голос
/ 20 февраля 2010

Какая часть вашего приложения ломается? Пользовательский интерфейс или бизнес-логика?

Бизнес-логика должна быть полностью отделена от пользовательского интерфейса и должна тестироваться отдельно. В частности, гораздо проще использовать инструменты автоматизированного модульного тестирования для отдельной бизнес-логики, чем для интерфейса пользователя.

0 голосов
/ 26 февраля 2010

Если я прав, у вас большая веб-форма и вы хотите запускать некоторые стандартные тесты для конечных пользователей каждый раз, когда вы делаете новую версию.

Я могу порекомендовать Selenium IDE adon для Firefox .

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

Для внутреннего тестирования кода напишите несколько модульных тестов, используя NUnit

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