Как правильно использовать Given, when и then в UI тестировании вводимых без данных?
======================================================================================

 Я делаю собственный проект, который тестирует UI. Время от времени читаю статьи и наткнулась на одну статью про GWT. В этой статье посыл был таким, что все три части обязательны. Но у меня возник вопрос: в своём проекте я практически не использую given, насколько это плохо?   

  

Если я правильно поняла, то given - "даны такие-то значения", но в моих тестах given крайне редко получается использовать, потому что там нужно много прощёлкать (ставить галочки, нажимать на кнопку и т.д.) чтобы "ввести какие-то данные". Т.е. глядя на примеры, допустим:  

  

Given: у меня есть число 3 и 5  

When: я их складываю  

Then: результат равен 8  

  

я не совсем понимаю, как в моём случае делать given.   

Проблема ещё в том, что нельзя сделать такую реализацию:  

  

*Given: нажми на кнопку А  

Given\И: нажми на кнопку Б*  

Then: создался объект C  

  

Вопрос: нормально ли при тестировании UI не использовать Given, если ввод данных это взаимодействие с интерфейсом? Т.е. нельзя установить значения.   

  

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

 Представьте, что ваш тест это эксперимент (над приложением) и попытайтесь прочитать его так:  

При условии что   

**GIVEN** и **GIVEN** а также **GIVEN**,  

Если я **WHEN**  

To тогда должно произойти **THEN** .  

  

Т.е. Given позволяет вам сократить описание предварительной подготовки к тесту  

до описания желаемого состояния приложения, например:  

  

При условии, что пользователь уже залогинен.  

При условии, что корзина пуста  

При условии, что поле выбрана опция такая-то.   

При условии, что в поле А введено значение Х а в поле Б значение Y  

  

А потом вы переходите к самому эксперименту.  

  

> Given: нажми на кнопку А  
> 
> Given: и нажми на кнопку Б  
> 
> Then: создался объект C

  

В данном случае скорее всего условие это нахождение на какой-то странице, или то, что выбрана какая-то секция приложения.   

Вы же не можете "в воздухе" нажать кнопку A и Б, правильно? Given это не действие, это состояние.  

  

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

> Вопрос: нормально ли при тестировании UI не использовать Given, если ввод данных это взаимодействие с интерфейсом? Т.е. нельзя установить значения.

  

Да. Просто в Given пишешь какие-нибудь предусловия. Если их нет - не пишешь.  

  

Будет что-то типа:  

Given: ---  

When: Я нажимаю кнопку A, затем нажимаю кнопку Б  

Then: Создался объект C