Повторною темою, на яку я потрапив у своїй кар’єрі, є те, що новий розробник приїде в команду і швидко відчуває недовіру до існуючих підрозділів та інтеграційних тестових наборів.
Під час інтерв'ю керівництву вам кажуть, що вони "наполегливо підтримують тестування підрозділів" і що вони відкрито заохочують це. Вони так роблять, але все про самі тести - це просто неправильно. Як і те, що вони претендують на 100% покриття, коли є 100% охоплення тестом на інтеграцію, але менше ніж 10% покриття повторюваного блоку. Я знайшов деякі інші проблеми:
Немає чітких ознак між тим, що є одиничним тестом, і що таке тест на інтеграцію. Одиничні та інтеграційні тести змішуються разом в одному класі.
Інтеграційні тести, які мають незадекларовані явні залежності від дуже конкретних динамічних даних у базі даних конкретного середовища.
Тести на трансакційну інтеграцію - це, в основному, тести, які можуть або не вимагатимуть очищення після себе, іноді вимагає ручного "очищення" бази даних, щоб зробити тест повторюваним.
Ніякого глузування, і код програми не потребує капітального ремонту лише для того, щоб бути можливим глузування. Іншими словами, дизайн без тестування на увазі.
Немає чітких угод про іменування, щоб швидко переглянути ім'я тесту та приблизно визначити, які тести робляться.
Це все не означає, що ВСІ тести марні чи погані, багато з них є досить хорошими та їх варто зберігати, але відчуває, що іноді панірує золото. Я б навмисно уникав запускати тести лише тому, що боявся викрутити базу даних для моїх тестових кейсів.
Це, по суті, викликало в мене властиву недовіру одиничним та інтеграційним тестам, які я особисто не писав і не переглядав якимось чином. На певному рівні, якщо ви не вірите в якість тестового набору, це дійсно не приносить ніякої цінності для команди чи проекту.
Що ви робите, опиняючись у цій ситуації? Як ви вважаєте, що найкращим планом нападу було б вирішити щось подібне?
Чи повинні бути відремонтовані всі тести, щоб уникнути монументальних зусиль, що охоплюють релізи? Чи варто просто відмовитися від думки, що цей застарілий проект може мати одноденне тверде тестове покриття?