Ви справді запитуєте, "чи допомогли б тут одиничні тести?", Чи ви запитуєте, "чи могли б тут допомогти будь-які види тестів?".
Найбільш очевидною формою тестування, яка могла б допомогти, є твердження передумови в самому коді, що ідентифікатор гілки складається лише з цифр (припустимо, що це припущення, на яке посилається кодер при написанні коду).
Тоді це могло б не вдатися до якогось тесту на інтеграцію, і як тільки будуть введені нові ідентифікатори алфавітно-числових гілок, твердження вибухає. Але це не одиничне випробування.
Крім того, може бути тест інтеграції процедури, яка генерує звіт SEC. Цей тест гарантує, що кожен реальний ідентифікатор філії повідомляє про свої транзакції (і тому вимагає введення в реальному світі, список усіх ідентифікаторів гілок, які використовуються). Тож це теж не одиничний тест.
Я не бачу жодного визначення або документації щодо залучених інтерфейсів, але можливо, тести одиниць не могли виявити помилку, оскільки пристрій не був несправним . Якщо підрозділу дозволено припускати, що ідентифікатори гілок складаються лише з цифр, і розробники ніколи не приймали рішення, що робити з коду, якщо він цього не зробив, то вони не повиннінаписати тест одиниці, щоб застосувати особливу поведінку у разі нецифрових ідентифікаторів, оскільки тест відкине гіпотетичну дійсну реалізацію блоку, який правильно обробляв буквено-цифрові ідентифікатори гілки, і зазвичай не хочеться писати тестовий пристрій, який запобігає дійсності майбутні реалізації та розширення. Або, можливо, в одному документі, написаному 40 років тому, неявно визначено (через деякий лексикографічний діапазон у сировинному EBCDIC, замість більш прийнятного для людини правила зіставлення), що 10B є тестовим ідентифікатором, оскільки він фактично падає між 089 і 100. Але тоді 15 років тому хтось вирішив використовувати його як справжній ідентифікатор, тому "несправність" не лежить у блоці, який правильно реалізує оригінальне визначення: він лежить у процесі, який не помітив, що 10B визначено як тестовий ідентифікатор, і тому його не слід призначати до гілки. Те ж саме станеться і в ASCII, якби ви визначили 089 - 100 як тестовий діапазон, а потім ввели ідентифікатор 10 $ або 1,0. Так буває, що в EBCDIC цифри надходять після літер.
Один одиничний тест (або, можливо, функціональний тест), що мислимоможливо, врятував день, це тест одиниці, яка генерує або перевіряє нові ідентифікатори гілок. Цей тест стверджує, що ідентифікатори повинні містити лише цифри, і вони будуть записані для того, щоб дозволити користувачам ідентифікаторів гілок приймати те саме. Або, можливо, десь є підрозділ, який імпортує реальні ідентифікатори гілок, але ніколи не бачить тестових, і це може бути перевірено одиницею, щоб переконатись, що він відхиляє всі тестові ідентифікатори (якщо ідентифікаторів лише три символи, ми можемо перерахувати їх усі, і порівняти поведінку валідатор до тестового фільтра для забезпечення їх відповідності, що стосується звичайного заперечення проти тестових тестів). Тоді, коли хтось змінив правила, одиничний тест був би невдалим, оскільки він суперечить новоспеченій поведінці.
Оскільки тест був там з поважних причин, то момент, коли вам потрібно його зняти через змінені вимоги бізнесу, стає можливістю для того, щоб хтось отримав роботу, "знаходимо кожне місце в коді, яке покладається на поведінку, яку ми хочемо змінити ". Звичайно, це важко і, отже, ненадійно, тому жодним чином не гарантує збереження дня. Але якщо ви захопити ваші припущення в тестах одиниці , які ви припускає властивість, то ви дали собі шанс , і тому зусилля не повністю даремно.
Я погоджуюся, звичайно, що якби пристрій не було визначено в першу чергу за допомогою "смішної форми", тестувати нічого не було б. Виразно розділити простір імен може бути важко перевірити належним чином, оскільки складність не полягає у здійсненні вашого смішного визначення, воно полягає у тому, щоб переконатися, що всі розуміють і поважають ваше смішне визначення. Це не локальна властивість одного блоку коду. Крім того, зміна деякого типу даних з "рядка цифр" на "рядок буквено-цифрових" схоже на те, щоб зробити обробку програми на основі ASCII Unicode: це буде не просто, якщо ваш код сильно пов'язаний з початковим визначенням, і коли тип даних є основоположним для того, що робить програма, тоді він часто сильно пов'язаний.
трохи заважає думати, що це значною мірою витрачає сили
Якщо тести вашого пристрою іноді не спрацьовують (наприклад, наприклад, ви рефакторинг) і надаєте корисну інформацію (наприклад, ваша зміна неправильна), зусилля не витрачалися даремно. Те, що вони не роблять, - це перевірити, чи працює ваша система. Тож якщо ви пишете одиничні тести замість того, щоб випробовувати функціональні та інтеграційні тести, можливо, ви використовуєте свій час суб-оптимально.