... всі одиничні тести, що проходять зеленим кольором - це, мабуть, добре.
Це є хорошим. Ніякого "передбачається" про це.
Він просуває ідею про те, що код повинен бути ідеальним, а помилок не повинно існувати - що в реальному світі, безумовно, неможливо для програми будь-якого розміру.
Ні. Це доводить, що ви перевірили код, а також можете до цього моменту. Цілком можливо, що ваші тести не охоплюють кожного випадку. Якщо так, будь-які помилки з часом з’являться у звітах про помилки, і ви напишете [невдалі] тести для відтворення проблем, а потім виправте програму, щоб тести пройшли.
Неприпустимо придумати тести, які не вдасться.
Невдалі або негативні тести встановлюють чіткі обмеження щодо того, що ваша заява буде, а що не буде прийнята. Більшість програм, про які я знаю, заперечують проти "дати" 30 лютого. Також розробники, творчі типи, які ми є, не хочуть ламати "своїх дітей". Орієнтація на випадки "щасливого шляху" призводить до крихких додатків, які виходять з ладу - часто.
Для порівняння мислення розробника та тестера:
- Розробник зупиняється, як тільки код виконує те, що вони хочуть.
- Тестер зупиняється, коли вони більше не можуть зробити перерву коду.
Це кардинально різні точки зору, і багато розробників важко узгодити.
Або, звичайно, придумати тести, які було б складно виправити.
Ви не пишете тести, щоб зробити роботу для себе. Ви пишете тести, щоб переконатися, що ваш код виконує те, що він повинен робити, і, що ще важливіше, що він продовжує робити те, що повинен робити, після того, як ви змінили його внутрішню реалізацію.
- Налагодження "доводить", що код робить те, що ви хочете сьогодні .
- Випробування «довести» , що код по- , як і раніше робить те , що ви хочете , щоб в протягом довгого часу .
Якщо в будь-який момент часу всі одиничні тести проходять, то не існує великої картини стану програмного забезпечення в будь-який момент часу. Дорожньої карти / цілі немає.
Єдине тестування "малюнка" дає вам знімок, який код "працює" в той момент, коли він був протестований. Як вона розвивається після цього - це вже інша історія.
Це перешкоджає випробовуванню тестових модулів наперед - перед реалізацією.
Саме це і слід робити. Напишіть тест, який не вдається (оскільки метод, який він тестує, ще не був впроваджений), потім напишіть код методу, щоб зробити метод спрацьованим, а значить, і пройти тест. Це в основному суть розробки тестових програм.
Я б навіть припустив, що навіть випускати програмне забезпечення з невдалою тестовою одиницею не потрібно погано. Принаймні тоді ви знаєте, що деякі аспекти програмного забезпечення мають обмеження.
Звільнення коду зі зламаними тестами означає, що частина його функціональності вже не працює, як це було раніше. Це може бути навмисним дією, тому що ви виправили помилку або вдосконалили функцію (але тоді ви повинні спершу змінити тест, щоб він не вдався, потім зашифрував виправлення / удосконалення, зробивши тестову роботу в процесі). Що ще важливіше: ми всі люди і робимо помилки. Якщо ви порушите код, то ви повинні порушити тести, а ті, що порушили тест, повинні встановити дзвінки сигналізації.
Хіба це не життя у світі мрії?
У всякому разі, він живе в реальному світі , визнаючи , що розробники НЕ є ні всезнаючим , ні infallable, що ми робимо робимо помилки , і що нам потрібна безпека мережі , щоб зловити нас , якщо і коли ми робимо безлад!
Введіть тести.
І чи насправді це не стримує реального розуміння коду?
Можливо, Вам не обов’язково розуміти реалізацію чогось, щоб написати тести на це (це частина суті їх). Тести визначають поведінку та межі програми та гарантують, що вони залишаються однаковими, якщо ви навмисно не змінюєте їх.