Advertisement
julia_v_iluhina

Untitled

Jan 29th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.25 KB | None | 0 0
  1.     public void testTaskManagementE2E() {
  2. /*
  3.     имя тест-метода - testTaskManagement - уже подразумевает некий е2е сценарий
  4.     иначе - мы бы в имени уточнили, какое действие тестируем
  5.  
  6.     так что - E2E - из имени метода убирай
  7.     без потери точности будет
  8.     но чуть лаконичнее
  9. */
  10. *************************
  11.     @Test
  12.     public void testCancelEditByESC(){
  13.         add("1");
  14.         cancelEdit("1", "1_edited");
  15.         assertTasksAre("1");
  16.         assertItemsCountIs(1);
  17.     }
  18. /*
  19.     в целом - все ок
  20.  
  21.     отошла от тест-плана - это планировала покрыть на Active фильтре
  22.     и это было бы лучше - т к равномернее
  23.  
  24.     также - можно было бы не уточнять ByESC - т к только так и можно выполнить отмену редактирования
  25.     было бы несколько вариантов - да, надо было бы уточняться
  26.  
  27.     такие моменты учти
  28.      имя фиче-теста - что тестим и на каком фильтре
  29.  
  30.         структура фиче-теста
  31.           предварительные действия
  32.           тестируемое действие
  33.           проверки
  34.  
  35.         предварительные действия начнем с комментария //given - ...
  36.         чтоб было понятно - что это предварительные действия и что за ситуацию мы в результате их получим
  37.         внутри и в конце блока предварительных действий - проверок не делаем
  38.         (мы это тут не тестируем, а используем для создания тестовой ситуации, ниже будет подробнее)
  39.  
  40.         после предварительных действий - пропустим строку
  41.         чтоб выделить - вот подготовка, вот - тестируемое действие
  42.  
  43.         проверки
  44.         сначала - более важные
  45.         затем - менее важные
  46.         (собственно - так ты и реализовал)
  47.         такой порядок - чтобы даже если тест упадет на менее важной проверке - был фидбек о важной проверке
  48.  
  49.         еще - в фиче-тестах мы можем себе позволить более интересные тестовые ситуации
  50.         например - редактирование второй таски в списке
  51.  
  52.         в итоге - с учетом этих рекомендаций - получим
  53. */
  54.     @Test
  55.     public void testCancelEditAtActive(){
  56.         //given
  57.         add("1");
  58.         filterActive();
  59.  
  60.         cancelEdit("1", "1_edited");
  61.         assertTasksAre("1");
  62.         assertItemsCountIs(1);
  63.     }
  64. *****************************************
  65.     private void assertItemsCountIs(int count) {
  66.         itemsCount.shouldHave(exactText(Integer.toString(count)));
  67.     }
  68. /*
  69.     я б немного имя метода подравняла
  70.     не ясно - что за Items (на User Interface - термин items count используется, и его стоит и нам использовать без сокращений)
  71.     CountIs - на этом можно сэкономить), дальше параметр поясняет - что мы проверяем
  72.     assertItemsLeft - будет точнее
  73. */
  74. ***********************************************
  75.     private void assertNoItems() {
  76.        itemsCount.shouldNotBe(visible);
  77.     }
  78. /*
  79.     а вот тут лучше быть точнее - в имени метода
  80.  
  81.     ItemsLeft - по-прежнему применяем
  82.     а дальше - точнее лучше быть
  83.     не assertNoItemsLeft
  84.     a  assertItemsLeftIsHidden
  85.  
  86.     так мы точнее опишем - что проверяем
  87.  
  88.     я бы кстати - вообще бы такую проверку не реализовывала
  89.     т к это еще менее важная проверка
  90.     не настаиваю
  91.  
  92.     а если добавить в предварительных действиях 2 таски
  93.     то и после удаления таски - будет что проверить - я про ItemsLeft
  94. */
  95. ********************************************
  96. /*
  97.     порядок методов
  98.  
  99.     технически - безразлично какой
  100.     но - можно код сделать проще воспринимаемым
  101.  
  102.     вначале - общие вещи, before/after методы,
  103.     то, что отражает общую логику тест-класса
  104.  
  105.     потом - сами тест-методы (все)
  106.  
  107.     дальше - уже вспомогательное
  108.     переменные используемые и методы вспомогательные
  109.     их тоже лучше компоновать с какой-то логикой
  110.     сначала - действия, потом - проверки
  111.     сначала - базовое, потом - остальное
  112.     рядом - аналогичное или противоположное
  113.  
  114.     такой подход позволяет код проще воспринимать, быстрее в нем разбираться
  115.     и еще - можно увидеть какие-то несостыковочки мелкие, увидеть - что можно улучшить еще
  116.  
  117.     также не забывай про реформатирование кода
  118.     есть немного моментов
  119.        в IntelIJ Idea
  120.         выдели код
  121.         в меню(верхнем) - выбери пункт  - Code->Reformat code
  122.  
  123.         советую завести привычку - в конце работы - обязательно форматировать код
  124.         вероятнее всего, ты будешь работать в команде, и твой код будут смотреть другие специалисты
  125.         им проще смотреть на стандартно отформатированный код (как правило)
  126.         иногда у команды есть свои правила форматирования, которые чуть отличатся от стандартных.
  127.         Если все сделано по уму, то у всех членов команды в IntelIJ Idea именно так и настроено форматирование кода.
  128.         Т е - все равно - привычка реформатировать код - нужна
  129.  
  130.         https://www.jetbrains.com/help/idea/2016.3/reformatting-source-code.html
  131. */
  132. ***************************************
  133. /*
  134.  
  135.     Это к общему сведению)
  136.    
  137.     Есть разные способы выполнять предварительные действия
  138.     Мы сейчас делаем это через действия на UI (User Interface)
  139.     А есть еще методы - работать непосредственно с данными (далее вы такое тоже попробуете)
  140.     Так вот через действия на UI - предварительные действия не быстрые и часто не достаточно надежные
  141.     А через непосредственную работу с данными - предварительные действия быстрые и надежные
  142.    
  143.     Если предварительные действия медленные или не надежные
  144.     То проверка в конце предварительных действий нужна
  145.    
  146.     А если мы уверены - что после предварительных действий гарантировано все ОК,
  147.     то и проверок не надо после предварительных действий    
  148.    
  149.     Но, поскольку наше приложение - простое
  150.     Разумно не делать проверку в конце предварительных действий
  151.     чтобы наши тесты были эффективнее
  152.    
  153.     Тестировали бы что-то типа соцсети и если бы предварительные действия были
  154.     реализованы через UI - да, после предварительных действий было бы разумно
  155.     выполнить проверку (проверка после предварительных действий нам позволяет отличить -
  156.     ошибка возникла на этапе выполнения тестируемого действия, или все же раньше)
  157.    
  158.    
  159. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement