Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- у тебя - разработан сценарий для е2е
- почитай условие задания -
- https://docs.google.com/document/d/14VNBSVuTY0xGFI_OYSxDCae02BQG_yr68DLoNcll08Q/edit
- в этом задании - я чуть больше обычного помогаю
- так что - сначала - разбор - что нам нужно
- а нужно нам - перечень основных операций (не сценарий, а просто список действий, которые возможны)
- причем разумно его детализировать до каждого из фильтров
- а затем - разберем и твой сценарий
- */
- /*
- Для All фильтра - что мі можем сделать с тасками
- create
- edit
- complete
- complete all
- reopen
- reopen all
- clear completed
- reopen = еще раз кликнуть, на включенном чекбоксе .toggle -
- и ранее закомпличеная таска станет активной, переоткроется
- reopen all - аналог complete all
- когда все таски закомпличены - нажатие на этом чекбоксе приведет к пререоткрытию всех тасок
- http://joxi.ru/5md7jYwtkkXJvr
- вот это действие - reopen all - можно в списке main use cases - не указывать
- из соображений более низкого приоритета по сравнению с другими операциями
- а можно и указать
- чтоб список был полным
- я бы советовала именно так
- возможно - как-то пометить - что не есть высокоприоритетным - это нам поможет в дальнейшем при планировании е2е сценария
- с операциями над тасками на All фильтре - разобрались
- еще - аналогично - нужно составить список операций для Active и Completed фильтров
- тут - учти, что не все выше перечисленные операции можно на этих фильтрах выполнить
- а кроме того - на Completed фильтре - некоторые операции выполнять нет смысла (например, добавлять таску)
- тут - смотри сама
- можно и тут включить в перечень все, что можно выполнить
- и пометить не высокоприоритетное
- думаю, это оптимальная стратегия
- кроме этого - нужно в отдельной подгруппе - например General - выделить проверку items left
- Она (и ее приоритет) не зависит от фильтра, но зависит от предідущих віполненніх операций
- Так что - разумно вынести это как отдельную подгруппу с одним подпунктом
- еще одна подгруппа - переходы по фильтрам
- опиши - с какого на какой фильтр можно переключиться
- и еще одна подгруппа - Additional edit operations
- найди еще дополнительные юз кейсы
- юз кейс edit мы уже описали
- он реализуется так
- даблклик на таске
- ввод нового значения
- энтер
- его уже рассматривать не будем
- но есть еще похожие варианты )
- поэкспериментируй и найди другие варианты развития событий при редактировании
- например, если новое введенное значение = пусто
- или в конце - нажимаем не энтер, а ..., или делаем еще что-то
- сформулируй отдельную подгруппу - для дополнительных операций редактирования
- (именно дополнительных, т к стандартное редактирование - уже в нашем списке есть
- и не надо его в новом подпункте дублировать)
- будешь формулировать названия пунктов - старайся быть лаконичным и точным
- строй фразы так - что получим + как получим
- т е начинай с описания результата и продолжай описанием пути его достижения
- пример - если при редактировании текст изменить на пустую строку, то таска удалится
- такой пункт формулируем - delete by emptying text
- есть еще варианты -
- для 2-ух способов подтверждения редактирования(не с помощью нажатия на Enter)
- и одного способа отмены редактирования
- начали редактировать, внесли новый текст для таски,
- ____что-то-сделали___ (найди - что),
- результат - у таски старый текст - именно потому отмена редактирования
- */
- ****************************************************
- /*
- дальше - разбор сценария
- перед тем как приниматься за автоматизацию е2е - прочитай задание
- https://docs.google.com/document/d/17ZU5K7BGVfJKdJS8LQiFDExzHjChietETMxhZLk7A6Q/edit?usp=sharing
- и учти общие рекомендации - я их приведу после разбора сценария
- */
- E2E flow:
- at all filter(default)
- create 4 tasks
- verify: tasks texts
- /*
- не торопись добавлять сразу 4 таски
- это тебе перекроет возможность использовать неявные проверки через действия - см ниже - будет подробнее
- а такие проверки - позволят улучшить эффективость
- на уровне Smoke coverage - это очень важно
- */
- edit 1 task
- delete 1 task (the one which was edited)
- /*
- в случае, если в списке тасок - только вот эта одна таска - да
- можно было бы без проверок выполнить сначала edit 1 task ( так проверили создание таски)
- потом delete 1 task )так проверили редактирование таски)
- но у нас - несколько тасок
- потому - каждая из последующих операций - не проверяет предыдущую
- потому что - касается лишь одной из нескольких тасок
- также - для повышения эффективности - советую удаление тасок - откладывать на конец сценария
- так можно сэкономить и на этом
- меньше тасок понадобится - менье их создавать придется
- тоже эффективность повысим
- */
- "items left" counter should have (3)
- /*
- проверка items left - не заменит проверки текстов тасок
- проверка текстов тасок - более высокоприоритетная проверка
- т к более важное проверяет - состояние списка тасок
- items left -можно покрыть лишь еиножды в рамках е2е
- он будет длинным
- чтоб не загромождать его лишними подробностями
- а дальше - разберем - в каких обстоятельствах разумнее покрывать items left
- */
- *switch to active (also is a test step)
- /*
- согласна, это тоже шаг
- и как другие шаги - должен быть проверен
- тут у нас -
- было = таски 2 3 4
- перешли
- стало = таски 2 3 4
- если переход на фильтр не будет работать вообще - тоже такая картинка будет
- и чтоб точно установить - что
- переход на другой фильтр работает = нужно чтоб состояние списка тасок менялось
- переход на другой фильтр работает правильно = нужно чтоб состояние списка верно отражало логику фильтра
- чтоб такое получить - нам нужна немного другая тестовая ситуация
- пример
- на all
- добавили таску
- отредактировали ее
- закомплитили
- проверили - в списке - есть такая таска
- перешли на active фильтр
- проверили - в списке нет ни единой видимой таски
- было-стало для списка тасок - разное
- закомпличивание таски - проверили
- что на all - таски видимы в любом состоянии - тоже проверили
- да и неявные проверки использовали очень эффективно
- */
- at active
- verify: there are 3 tasks
- add 1 more task
- /*
- не стремись добавлять таски раньше чем они нужны
- хорошая стратегия - на all добавить одну
- и тут - одну
- */
- edit 1 previous task
- /*
- раз редактирование покрыто выше - все
- уже не надо
- т к - мы реализуем smoke покытие - мы покрываем
- только высокоприоритетное
- и только на одном из контекстов
- про это ниже подробнее напишу
- т к тасок - в списке - не одна
- неявные проверки через действия - тут не подойдут
- */
- verify: tasks texts
- mark 2 tasks completed+
- /*
- дважды делать одно и то же - не стоит
- вот - как я в примере выше приводила
- допустим - на all - покрой complete
- а тут - complete all
- */
- "items left" counter should have (2)
- /*
- как писала выше - тексты тасок - проверять обязательно
- это - наиболее точная и важная проверка логики приложения
- */
- *switch to completed
- at completed
- verify: there are 2 tasks
- make 1 task active again
- /*
- это то что я назвала reopen
- */
- "items left" counter should have (3)
- clear completed
- verify: list is empty
- *switch back to active
- /*
- на active - мы уже переключались
- правда, с другого фильтра
- но этого для smoke покрытия достаточно
- */
- at active (again)
- mark all completed
- clear completed
- /*
- уже покрывали - больше не нужно
- */
- verify: list is empty
- *switch back to completed
- /*
- та же история
- на этот фильтр - мы уже переключались
- да, контекст был другой - переключались с другого фильтра
- но - для smoke этого достаточно - покрываем действие = переход на completed filter
- единожды, на одном из контекстов
- а вот на all перейти в конце сценария - было бы ок
- переход на all - еще не покрыт
- для всех переходов с фильтра на фильтр - реализуй удачую тестовую ситуацию
- чтоб поточнее проверить фильтеринг
- */
- at completed (again)
- verify: list is empty+
- **************************************************
- /*
- сценарий - уже неплох - покрыто многое высокоприоритетное, операции распределены по разным фильтрам сравнительно равномерно
- но - его можно и нужно улучшить
- посмотри - на описание задания, на комментарии ниже, и на текст самого задания
- думаю, станет проще
- далее - поправляй список юз кейсов (фактически, это текущее задание)
- и сразу - приступай к следующему - разработай е2е тест-метод
- думаю, сведений уже достаточно чтоб браться за это)
- */
- /*
- Мы реализуем е2е сценарий для smoke покрытия
- это значит - что достаточно покрыть высокоприоритетный юз кейс лишь единожды, на одном из контекстов
- т е - покрыли edit на active - все, этого достаточно
- конечно, с добавлением таски так не получится )
- но - и того количества тасок, что ты создал - не нужно
- но с остальными операциями - это получится вполне
- задача smoke покрытия - быстро дать нам фидбек = все высокоприоритетные операции работают
- не все высокоприоритетные операции работают на всех контекстах
- а именно вот так - что они работоспособны
- дальше - если smoke тестирование пройдено - можно глубже тестировать приложение
- а если нет - так нет смысла продолжать тестировать - есть серьезные проблемы и надо их устранять
- */
- /*
- Приоритет действия высокий если
- - нерабочее действие не позволяет использовать приложение
- - у действия нет альтернативы
- - действие - часто используемое
- - действие - стандартное для многих приложений
- Примеры высокоприоритетного
- - добавление задачи - высокоприоритетная штука, потому что если отвалится - приложение не работает
- - отмена редактирования с помощью esc - во-первых, стандартное поведение, во-вторых - нет альтернативы
- - закомпличивание/раскомпличивание одной задачи - часто используемое и критично чтоб работало - важный функционал
- Так вот - низкоприоритетные вещи - в smoke-тесте не нужно покрывать.
- Чтобы оставить smoke тест эффективным
- А вот Reopen All - уже имеет приоритет пониже - т к реже будет использоваться, чем тот же reopen
- потому - reopen - стоит покрыть, а Reopen All - уже не стоит
- Проверку счетчика Items left - стоит покрыть лишь единожды. В общем-то - это не высокоприоритетная штука.
- Т к даже если это не будет работать - приложение будет все равно функционально.
- С другой стороны, на состояние этого счетчика влияет любая выполненная операция.
- Ввиду этого - в рамках е2е покроем его лишь единожды.
- http://www.tutorialspoint.com/software_testing_dictionary/priority.htm
- */
- /*
- про использование неявных проверок через действие
- вариант 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