Мій досвід із здійснення переходу
Протягом багатьох років я знав, що мені не вистачало часу, щоб написати модульні тести для свого коду. Коли я писав тести, вони були роздуті, важкі речі, які лише спонукали мене думати, що я повинен коли-небудь писати одиничні тести, коли я знав, що вони потрібні.
Нещодавно мені запропонували використовувати тестові розробки, і я виявив, що це повне одкровення. Зараз я твердо переконаний, що не маю часу не писати одиничні тести .
На мій досвід, розвиваючи тестування на увазі, ви закінчуєте більш чисті інтерфейси, більш цілеспрямовані класи та модулі та, як правило, більше SOLID , тестовий код.
Кожен раз, коли я працюю зі застарілим кодом, який не має одиничних тестів, і потрібно щось тестувати вручну, я продовжую думати, "це було б набагато швидше, якби цей код вже мав одиничні тести". Кожен раз, коли мені потрібно спробувати додати функціональність тесту для одиниць до коду з високою зв'язкою, я продовжую думати, "це було б набагато простіше, якби це було написано розв'язаним способом".
Порівняння та порівняння двох експериментальних станцій, які я підтримую. Один існує вже деякий час і має багато застарілого коду, а інший відносно новий.
Додаючи функціональність до старої лабораторії, часто трапляється потрапляти в лабораторію і витрачати багато годин, працюючи над наслідками необхідної їм функції, і як я можу додати цю функціональність, не впливаючи на будь-яку іншу функціональність. Код просто не налаштований, щоб дозволити тестування в режимі офлайн, тому майже все повинно бути розроблено в режимі он-лайн. Якби я намагався розвивати офлайн, то в кінцевому підсумку я мав би більше макетних об'єктів, ніж було б розумно.
У новій лабораторії я, як правило, можу додати функціональність, розвиваючи його в режимі офлайн за моїм столом, глузуючи лише ті речі, які негайно потрібні, а потім лише провести короткий час у лабораторії, випрасувати будь-які інші проблеми, не усунуті -лінія.
Моя порада
Здається, що ви почали добре, щоразу, коли ви збираєтеся внести великі зміни у свій робочий процес у розробці, ви повинні переконатися, що всі люди беруть участь у прийнятті цього рішення, а в ідеалі - більшість людей придбали його. З вашого запитання, схоже, ви це правильно зробили. Якщо люди не мають ентузіазму до ідеї, вона приречена або на провал, або на породження поганої волі.
Якщо ви не зможете представити переконливий бізнес-кейс, я б не рекомендував ґрунтовну реалізацію одиничних тестів та специфікацій для всієї вашої системи. Як я вже згадував вище, якщо система не розроблена з урахуванням тестування, скласти автоматизовані тести для неї може бути дуже важко.
Натомість я б рекомендував починати з малого та використовувати правило хлопчика-скаута :
Завжди залишайте кемпінг чистішим, ніж ви знайшли.
Якщо ви впроваджуєте щось на цій кодовій базі, ви можете ідентифікувати конкретні тести, необхідні для тестування існуючої поведінки та переходу від старої поведінки до нової, тоді ви обидва задокументували зміну специфікації та почали впроваджувати тести одиниць для ваша система.
Модулі, до яких ви не торкаєтесь, не отримують тестових одиниць, але якщо ви не торкаєтесь їх, то, мабуть, тому, що вони вже ретельно перевірені у використанні і не потребують змін, або ніколи не використовуються.
Чого ви хочете уникнути, це витратити цілий набір зусиль розробника на написання тестів, які ніколи не знадобляться ( YAGNI працює так само добре, як і для тестового коду, як і для виробничого коду * 8 '), ніколи не буде використовуватися знову і деморалізувати людей у думаючи, що тести зрештою марні.
Підсумок
Почніть з малого, поступово будуйте довіру до тестів та отримуйте ділову цінність, розробляючи тести, коли і де вони найбільше виграють вашій команді.