Эту ошибку при написании ui автотестов я, как мне кажется, встречаю чаще
всего.
Update. По просьбам трудящихся обновил пример с более абстрактного, на более жизненный. Суть осталось неизменной.
Представьте, у вас есть такой простой набор тестов.
1 2 |
Заполнить корзину товарами - убедиться, что существует кнопка, на которой написано "Оплатить" Очистить корзину от товаров - убедиться, что существует кнопка, на которой написано "Оплатить" и она "disabled". |
Набор чеков в коде, в стиле Selenide, будет примерно таким:
1 2 3 4 5 6 7 |
fill_shopping_cart(); button.shouldBe(visible) .shouldHaveText("Оплатить"); empty_shopping_cart(); button.shouldBe(visible) .shouldHaveText("Оплатить") .shouldBe(disabled); |
Видите ошибку?
Если вы просто повторили язык теста, то чеки пройдут положительно и тест будет "зелёненьким", даже когда "Оплатить" будет всегда "disabled" (в частности, после выполнения заполнения корзины).
Более правильным, конечно, будет вариант
1 2 3 4 5 6 7 8 |
fill_shopping_cart(); button.shouldBe(visible) .shouldHaveText("Оплатить") .shouldBe(enabled); empty_shopping_cart(); button.shouldBe(visible) .shouldHaveText("Оплатить") .shouldBe(disabled); |
Часто автоматизаторы оправдываются, что в тексте это не стояло - поэтому они и не сделали проверку, что виноват тестировщик составляющий текст теста. Это ерунда, потому что многие проверки являются очевидными при ручном тестировании и вписывать их в текст - неоправданная трата времени. Хороший автоматизатор должен понимать предметную область и кодировать такие "неявные" проверки самостоятельно.