Тестирование. Виды тестирования в программировании -- что это в программировании

Тестирование -- процесс проверки (разными способами) кода программы наличие в нём ошибок разных видов.

Виды тестирования (способы)

Тут эпиграф:

...сколько разработчиков, столько и определений разных видов тестов
- цитата из Сети

Вообще здесь всё действительно довольно мутно и строгих ясных определений нет, но тем не менее ниже кратко основные идеи.

По масштабу тестируемого:

  1. Модульные (unit-тесты) -- тестирование небольших частей, минимальных единиц кода -- например 1 функции или метода. Обычно модульное тестирование интересует программистов.
  2. Функциональное тестирование -- тестирование более крупного масштаба, где может проверяться одна из глобальных функций приложения (напр. система авторизации) тут тестируемые результат может быть плодом взаимодействия целой группы функций/классов.

    Код теста (если он автоматический) может вызывать эти функции по очереди, сохраняя промежуточные результаты. Т.е. эта ситуация уже сложнее модульного тестирования "кирпичиков".
    К этому же уровню относится "приёмочное" тестирование.

По уровню автоматизации все тесты можно разбить на два класса (которые сами делятся на разные виды):

  1. Ручное тестирование -- тестировщик делает действия -- те же самые что будет делать конечный пользователь программы). Ручным может быть в том числе и приёмочное тестирование
  2. Автоматическое тестирование -- специально написанная программа (код) запускает части другой программы (другой код), проверяя корректность результатов.

Пример из жизни -- Виды тестирования в программировании

Поясним ещё раз на примере из жизни, если вдруг пользователь не может войти в систему, то:

  1. это значит, что функциональное ручное тестирование, показало, что одна из функций приложения не работает
  2. что в свою очередь означает, программист будет вынужден проверить уже отдельные части ("модули") системы авторизации -- т.е. например, проверить, правильного ли типа значения возвращает одна из функций (этот процесс можно упростить заранее написав для сложной функции unit-тест) --- а это уже модульное тестирование.

Вывод

Таким образом:

  • функциональное тестирование происходит всегда (если приложение уходит в работу) -- но желательно конечно его делать до отправки "в плавание"
  • а модульное -- зависит от аккуратности программистов (желательно делать его заранее, тогда и некоторых проблем на функциональном уровне удастся избежать автоматически)