Лучшие практики в тестировании сайта - PullRequest
3 голосов
/ 14 января 2011

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

Мы обнаружили, что тесты на селен являются лучшими для наших нужд: в основном потому, что они надежны.Если тест на селен сообщает об ошибке JS, вы на 95% уверены, что это настоящая ошибка.(Это чрезвычайно важное свойство, как мы узнали из нашего опыта использования HTMLUnit).Однако выполнение тестов на селен медленное и тяжелое.(Мы поддерживаем небольшую ферму ЦП, чтобы мы могли запускать множество серверов селена и множество сценариев асинхронно).

Недавно мы предложили новый подход - использовать селен только в тех местах, где он действительно необходим: popups, ajax., JS в общем, .. В других местах используйте «Текстовый браузер».Например, если вы хотите проверить, работает ли следующая ссылка:

<a href='/somewhere'> link </a>

Селен вам не нужен.Вы можете выполнить GET-запрос к странице, а затем использовать regex / parse для страницы и использовать xpath / .. Bottom line - вам не нужен JS-движок .Ясно, что это гораздо более легкий и быстрый тест.

У нас был большой успех с этим подходом, и мы столкнулись со следующими ссылками:

<a href='/somewhere-1' onclick="foo()" > link 1 </a>
<a href='/somewhere-2' onclick="foo()" > link 2 </a>
... many more such links ...

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

Мой вопрос: гдеКак вы думаете, мы должны провести черту?и я был бы рад услышать ваше мнение - есть ли инструменты «Текстовый браузер» (мы не работали с WebDriver)?

1 Ответ

1 голос
/ 22 марта 2011

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

По моему мнению, разработчики должны проводить юнит-тесты своих foo() функция. TDD в Javascript немного не хватает поддержки инструмента, но кое-что должно произойти.

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

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

...