Нужны идеи для написания автоматизированных тестов - PullRequest
5 голосов
/ 16 июня 2011

Я пишу некоторые модульные тесты в VS 2010, используя Selenium и C #. У меня есть пара тестовых случаев. Например, некоторые из моих тестов:

  1. Запустите веб-сайт: http://localhost:8080. Убедитесь, что на странице присутствует знак. Введите имя пользователя и пароль и войдите в систему.

  2. Проверьте, присутствует ли вкладка «Поиск». Нажмите на вкладку Поиск. Проверьте наличие вкладок Поиск книг, Поиск изображений и Поиск в Интернете.

  3. Нажмите на Поиск книг. Тип "C-Sharp для чайников". Нажмите Поиск. Убедитесь, что возвращены соответствующие результаты.

Теперь мой вопрос: лучше ли создавать отдельные классы для каждого из приведенных выше тестов или лучше объединять их в один класс и использовать только отдельные методы?

Все три теста связаны друг с другом. Под этим я подразумеваю, что выполнение # 2 требует, чтобы # 1 был завершен первым, а # 3 требует # 2, чтобы завершиться первым. Если я создаю отдельные классы, я считаю, что мне нужно будет вызывать метод в # 1 в классе # 2 и вызывать методы в # 1 и # 2 в классе # 3.

Я не очень уверен, что было бы хорошей идеей для этого. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

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

Если вы учитываете взаимодействие между пунктами 2 и 3, то есть некоторый переход и некоторое независимое тестирование.

Если вы считаете, что перекрестное тестирование (переход по ссылке «Поиск книг») в пункте 3 зависит от запуска пункта 2 до его запуска, поэтому нет смысла проводить два отдельных теста, если тест 2 не пройден, тогда тест 3 всегда будет неудачным.

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

Лично у вас есть два варианта, если вы также собираетесь тестировать «Поиск изображений» и «Поиск в Интернете», то вам вообще не нужно иметь пункт 2.Утверждение о видимости ссылки и щелчок по ссылке должны быть сведены к пункту 3.

Если вы не собираетесь тестировать «Поиск изображений» и «Поиск в Интернете», тогда хорошо иметьпункт 2. Однако тест 3 не должен вызывать метод пункта 2, поскольку он проверяет дополнительную функциональность, которая не заботит пункт 3.Следует предположить, что ссылка «Поиск книг» существует и щелкнуть по ней независимо от пункта 2.

1 голос
/ 16 июня 2011

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

Вы также можете попробовать WatiN в качестве альтернативы Selenium.

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