Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ua.net.itlabs.hw2;
- ...
- public class TodoMVCTest2 {
- /*
- то, что организовал отдельный пекедж для этого задания - это ок
- но почему и в имени тест-класса - есть структурная информация?
- структурную информацию - держи на уровне пекеджей
- а вот имя тест-класса - формируй согласно тому - что ты тестируешь
- тут TodoMVCTest - будет ок
- http://pastebin.com/DygrzcU0
- строки 3-18
- и раздел о нейминге
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.zfcd0angknhf
- весь раздел проработай )
- */
- ******************************
- @Test
- public void testTasksLifeCycle() {
- open("https://todomvc4tasj.herokuapp.com/");
- add("task1");
- edit("task1", "task1 edited");
- assertTasksAre("task1 edited");
- toggle("task1 edited");
- /*
- действие toggle("task1 edited"); - проверит предыдущее действие
- ведь мы работаем с той же, причем единственной видимой таской
- потому - можно toggle("task1 edited"); - использовать как неявную проверку
- а значит - проверку текстов тасок между edit & toggle - можно пропустить
- а вот после toggle("task1 edited"); - нужна проверка
- ведь filterActive(); - не проверит состояние списка тасок
- */
- filterActive();
- /*
- а тут - где проверка?
- */
- reopen();
- /*
- ты знаешь, пока я не посмотрела - как реализован метод reopen() -
- мне было не ясно - что он делает и для чего он
- по сути - ты тут выполняешь действие reopen all
- (reopen - это действие над одной, конкретной таской, на этом фильтре - reopen выполнить невозможно)
- подними в слеке наши диалоги -
- и что есть reopen all и reopen
- а также - я тебе давала советы - по приоритетам
- reopen all - имеет невысокий приоритет
- и потому - в рамках smoke покрытия - reopen all - вообще не нужно покрывать
- а чтобы тут, на этом фильтре, было с чем работать - добавь одну таску
- собственно - ты это и делаешь дальше
- ничего не мешает это действие сдвинуть сюда
- */
- cancelEdit("task1 edited", "task1 edit canceled");
- assertTasksAre("task1 edited");
- add("task2");
- assertTasksAre("task1 edited", "task2");
- toggle("task1 edited");
- /*
- complete - уже покрыто
- на all фильтре
- значит - более в рамках этого сценария покрывать complete - не нужно
- тоже было в слеке - что есть smoke
- мы покрываем все высокоприоритетные действия, но каждое из них - лишь единожды
- в конце ревью таки приведу те же советы)
- что были в слеке
- тут покрой complete all
- это действие - еще не покрыто
- и далее - нужна проверка
- filterCompleted(); - не проверяет список тасок
- значит - нужна явная проверка
- */
- filterCompleted();
- /*
- нужна проверка
- и перед clearCompleted - разумно покрыть reopen
- reopen - нужно покрыть, и тут - самое время )
- не забывай про проверки)
- */
- clearCompleted();
- /*
- где проверка?
- */
- filterAll();
- assertTasksAre("task2");
- delete("task2");
- assertNoTasks();
- }
- ******************************************
- add
- startEdit
- edit
- assertTasksAre
- toggle
- filterActive
- reopen
- cancelEdit
- filterCompleted
- clearCompleted
- filterAll
- delete
- assertNoTasks
- /*
- смотри прошлое ревью
- строки 181-188
- сравни - какой порядок методов сейчас использован
- и как можно их упорядочить
- в упорядоченном коде - легче ориентироваться
- это важно
- в том числе - и во время разработки)
- да и в сопровождении - тоже
- */
- add
- startEdit
- edit
- cancelEdit
- delete
- toggle
- toggleAll (вместо твоего reopen)
- clearCompleted
- filterAll
- filterActive
- filterCompleted
- assertTasksAre
- assertNoTasks
- /*
- сначала - базовые CRUD-операции (гугли термин)
- потом - другие операции
- рядом - похожие/связанные
- проверки - тоже рядом
- ну и обрати внимание - я для твоего reopen
- советую другое имя - согласно реализации
- */
- ******************************
- private void reopen() {
- $("#toggle-all").click();
- }
- /*
- reopen = переоткрыть таску
- это значит - снова сделать таску(одну) активной
- это действие - $("#toggle-all").click();
- либо переоткроет все таски, либо закомплитит все таски
- речь - про изменение статуса всех тасок
- и правильно - этот метод назвать
- не reopenAll
- не completeAll
- а именно toggleAll
- причина - вот тут описана - нужна однозначность
- попробуй разобраться
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.tmkuktenqqdi
- если это не понятно
- то обсуди это с нами в слеке
- */
- **********************************
- /*
- реализуй проверку счетчика активных тасок
- это то, что ты планировал
- в http://pastebin.com/yaXRt94S
- вот это http://joxi.ru/KAxzGoyu4d0Bdm
- имелся в виду - вот этот счетчик
- http://joxi.ru/Rmzqpx8HWq3lOr
- покрой это единожды
- */
- ****************************************
- /*
- повторяю советы из слека
- */
- /*
- важный момент
- Мы реализуем е2е сценарий для smoke покрытия
- это значит - что достаточно покрыть высокоприоритетный юз кейс лишь единожды, на одном из контекстов
- т е - покрыли edit на active - все, этого достаточно
- конечно, с добавлением таски так не получится )
- но - и того количества тасок, что ты создал - не нужно
- но с остальными операциями - это получится вполне
- задача smoke покрытия - быстро дать нам фидбек = все высокоприоритетные операции работают
- не все высокоприоритетные операции работают на всех контекстах
- а именно вот так - что они работоспособны
- дальше - если smoke тестирование пройдено - можно глубже тестировать приложение
- а если нет - так нет смысла продолжать тестировать - есть серьезные проблемы и надо их устранять
- */
- /*
- Приоритет действия высокий если
- - нерабочее действие не позволяет использовать приложение
- - у действия нет альтернативы
- - действие - часто используемое
- - действие - стандартное для многих приложений
- Примеры высокоприоритетного
- - добавление задачи - высокоприоритетная штука, потому что если отвалится - приложение не работает
- - отмена редактирования с помощью esc - во-первых, стандартное поведение, во-вторых - нет альтернативы
- - закомпличивание/раскомпличивание одной задачи - часто используемое и критично чтоб работало - важный функционал
- Так вот - низкоприоритетные вещи - в smoke-тесте не нужно покрывать.
- Чтобы оставить smoke тест эффективным
- А вот Reopen All - уже имеет приоритет пониже - т к реже будет использоваться, чем тот же reopen
- потому - reopen - стоит покрыть, а Reopen All - уже не стоит
- Проверку счетчика Items left - стоит покрыть лишь единожды. В общем-то - это не высокоприоритетная штука.
- Т к даже если это не будет работать - приложение будет все равно функционально.
- С другой стороны, на состояние этого счетчика влияет любая выполненная операция.
- Ввиду этого - в рамках е2е покроем его лишь единожды.
- */
- /*
- про использование неявных проверок через действие
- вариант 1
- add("task1"");
- edit("task1", "task1 edited");
- delete("task1 edited");
- вариант 2
- add("task1", "task2");
- edit("task2", "task2 edited");
- delete("task2 edited");
- Вариант 1 = правильное использование таких проверок через действие
- Вариант2 = не правильное использование
- Т к последующие действия не проверяют состояние ВСЕХ тасок в списке
- Таким образом - ты сможешь эффективно использовать неявные проверки через действия только в случае,
- если в списке тасок будет видима лишь одна таска
- Также не забывай - после каждого действия должна быть выполнена проверка
- Сразу
- Не получается использовать неявную проверку через следующее действие - используй явную
- Но - действие должно быть обязательно проверено сразу
- */
Advertisement
Add Comment
Please, Sign In to add comment