julia_v_iluhina

Untitled

Nov 8th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.69 KB | None | 0 0
  1. package ua.net.itlabs.hw2;
  2.  
  3. ...
  4. public class TodoMVCTest2 {
  5. /*
  6.     то, что организовал отдельный пекедж для этого задания  - это ок
  7.  
  8.     но почему и в имени тест-класса - есть структурная информация?
  9.     структурную информацию - держи на уровне пекеджей
  10.     а вот имя тест-класса - формируй согласно тому - что ты тестируешь
  11.  
  12.     тут TodoMVCTest - будет ок
  13.  
  14.     http://pastebin.com/DygrzcU0
  15.     строки 3-18
  16.  
  17.     и раздел о нейминге
  18.     https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.zfcd0angknhf
  19.     весь раздел проработай )
  20. */
  21. ******************************
  22. @Test
  23.     public void testTasksLifeCycle() {
  24.  
  25.         open("https://todomvc4tasj.herokuapp.com/");
  26.  
  27.         add("task1");
  28.         edit("task1", "task1 edited");
  29.         assertTasksAre("task1 edited");
  30.         toggle("task1 edited");
  31.         /*
  32.             действие toggle("task1 edited"); - проверит предыдущее действие
  33.             ведь мы работаем с той же, причем единственной видимой таской
  34.             потому - можно toggle("task1 edited"); - использовать как неявную проверку
  35.  
  36.             а значит - проверку текстов тасок между edit & toggle - можно пропустить
  37.  
  38.             а вот после toggle("task1 edited"); - нужна проверка
  39.             ведь filterActive(); - не проверит состояние списка тасок
  40.         */
  41.  
  42.         filterActive();
  43.         /*
  44.             а тут - где проверка?
  45.         */
  46.         reopen();
  47.         /*
  48.             ты знаешь, пока я не посмотрела - как реализован метод reopen() -
  49.             мне было не ясно - что он делает и для чего он
  50.  
  51.             по сути - ты тут выполняешь действие reopen all
  52.             (reopen - это действие над одной, конкретной таской, на этом фильтре - reopen выполнить невозможно)
  53.  
  54.             подними в слеке наши диалоги -
  55.             и что есть reopen all  и reopen
  56.             а также - я тебе давала советы - по приоритетам
  57.  
  58.             reopen all  - имеет невысокий приоритет
  59.             и потому - в рамках smoke покрытия - reopen all  - вообще не нужно покрывать
  60.  
  61.             а чтобы тут, на этом фильтре, было с чем работать - добавь одну таску
  62.             собственно - ты это и делаешь дальше
  63.             ничего не мешает это действие сдвинуть сюда
  64.         */
  65.         cancelEdit("task1 edited", "task1 edit canceled");
  66.         assertTasksAre("task1 edited");
  67.         add("task2");
  68.         assertTasksAre("task1 edited", "task2");
  69.         toggle("task1 edited");
  70.         /*
  71.             complete - уже покрыто
  72.             на all фильтре
  73.             значит - более в рамках этого сценария покрывать complete - не нужно
  74.  
  75.             тоже было в слеке - что есть smoke
  76.             мы покрываем все высокоприоритетные действия, но каждое из них - лишь единожды
  77.  
  78.             в конце ревью таки приведу те же советы)
  79.             что были в слеке
  80.  
  81.             тут покрой complete all
  82.             это действие - еще не покрыто
  83.  
  84.             и далее - нужна проверка
  85.             filterCompleted(); - не проверяет список тасок
  86.             значит - нужна явная проверка
  87.         */
  88.  
  89.         filterCompleted();
  90.         /*
  91.             нужна проверка
  92.  
  93.             и перед clearCompleted - разумно покрыть reopen
  94.             reopen - нужно покрыть, и тут - самое время )
  95.  
  96.             не забывай про проверки)
  97.         */
  98.         clearCompleted();
  99.         /*
  100.             где проверка?
  101.         */
  102.  
  103.         filterAll();
  104.         assertTasksAre("task2");
  105.         delete("task2");
  106.         assertNoTasks();
  107.  
  108.     }
  109. ******************************************
  110.     add
  111.     startEdit
  112.     edit
  113.     assertTasksAre
  114.     toggle
  115.     filterActive
  116.     reopen
  117.     cancelEdit
  118.     filterCompleted
  119.     clearCompleted
  120.     filterAll
  121.     delete
  122.     assertNoTasks
  123. /*
  124.     смотри прошлое ревью
  125.     строки 181-188
  126.  
  127.     сравни - какой порядок методов сейчас использован
  128.     и как можно их упорядочить
  129.  
  130.     в упорядоченном коде - легче ориентироваться
  131.     это важно
  132.     в том числе - и во время разработки)
  133.     да и в сопровождении - тоже
  134. */
  135.     add
  136.     startEdit
  137.     edit
  138.     cancelEdit
  139.     delete
  140.  
  141.     toggle
  142.     toggleAll (вместо твоего reopen)
  143.  
  144.     clearCompleted
  145.  
  146.     filterAll
  147.     filterActive
  148.     filterCompleted
  149.  
  150.     assertTasksAre
  151.     assertNoTasks
  152. /*
  153.     сначала - базовые CRUD-операции (гугли термин)
  154.     потом - другие операции
  155.     рядом - похожие/связанные
  156.     проверки - тоже рядом
  157.  
  158.     ну и обрати внимание - я для твоего reopen
  159.     советую другое имя - согласно реализации
  160. */
  161. ******************************
  162.     private void reopen() {
  163.         $("#toggle-all").click();
  164.     }
  165.     /*
  166.         reopen = переоткрыть таску
  167.         это значит - снова сделать таску(одну) активной
  168.  
  169.         это действие - $("#toggle-all").click();
  170.         либо переоткроет все таски, либо закомплитит все таски
  171.         речь - про изменение статуса всех тасок
  172.  
  173.         и правильно - этот метод назвать
  174.         не reopenAll
  175.         не completeAll
  176.         а именно toggleAll
  177.  
  178.         причина - вот тут описана - нужна однозначность
  179.         попробуй разобраться
  180.         https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#bookmark=id.tmkuktenqqdi
  181.  
  182.         если это не понятно
  183.         то обсуди это с нами в слеке
  184.     */
  185. **********************************
  186. /*
  187.     реализуй проверку счетчика активных тасок
  188.  
  189.     это то, что ты планировал
  190.     в http://pastebin.com/yaXRt94S
  191.     вот это http://joxi.ru/KAxzGoyu4d0Bdm
  192.  
  193.     имелся в виду - вот этот счетчик
  194.     http://joxi.ru/Rmzqpx8HWq3lOr
  195.  
  196.     покрой это единожды
  197. */
  198. ****************************************
  199. /*
  200.     повторяю советы из слека
  201. */
  202.  
  203. /*
  204.     важный момент
  205.     Мы реализуем е2е сценарий для smoke покрытия
  206.     это значит - что достаточно покрыть высокоприоритетный юз кейс лишь единожды, на одном из контекстов
  207.  
  208.     т е - покрыли edit на active - все, этого достаточно
  209.     конечно, с добавлением таски так не получится )
  210.     но - и того количества тасок, что ты создал - не нужно
  211.  
  212.     но с остальными операциями - это получится вполне
  213.  
  214.     задача smoke покрытия - быстро дать нам фидбек = все высокоприоритетные операции работают
  215.     не все высокоприоритетные операции работают на всех контекстах
  216.     а именно вот так - что они работоспособны
  217.  
  218.     дальше - если smoke тестирование пройдено - можно глубже тестировать приложение
  219.     а если нет - так нет смысла продолжать тестировать - есть серьезные проблемы и надо их устранять
  220. */
  221.  
  222. /*
  223.     Приоритет действия высокий если
  224.             - нерабочее действие не позволяет использовать приложение
  225.             - у действия нет альтернативы
  226.             - действие - часто используемое
  227.             - действие - стандартное для многих приложений
  228.  
  229.                 Примеры высокоприоритетного
  230.                         - добавление задачи - высокоприоритетная штука, потому что если отвалится - приложение не работает
  231.                         - отмена редактирования с помощью esc - во-первых, стандартное поведение, во-вторых - нет альтернативы
  232.                         - закомпличивание/раскомпличивание одной задачи - часто используемое и критично чтоб работало - важный функционал
  233.  
  234.                 Так вот - низкоприоритетные вещи - в smoke-тесте не нужно покрывать.
  235.                 Чтобы оставить smoke тест эффективным
  236.  
  237.                 А вот Reopen All - уже имеет приоритет пониже - т к реже будет использоваться, чем тот же reopen
  238.                 потому - reopen - стоит покрыть, а Reopen All - уже не стоит
  239.  
  240.                 Проверку счетчика Items left - стоит покрыть лишь единожды. В общем-то - это не высокоприоритетная штука.
  241.                 Т к даже если это не будет работать - приложение будет все равно функционально.
  242.                 С другой стороны, на состояние этого счетчика влияет любая выполненная операция.
  243.                 Ввиду этого - в рамках е2е покроем его лишь единожды.
  244.  
  245. */
  246.  
  247. /*
  248.     про использование неявных проверок через действие
  249.               вариант 1
  250.               add("task1"");
  251.               edit("task1", "task1 edited");
  252.               delete("task1 edited");
  253.    
  254.               вариант 2
  255.               add("task1", "task2");
  256.               edit("task2", "task2 edited");
  257.               delete("task2 edited");
  258.    
  259.            Вариант 1 = правильное использование таких проверок через действие
  260.    
  261.            Вариант2 = не правильное использование
  262.            Т к последующие действия не проверяют состояние ВСЕХ тасок в списке
  263.    
  264.            Таким образом - ты сможешь эффективно использовать неявные проверки через действия только в случае,
  265.            если в списке тасок будет видима лишь одна таска
  266.    
  267.            Также не забывай - после каждого действия должна быть выполнена проверка
  268.            Сразу
  269.            Не получается использовать неявную проверку через следующее действие - используй явную
  270.            Но - действие должно быть обязательно проверено сразу
  271. */
Advertisement
Add Comment
Please, Sign In to add comment