Тестування коду для чайників, geekbrains - навчальний портал для програмістів
Кожен програміст, який тільки робить перші кроки в професії, неминуче стикається з поняттям «тестування коду». Інтуїтивно зрозуміло, що це процедура, спрямована на пошук помилок, невідповідності заявлених даних та виконуваних, оцінку функціональності програми. Однак, що конкретно мається на увазі під тестуванням, які існують види і чи треба вам осягати цю непросту науку? Спробуємо розібратися разом.

Ось 5 основних видів тестування і їх короткі описи:
Юніт-тести - перевірка працездатності кожного окремого блоку вашого коду. Це самий зрозумілий вид тестування навіть для початківців, адже тут йде облік лише тих процесів, які виконуються виключно всередині окремо взятої ділянки коду. Наприклад, створюючи блок для введення імені в формі реєстрації, вас цікавить лише відповідність мови, відсутність цифр і спецсимволов. Юніт-тести часто використовують TDD (Test-driven development) методологію для написання коду, де ви спочатку створюєте методику перевірки (власне сам тестовий модуль) і тільки потім пишіть виконуваний код.
Приймальне тестування - виконувані процедури для встановлення факту відповідності вимогам замовника. Актуально в тих випадках, коли вимоги до коду і працюючому застосуванню описані замовником в ТЗ або в будь-який інший письмовій формі. На підставі цього створюється або сценарій, або простий перебір окремих значень, щоб наочно показати можливість виконання поставленого завдання. В окремому випадку, це звичний нам demo-mode, що демонструє можливості ПО.
Регресійне тестування - оцінка працездатності вже перевіреного коду після внесення в нього змін. Актуально для динамічних систем, де поява нових даних може реально вплинути на працездатність всієї коди. Логічно, що для елементарного заповнення БД створювати регресійне тестування не має сенсу, але для повноцінного ПО в стані вічної доопрацювання - цілком.
Системне тестування - це власне кінцева обкатка вашого застосування. Як правило виконується в ручному режимі «наукового тику». Але є і автоматизовані методи, як з простим перебором, так і алгоритмічним підходом.
Цей поділ на види умовно і в різних джерелах приймає різні форми. Так, часто під системним тестуванням розуміють також приймальне тестування, а регресійні відносять до інтеграційного.
необхідність
Чи повинен кожен програміст володіти прийомами створення тестів? Безумовно, якщо він хоче досягти певних висот, то вміти застосовувати готові модулі (фреймворки і бібліотеки) просто необхідно. Що стосується створення тестів з нуля будь-якої складності, то це досить складне і комплексне захоплення, яке цілком може стати вашою новою професією.

література
Щоб не винаходити велосипед заново, найкраще звернутися до перевірених роками джерел тестової мудрості: