Формальные инспекции и верификация
До этого мы тестировали программы запуская их. Но есть и другой способ найти ошибки — прочитать код и документацию глазами. Это называется статическим тестированием или инспекцией.
Сегодня мы разберём, что такое формальные инспекции, code review (обзор кода) и как они связаны с верификацией и валидацией.
План лекции
Сегодня мы разберём, как проверять код и документацию без запуска программы.
- 1 Что такое верификация и валидация
- 2 V-модель разработки
- 3 Что такое инспекция
- 4 Виды инспекций: формальные и неформальные
- 5 Этапы формальной инспекции
- 6 Code Review — обзор кода в команде
- 7 Как проводить code review
- 8 Статический анализ кода
- 9 Инструменты статического анализа
- 10 Типичные ошибки при инспекции
- 11 Итоги и практика
Верификация и валидация
Эти два термина часто путают. Но у них разные задачи.
«Правильно ли мы строим систему?»
Проверка соответствия требованиям и спецификации. Отвечает на вопрос: «Мы делаем то, что запланировали?»
«Ту ли систему мы строим?»
Проверка соответствия потребностям пользователя. Отвечает на вопрос: «Мы делаем то, что нужно пользователю?»
V-модель разработки
V-модель — это схема жизненного цикла разработки, которая показывает связь между этапами разработки и этапами тестирования.
Что такое инспекция
Инспекция (inspection) — это метод проверки кода или документации без запуска программы. Группа специалистов читает код и ищет ошибки, несоответствия и потенциальные проблемы.
Виды инспекций
Инспекции бывают разными — от простого «посмотреть код» до строгого формального процесса.
Этапы формальной инспекции
Формальная инспекция — это строгий процесс с чёткими этапами. Вот как он устроен.
Code Review — обзор кода
Code Review (обзор кода) — это процесс, при котором один или несколько разработчиков читают код коллеги и оставляют замечания.
Находит ошибки до тестирования, повышает качество кода, обучает команду.
Требует времени, может вызывать конфликты, зависит от квалификации проверяющих.
Как проводить code review
Хороший code review следует простым правилам.
- Маленькие изменения. Не проверяйте сразу 1000 строк — это утомительно. Лучше 100 строк, но внимательно.
- Понятное описание. Автор объясняет, что изменилось и зачем.
- Фокус на важном. Логика, безопасность, читаемость. Стиль лучше доверить автоматическим инструментам.
- Конструктивные замечания. «Здесь может быть ошибка, потому что…» вместо «Это плохо».
- Уважение. Code review — не место для критики личности.
Статический анализ кода
Статический анализ (static analysis) — это автоматическая проверка кода без его запуска. Специальные программы (анализаторы) читают код и ищут потенциальные проблемы.
Инструменты статического анализа
Вот несколько популярных инструментов статического анализа для Python и C++.
Типичные ошибки при инспекции
Проверять 1000 строк за раз — утомительно и неэффективно. Лучше маленькими порциями.
Забывают про логику и безопасность. Стиль — это важно, но не главное.
«Ты не умеешь программировать» — это не code review. Только конструктивные замечания.
Не понимая, зачем написан код, невозможно оценить его правильность.
Автор не знает, что исправить. Замечания должны быть конкретными.
Практическое задание
Примените полученные знания на практике.
Задание 1
Возьмите код функции (любой, например, из предыдущих практик) и проведите его «инспекцию»: найдите неиспользуемые переменные, неправильные комментарии, потенциальные ошибки.
Задание 2
Запустите статический анализатор (pylint для Python или cppcheck для C++) на своём коде. Изучите замечания.
Задание 3
Объясните своими словами, чем верификация отличается от валидации.
Шпаргалка
Сохраните этот слайд — здесь все основные понятия лекции.
Итоги лекции
Подведём итоги. Вот что вы теперь знаете.
- ✅ Верификация — «правильно ли мы строим?», валидация — «ту ли систему строим?».
- ✅ V-модель показывает связь этапов разработки и тестирования.
- ✅ Инспекция — проверка кода без запуска.
- ✅ Code Review — обзор кода коллегами. Обязательная практика в командах.
- ✅ Статический анализ — автоматическая проверка кода инструментами.
- ✅ Хороший code review — конструктивный, уважительный, сфокусированный на важном.
Домашнее задание
Задания для самостоятельной работы. Первые два обязательны, остальные — для оценки «отлично».
- Проведите инспекцию своего кода из предыдущих практик. Найдите хотя бы 3 замечания.
- Запустите статический анализатор на своём коде. Изучите замечания и исправьте хотя бы одно.
- Объясните своими словами, чем code review отличается от формальной инспекции.
- Найдите в интернете пример «плохого» и «хорошего» code review. Сравните.
- Напишите список из 5 правил, которые вы будете соблюдать при code review.
Что дальше?
В этом блоке по тестированию у нас осталось ещё два материала.
- Лекция 8: документирование и тестирование в MSF.
- Лекция 9: автоматизация тестирования и CI/CD.
Спасибо за внимание!
👀
Иногда лучший тест — это внимательный взгляд
Не все ошибки можно найти запуском программы. Иногда достаточно прочитать код и подумать.