Моя відповідь, яка, мабуть, спочатку досить дивна, була б така: ви не знаходите часу для тестування, оскільки ви думаєте, що тестування повинно проводитися на побічні ефекти коду. І під побічним ефектом я маю на увазі термін інформатика :
Кажуть, що функція (...) має побічний ефект, якщо крім повернення значення вона також (...) має спостережувану взаємодію із (...) зовнішнім світом.
Я запропонував цитату, щоб підкреслити частину "взаємодії із зовнішнім світом": ви хочете, щоб тестування відбувалося в інтерфейсі користувача, оскільки воно друкується на екрані ("[для початку тестування] насправді неможливо, оскільки вам, як правило, потрібен функціонал Інтерфейс користувача для запису або створення автоматизованих тестів з ").
Інші відповіді казали вам автоматизувати це "тестування прийняття", щоб воно могло відбутися швидко. Це правильно, але повністю не вирішує вашу первісну проблему: що робити, якщо не вистачить часу для написання цих тестів на прийняття?
Ви повинні відпустити тестування тестування, коли код взаємодіє із зовнішнім світом, тобто він надрукував щось і очікує певного введення. Проблема з побічними ефектами полягає в тому, що вони, по суті, не визнаються. Це мені зоріло, читаючи інтерв'ю з Гвідо ван Россумом, де він сказав, що твердження, що вимикає комп’ютер, може бути доведено, що воно працює лише виконавши його.
Рішення цієї "нестабільності" полягає в тому, щоб зрозуміти, що якщо ви один раз довели, що твердження працює, ви можете використовувати його всюди і покладатися на нього, щоб зробити свою роботу. Виділіть його у функції та протестуйте все інше .
Наблизивши цей приклад до вашого запитання, тепер функція, ймовірно, є цілою бібліотекою чи рамкою, і замість того, щоб вимикати комп’ютер, він виводить щось із зображення: інтерфейс користувача. Зберігайте дзвінки до нього максимально глухими та максимально стабільними , оскільки, як тільки ви введете ту частину своєї заявки, ви можете протестувати лише за допомогою дорогих тестів прийняття, тобто якихось зовнішніх спостережень.
Розглядати інтерфейс як "чужу територію" - це насправді правильна точка зору, оскільки вам не потрібно перевіряти логіку бібліотеки, яка не надана вами, і, можливо, дивно, це реалістична точка зору: чи справді ви очікуєте коли-небудь перевірити, що дзвінок, наприклад, MyWidget.draw()робить те, що ви очікуєте, на рівень одного пікселя?
Це не означає, що приймальне тестування не важливе або що його можна пропустити. Саме там залишатися і автоматизувати його, як підказують інші відповіді, має величезні переваги. Але якщо ви хочете знайти час для тестування та кодування в одному спринті, намагайтеся зберегти свій код максимально вільним від побічних ефектів.