При написании тестов пользовательского интерфейса, как можно протестировать одну вещь, которая находится в конце длинной последовательности? - PullRequest
0 голосов
/ 12 февраля 2011

Я только начал запускать тесты пользовательского интерфейса для моего приложения ASP.NET MVC, используя WatiN.Это отличный инструмент и действительно интуитивно понятный, но я задаюсь вопросом, что же относится к индивидуальному тесту.

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

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

Некоторые примеры ...

  1. Пользователь должен зарегистрироваться, выйти из системы и ввести неправильный пароль 3 раза, чтобы убедиться, что система не позволит им войтиснова с правильным паролем

  2. Пользователь должен зарегистрироваться, добавить несколько foos, добавить несколько баров, отправить форму, которая позволяет им выбирать среди своих foos и баров, и увидеть их представление на другомpage

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

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

1 Ответ

1 голос
/ 12 февраля 2011

Привет.
Я бы разделил интеграционные тесты и приемочные тесты истории.

Проверка Шаблон PageObjects - вы создаете класс LoginPage с соответствующими методами, такими как loginAs (String username, String password), loginAsExpectingError (Строковое имя пользователя, Строковый пароль).Вы пишете другие классы подобным образом - это дает вам основу автоматизации для вашего приложения.Вы можете использовать это следующим образом:

На уровне интеграции вы проверяете, работают ли компоненты приложения должным образом, если вы предоставляете правильные учетные данные (loginAs) и когда вы предоставляете неправильные учетные данные (loginAsExpectingError)).

На уровне приемки вы используете LoginPage.loginAs (), чтобы сделать первый шаг в приемочном тесте.Вторым может быть что-то вроде MainPage.addSomeFoos ().Затем MainPage.addSomeBars ().Затем MainPage.logOut ().

Если ваши модульные тесты пройдены, запустите интеграционные тесты, если они пройдут приемочные тесты.

...