Спор возник касательно функционального тестирования

С этим я согласен. У нас и нет такого принципа.
Когда UI тест открывает страницу, он там проверяет всё что можно.

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

  1. Тест страницы, на которой 100 ссылок - тестирует только то, что ссылки кликаются
  2. Тест первой страницы - тестирует её контент
    1. Тест 100 страницы - тестирует её контент
  3. Тест “ненайденной” страницы - тестирует текст “страница не найдена” и статус код 404.

Пожалуйста, тесты простые незавимые, и мы ничем не жертвуем ради этого.

P.S. Кстати, такого принципа, как “1 тест - 1 проверка”, по-моему, и не существует.
По-моему, правильный принцип такой: 1 тест - 1 действие.

Схематично в терминах AAA:

Блок Arrange:
* действие 1
* действие 2
* действие 3
Блок Act:
* действие (одно!)
Блок Assert:

  • Проверка 1
  • Проверка 2
  • Проверка 3

Что в вашем понимании означает действие в таком случае?

Что угодно, что тестирует данный тест.
Обычно это действия пользователя, но теоретически может быть и что-то другое (например, наступление события “часы пробили 12:00”).

Типа:

  1. До: кнопка зелёная
  2. Действие: пользователь ввёл неверный пароль
  3. Проверка: кнопка красная

Действительно, непонятно, что в вашем понимании означает “действие”.
Пользователь ввел неверный пароль - как вы реализуете этот шаг?
Как правило, тут будет ввод неверного пароля в поле, а затем клик по кнопке сабмита. Т.е. два действия. Ибо без клика по кнопке и проверять нечего.

Очевидно, “действие” далеко не всегда должно быть одно. А вот приводить к какому-то ожидаемому результату “действие” (которое может состоять и из двух степов, и, возможно и больше) должно.

Да, конечно, тут под действием имеется в виду и ввод пароля, и клик.
Ну, вообще-то ещё взгляд на экран, нажатие пальцем, два вздоха…

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

2 лайка