Одиничні тести під час перегляду коду є поганою заміною одиничних тестів під час розробки.
Те, що ви пропонуєте, має багато сенсу, інтуїтивно. Який огляд? Щоб перевірити, чи добре код. Для чого призначені тести? Щоб перевірити, чи добре код. То чому б не поєднати два?
Ось чому.
Наведення коду під тестом - важка робота. Написання коду, який просто працює на одне, що це призначено робити, - це одне; написання коду, який можна ефективно та ефективно перевірити - це ще один. Саме той факт, що код зараз працює за двома сценаріями - "реальна робота" і "тест", вимагає значно більшої гнучкості, вимагає, щоб цей код міг самостійно стояти самостійно.
Написання коду таким чином, щоб його можна було перевірити - це зайва робота та вміння. Повторне кодування чужого коду для перевірки, коли воно не було написано з початку, може бути головним завданням.
Ви дублюєте зусилля між розробником та рецензентом. Імовірно, ваш розробник не передає свій код на розгляд, хоча б якийсь рівень впевненості, що він працює. Йому вже потрібно перевірити код. Зараз існують різні рівні та сфери тестування. QA перевіряє код після розробника та рецензента. Але яку б сферу ви не вважали підходящою для розробника та рецензента, немає сенсу розробнику придумувати, як тестувати код на цьому рівні один раз , а зробити його тести кинутими і важкими для відтворення, а потім залучити рецензента до знову розробити тест, цього разу автоматизовані та відтворювані. Ви просто вдвох вкладаєте час на написання одних і тих же тестів - раз погано, раз добре.
Ви перетворюєте огляд на набагато довший, більш трудомісткий крок. Якщо тестування є основною частиною процесу огляду, що станеться, коли деякі тести виходять з ладу ? Чи відповідальний рецензент за тестування всіх тестів, тому їй також потрібно налагодити код? Або це буде пінг-орієнтуванням вперед-назад, одні пишуть тести, а інші змушують їх здати?
Іноді ви можете написати цілу купу тестів, які є ортогональними один одному, тому вам не потрібно робити пінг-понг. Рецензент пише десяток тестів, половина з них виходить з ладу, розробник виправляє помилки, а всі тести залишаються дійсними і проходять зараз. Але ... багато часу, у вас є помилки блокатора чи помилки, які потребують перепроектування та зміни API, чи нічого. Якщо ви несете відповідальність за тестування тестів назад і назад між рецензентами та розробниками, то ви фактично не перебуваєте на етапі огляду. Ви все ще розвиваєтеся.
Необхідність писати тести не сприяє більш ретельному перегляду. Це в основному означає, що чим глибше ви проходите, тим більше тестів доведеться написати, і, ймовірно, це будуть важкі тести, які потрібно заглибитись у систему.
Порівняйте розробника, який пише тести, де його стимул: якщо я не напишу важливих тестів, рецензент зазначить це в рецензії.
Навіть рецензент матиме набагато краще розуміння системи, якщо їй потрібно пройти ретельне тестування коду , тоді, якщо їй потрібно вирішити для себе, коли вона зможе перестати писати тест на глибоке копання і просто добре перевірити код.
Якщо розробник не пише тестові одиниці, рецензент також не буде. Існує багато перешкод для прийняття тестування як звичайної практики. Можливо, ти занадто сильно тиснеш, і твою базу коду важко перевірити. Можливо, ви не настільки досвідчені в тестуванні і відчуваєте, що не можете дозволити собі криву навчання. Можливо, у вас вбивця сокир надсилає погрозливі записки людям, які пишуть тести. Не знаю!
Але якою б не була причина, можна сміливо робити ставку, що вона однаково стосується рецензента та розробника. Якщо команда підкреслена, у рецензента немає більше часу, ніж розробник (якщо вона є, перерозподіліть роботу, щоб люди не були настільки напружені ). Якщо ніхто не знає, як правильно написати одиничні тести, рецензент, мабуть, теж не робить (якщо це так, вона повинна сісти і навчити своїх колег ).
Ця пропозиція звучить як спроба передати долар від одного колеги іншому. І я просто не бачу жодного способу, щоб це добре вийшло, в першу чергу, тому що справді важко (і нездорово) створити ситуацію, коли одна людина єдина, яка може зробити тестування, а інша людина не може зробити будь-яке тестування взагалі.
Що робить роботу - це тести на оглядове покриття. Якщо розробник вже написав десять тестів, набагато більше шансів, що рецензент може допомогти запропонувати ще десять, ніж якщо розробник не написав жодного.
І якщо тестування кутових випадків є головним завданням, можливо, має сенс розповсюдити це ширше по всій команді. ** Як тільки код перевіряється в першу чергу, писати більше тестів стає набагато простіше. **
Огляд - чудовий час для виявлення кутових справ. І якщо рецензент може зайти і написати тест на кутові справи, які вона знайде, то ей - ще краще! Але взагалі кажучи, якщо припустити, що рецензент може писати тести, де розробник не звучить як дуже погана ідея.