julia_v_iluhina

Untitled

Aug 1st, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.13 KB | None | 0 0
  1.     @Test
  2.     public void testTasksLifeCycle() {
  3.     /*
  4.         см прошлую работу - я писала про проверку assertItemsLeft в е2е
  5.         или единожды покрой, или вообще не делай этого в е2е -
  6.         т к в фиче-тестах это покроем
  7.  
  8.         специально убрала из приведенного кода метода эту проверку
  9.         т к очень тяжело следить за логикой е2е - очень отвлекает
  10.     */
  11.  
  12.         addTasks("a");
  13.         assertTasksAre("a");
  14.         toggleAllTasks();
  15.         /*
  16.             нужна проверка
  17.         */
  18.  
  19.         filterActive();
  20.         assertVisibleTasksListIsEmpty();
  21.         addTasks("b");
  22.         toggleTask("b");
  23.         assertVisibleTasksListIsEmpty();
  24.  
  25.         filterCompleted();
  26.         assertVisibleTasksAre("a","b");
  27.         //Activate
  28.         toggleTask("a");
  29.         assertVisibleTasksAre("b");
  30.         clearCompleted();
  31.         assertVisibleTasksListIsEmpty();
  32.  
  33.         /*
  34.             ни в рамках е2е, ни в фиче-тестах - не покрыт переход на all фильтр
  35.             в тест-плане - не было информации о том, что эта операция уходит из е2е
  36.  
  37.             поправь это
  38.             проше всего - тут перейти на all
  39.             и проверить - что таска а еще есть
  40.         */
  41.     }
  42. ************************************************
  43.     @Test
  44.     public void testTaskDelete() {
  45.         addTasks("a","b");
  46.         filterActive();
  47.         assertItemsLeft(2);
  48.         /*
  49.             после предварительных действий - не нужно проверок
  50.         */
  51.         deleteTask("a");
  52.         assertItemsLeft(1);
  53.         /*
  54.             assertItemsLeft - недостаточная проверка после действия
  55.         */
  56.         deleteTask("b");
  57.         assertTasksListIsEmpty();
  58.         /*
  59.             в рамках фиче-теста  - достаточно лишь единожды покрыть тестируемое действие
  60.             в рамках smoke покрытия - тоже - это лишнее
  61.         */
  62.     }
  63.  
  64. /*
  65.     разберем на примере одного фиче-теста его реализацию и оформление
  66. */
  67. /*
  68.     имя фиче-теста - что тестим и на каком фильтре
  69.  
  70.     структура фиче-теста
  71.       предварительные действия
  72.       тестируемое действие
  73.       проверки
  74.  
  75.     предварительные действия начнем с комментария //given - ...
  76.     чтоб было понятно - что это предварительные действия и что за ситуацию мы в результате их получим
  77.     внутри и в конце блока предварительных действий - проверок не делаем
  78.     (мы это тут не тестируем, а используем для создания тестовой ситуации, ниже будет подробнее)
  79.  
  80.     после предварительных действий - пропустим строку
  81.     чтоб выделить - вот подготовка, вот - тестируемое действие
  82.  
  83.     проверки
  84.     сначала - более важные
  85.     затем - менее важные
  86.     такой порядок - чтобы даже если тест упадет на менее важной проверке - был фидбек о важной проверке
  87.  
  88.     еще - в фиче-тестах мы можем себе позволить более интересные тестовые ситуации
  89.     например - редактирование второй таски в списке
  90.  
  91.     в итоге - с учетом этих рекомендаций - получим
  92. */
  93.    @Test
  94.     public void testDeleteAtActive() {
  95.         //given
  96.         add("a","b");
  97.         filterActive();
  98.  
  99.         delete("a");
  100.         assertTasksAre("b");
  101.         assertItemsLeft(1);
  102.     }
  103. /*
  104.     Также в примере - не использовала Task/Tasks в именах тест-методов и вспомогательніх методов-действий
  105.     Я помню про твое мнение про это
  106.  
  107.     Настаивать не буду, хотела  показать более лаконичный вариант кода
  108.  
  109.     Если используешь в именах Task/Tasks - логику одну и ту же применяй
  110.     В том числе это касается и порядка слов в названиях методов
  111.  
  112.     Эти приемы - примени ко всем фиче-тестам, что ты реализовал
  113. */
  114.  
  115. *********************************************************
  116.     @Test
  117.     public void testTaskCancelChanges(){
  118.         ...
  119.         startEditTask("a", "a edit canceled").pressEscape();
  120.         ...
  121.     }
  122.  
  123.     @Test
  124.     public void testTaskUpdate(){
  125.         ...
  126.         startEditTask("a", "a edit").pressEnter();
  127.         ...
  128. /*
  129.     Для одного понятия используй один термин
  130.  
  131.     сейчас = редактирование = edit или update или что-то про changes
  132.    
  133.     Надо остановиться на одном термине для понятия редактирование
  134.  
  135.         testCancelEditTask...
  136.         testEditTask...
  137.         startEditTask
  138.    
  139.         или
  140.    
  141.         testCancelUpdateTask...
  142.         testUpdateTask...
  143.         startUpdateTask
  144.  
  145.     обрати внимание на последовательность слов в именах - она тоже одна - что делаем +  с чем делаем + ...
  146. */
  147.  
  148. /*
  149.  
  150.     Это к общему сведению)
  151.  
  152.     Есть разные способы выполнять предварительные действия
  153.     Мы сейчас делаем это через действия на UI (User Interface)
  154.     А есть еще методы - работать непосредственно с данными (далее вы такое тоже попробуете)
  155.     Так вот через действия на UI - предварительные действия не быстрые и часто не достаточно надежные
  156.     А через непосредственную работу с данными - предварительные действия быстрые и надежные
  157.  
  158.     Если предварительные действия медленные или не надежные
  159.     То проверка в конце предварительных действий нужна
  160.  
  161.     А если мы уверены - что после предварительных действий гарантировано все ОК,
  162.     то и проверок не надо после предварительных действий
  163.  
  164.     Но, поскольку наше приложение - простое
  165.     Разумно не делать проверку в конце предварительных действий
  166.     чтобы наши тесты были эффективнее
  167.  
  168.     Тестировали бы что-то типа соцсети и если бы предварительные действия были
  169.     реализованы через UI - да, после предварительных действий было бы разумно
  170.     выполнить проверку (проверка после предварительных действий нам позволяет отличить -
  171.     ошибка возникла на этапе выполнения тестируемого действия, или все же раньше)
  172.  
  173.  
  174. */
Advertisement
Add Comment
Please, Sign In to add comment