Як довго ми зазвичай витрачаємо на тестування одиничних тестів на нову функцію чи виправлення помилок?


9

Коли мені доводиться реалізовувати нову функцію або виправляти помилку, я зазвичай намагаюся відтворити ситуацію за допомогою тесту. Я десь витрачаю близько 3 годин, придумуючи світильники та пишучи тест. Фактична реалізація функції або виправлення помилок займає менше 1 години.

Хтось там витрачає принаймні 3 рази довше, щоб написати тест порівняно з реальною реалізацією функції або виправленням помилки? Яке прийнятне співвідношення витраченого часу на написання тесту на написання коду?


2
Подумайте про це так: чи виправлення помилки займе менше години, якби у вас не було тесту, щоб підтвердити його існування, значно менше було виправлено?
Майкл К

2
Відповідь на заголовок запитання: Скільки часу потрібно.
Marcelo

3
Я думаю, що рабська послух принципам TDD незалежно від вартості чи цінності бізнесу - це завжди правильна відповідь.
Джеремі

Як ви розглядаєте випадок, коли ваш менеджер бажає, щоб ви виправили виправлення як можна швидше і не можете чекати додатковий день, щоб повністю перевірити реалізацію?
Тьєррі Лам

2
Зазвичай я пояснюю вартість невиконання тесту. Тобто, я можу відправити виправлення вже зараз, але якщо ми не напишемо тест, нам доведеться все зробити знову пізніше. Деколи вони в порядку з цією майбутньою вартістю, але зазвичай ми пишемо тести.
Крістофер Біббс

Відповіді:


12

Це залежить від складності помилки або особливості. Я пригадую один проект, який колись мав оцінку протягом тижня розвитку за 1,5 тижня ... і 3-місячну тестову оцінку. Зміна коду була невеликою, кілька рядків тут і там, але це впливало на ряд компонентів страхової системи різними способами, тому довелося перевірити дуже ретельно. Іншим разом з’явилася помилка, яка залучала дужки в неправильному місці. Щоб знайти його, знадобилося 2 години, 2 секунди, щоб виправити це, але близько тижня, щоб перевірити десятки сценаріїв, на які може вплинути зміна логіки.

Взагалі, я не переживаю за співвідношення витраченого часу на кодування до тестування часу, оскільки просто немає способу бути точним. Я вважаю, що в деяких проектах з'являється відношення до проекту, яке зазвичай є стандартним (до проекту), але навіть тоді це може змінитися згодом.

Витратьте стільки часу, скільки потрібно, щоб впевнено сказати, що код працює належним чином.


6

Як щодо того, що ви витрачаєте достатньо часу на написання тестів, поки ви не покажете, що функція працює за призначенням, або помилка не виправлена ​​правильно.

Кожна ситуація буде різною; не може бути якесь співвідношення Деякі тести займуть десяту частину часу, ніж реалізація, інші забирають у сотні разів більше часу.


Це справжня відповідь.
DJClayworth

4

Я колись робив опитування після впровадження тестових модулів у проект. Результат: час, витрачений на написання тестів, знову склав приблизно 40% стільки, скільки витратив час на виконання. Але ми не прагнули до повного висвітлення там, і це був налагоджений проект із сильною структурою та конвенціями.



0

Чи правильно ви рахуєте? Для того щоб зробити точний облік того, скільки часу ви витрачаєте на тести, вам потрібно написати код без тесту.

Якщо для написання тесту вам знадобилося три години, а один - для написання коду для його проходження, то, можливо, вам знадобиться 5+ годин, щоб виправити ту саму помилку без написання тестів.

Так, я дуже часто витрачаю на тест набагато більше часу, ніж фактичний код виправлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.