Припустимо, одна мала порівняно велику програму (скажімо, 900k SLOC у C #), всі коментували / документували ретельно, добре організовано та працювали добре. Вся база коду була написана одним старшим розробником, який більше не працює з компанією. Весь код перевіряється таким, як є, і IoC використовується протягом усього періоду - за винятком якоїсь дивної причини, вони не писали жодних одиничних тестів. Тепер ваша компанія хоче розгалужувати код і хоче додавати одиничні тести, щоб виявити, коли зміни порушують основну функціональність.
- Чи додавання тестів є гарною ідеєю?
- Якщо так, то як би взагалі почати щось подібне?
EDIT
Гаразд, тому я не очікував відповіді, роблячи хороші аргументи для протилежних висновків. Проблема в будь-якому випадку може не вийти з мене. Я також читав "дублюючі питання", і загальний консенсус полягає в тому, що "написання тестів добре" ... так, але не надто корисно в даному конкретному випадку.
Я не думаю, що я тут один, роздумуючи над написанням тестів для спадкової системи. Я збираюся зберігати показники про те, скільки часу витрачається і скільки разів нові тести виявляють проблеми (і скільки разів їх немає). Я повернусь і оновлю це через рік або близько того з моїми результатами.
ВИСНОВОК
Так виходить, що в принципі неможливо просто додати одиничний тест до існуючого коду з будь-якою подобою ортодоксальності. Після того, як код працює, ви, очевидно, не можете червоне світло / зелене освітлення ваших тестів, зазвичай не зрозуміло, які поведінки важливо перевірити, не зрозуміло, з чого почати, і звичайно не зрозуміло, коли ви закінчите. Дійсно, навіть задавши це питання, в першу чергу пропускає головний пункт написання тестів. У більшості випадків мені було легше переписати код за допомогою TDD, ніж розшифрувати призначені функції та заднім числом додати в модулі тести. Коли виправляєте проблему або додаєте нову функцію, це вже інша історія, і я вважаю, що саме час додати одиничні тести (як деякі вказували нижче). Врешті-решт більшість кодів переписується, часто швидше, ніж ви очікували - використовуючи такий підхід, я '