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