Тестовые идентификаторы для автоматизации тестирования в HTML-разметке? - PullRequest
3 голосов
/ 22 июня 2009

Мы используем автоматизированные тесты для проверки работоспособности нашего веб-приложения. Чтобы сделать утверждения в тестовых примерах менее сложными и более гибкими, мы рассматриваем введение «TestIDs», то есть идентификаторов в разметке HTML, которые помогают тестовым кейсам находить и проверять элементы на странице. Кроме того, эти TestID позволили бы проводить более конкретные интеграционные тесты, которые в настоящее время невозможны из-за ограниченности данных на страницах.

Однако вот что заставляет нас колебаться:

  • введение идентификатора теста означает изменение тестируемого для тестирования
  • безопасность - мы будем раскрывать внутренние идентификаторы объектов домена и другую информацию, которая в противном случае не была бы видна на странице
  • стандарты - в зависимости от того, как мы помещаем TestID в разметку, мы, скорее всего, нарушим предполагаемое семантическое использование элемента или атрибута (например, атрибутов 'id' или 'class', других элементов html, и др.)
  • помехи - TestID могут помешать коду приложения
  • производительность - TestID являются ненужной разметкой (для пользователя) и увеличивают размер страницы (имеет значение только на больших страницах)

Ограничение TestIDs для тестирования / размещения HTML не кажется хорошей идеей, потому что мы, очевидно, хотим протестировать код, который будет использоваться в рабочей среде, и не хотим, чтобы наша среда тестирования / подготовки работала по-другому. Фактически, мы в настоящее время запускаем части наших тестовых наборов против работающей системы после выпуска.

Как вы думаете, TestID - это хорошая идея, и если да, то как бы вы поместили их в разметку?

<Ч />

Некоторые примеры разметки, чтобы продемонстрировать, о чем я говорю:

<!-- this test id allows an integration test to verify that
  the carrot 188271 is in fact green but exposes the id to the user -->
<tr id="testid-carrot-id-188271">
    <td class="color">green</td>
    <td class="size">doesn't matter</td>
</tr>

Ответы [ 3 ]

6 голосов
/ 22 июня 2009

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

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

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

3 голосов
/ 23 июня 2009

Я бы сказал, что преимущества более простого и качественного тестирования перевешивают предполагаемые риски. Я предполагаю, что вы говорите о чем-то вроде следующего: добавление id = 'resultDetail' к элементу сведений о результатах на вашей странице, чтобы его было легче найти для автоматизированного теста. Честно говоря, я не вижу в этом вреда. Если я придерживаюсь чрезмерно упрощенного взгляда, возможно, вы могли бы добавить некоторую выборочную разметку, чтобы дать нам лучшее представление о том, что вы рассматриваете.

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

3 голосов
/ 22 июня 2009

Рассматривали ли вы использовать что-то еще для идентификации элементов, например XPath? Я понятия не имею, насколько динамичны ваши страницы, но XPath может быть достаточно конкретным, в каком элементе вы хотите.

Лично я бы не раздувал рабочий HTML с тестовыми идентификаторами.

...