Как построить зависимые тесты для регрессионного тестирования - PullRequest
1 голос
/ 03 апреля 2012

У меня есть проект ASP.Net MVC, и я подумал, что мог бы использовать такой инструмент, как MS Test или NUnit, чтобы выполнить регрессионное тестирование от уровня контроллера до базы данных, однако я столкнулся с проблемой, когда тесты не предназначены для запуска вorder (Вы можете использовать упорядоченные тесты в MS Test, но тесты по-прежнему выполняются одновременно), а другая проблема заключается в том, как сделать доступными данные, созданные в результате одного теста, для другого?

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

Есть предложения?Это просто неправильный инструмент для работы?Должен ли я просто использовать Selenium / WatiN?

Ответы [ 3 ]

0 голосов
/ 03 апреля 2012

WatiN, и я предполагаю, что Selenium не решит вашу проблему с заказом.Я использую WatiN и NUnit для автоматизации пользовательского интерфейса, и порядок выполнения не гарантируется, что первоначально создавало проблемы, аналогичные тем, что вы видите.

В духе ответа dskh вы хотите независимые тесты, и я 'мы выполнили это двумя способами для тестирования «черного ящика» интеграции / регрессии.

Во-первых: в вашей настройке теста настройте любые значения данных предварительных условий, чтобы вы были в известном «хорошем состоянии».Для автоматизации системных регрессионных тестов у меня есть несколько сценариев базы данных, которые вызываются для сброса данных в известное состояние;это добавляет некоторые зависимости, так что будьте внимательны к дизайну.Примечание. В прямом модульном тестировании обратите внимание на использование фиктивных объектов для устранения зависимостей и убедитесь, что ваш тест «тестирует одну вещь».Ложные объекты, вызовы методов-заглушек и т. Д. - это путь, если вы можете, который, исходя из вашего вопроса, звучит правдоподобно.

Второе: для случаев, когда определенные вещи абсолютно необходимо настроить определенным образом, и сценариик ним для тестирования установки добавили нелепое количество необходимых внутренних знаний системы (например, настройка всех пользователей + настройка всех разрешений + и т. д. и т. д.), было настроено небольшое количество тестов «начальной загрузки» в их собственном пространстве имен, чтобы их можно было легко запустить через NUnit,загрузить систему.Сокращение количества тестов и обеспечение их стабильности было первостепенным.Теперь при новой установке сначала запускаются тесты начальной загрузки, которые служат расширенными тестами дыма;дальнейшие тесты не запускаются, если какой-либо из тестов начальной загрузки завершился неудачей.В некотором смысле это неуклюже, но альтернативы были более громоздкими или требовали больше времени / ресурсов / чего угодно.

0 голосов
/ 04 июля 2013

Обновление Ссылка ниже (и я предполагаю, что проект) мертв. Наилучшим вариантом может быть использование Selenium и объектной модели страницы. Смотрите здесь: http://code.tutsplus.com/articles/maintainable-automated-ui-tests--net-35089

Старый ответ Самое простое решение, которое я нашел, это Qixote Роба Конери:

https://github.com/robconery/Quixote

Работает, запуская http-запросы и получая ответы. Прост в настройке и использовании и обеспечивает интеграционное тестирование. Этот инструмент также позволяет выполнять серию тестов для создания тестовых зависимостей.

0 голосов
/ 03 апреля 2012

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

...