Теория тестирования игр
Last updated
Last updated
Минимизация количества дефектов
Максимизация скорости обнаружения дефектов
Когнитивный, метод познания, обучения
Стандарты кодирования
Обзоры кода (code review) Google C++ Style Guide
Статический анализ кода CPP Check Статический анализ исходного кода UE от PVS-Studio
Тестирование
Тестирование — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом. (Wiki)
Unit (модульное, блочное компонентное)
Процесс исследования ПО, выполняемое в изоляции от остальных частей системы, при котором тестируется минимально возможный компонент, отдельный класс или функция.
Интеграционное
Процесс исследования ПО, при котором тестируется интерфейсы между компонентами или подсистемами. Это совместное выполнение двух или более классов, компонентов или подсистем.
Системное
Процесс исследования ПО в его окончательной конфигурации, интегрированного с другими программными и аппаратными системами. Предметом тестирования в этом случае являются безопасность, производительность, утечка ресурсов, проблемы синхронизации и прочие аспекты, которые невозможно протестировать на более низких уровнях интеграции.
Функциональное тестирование
Тестирование производительности
Тестирование стабильности
Сетевое тестирование
Тестирование безопасности
Регрессионное
Повторное выполнение тестов, направленное на обнаружение дефектов в программе, уже прошедшей этот набор тестов.
Smoke тестирование
Mинимальный набор тестов на выявления явных ошибок. Программу, которая не проходит этот тест, не имеет смысла отдавать на более глубокое тестирование.
alpha
beta
Белый ящик
Черный ящик
Ручное
Автоматическое
Предотвращение дефектов
Обнаружение дефектов
Документация пред и пост условий
Защита кода от других разработчиков
Проведение рефакторинга
Психологическая уверенность
Улучшение навыков программирования
Без тестов нельзя утверждать работает программа или нет
Экономия времени и денег
После создания блока функциональности (feature)
После обнаружения бага
В конце спринта (практически невыполнимый способ)
Перед написанием функциональности (TDD — Test Driven Development)
Перед проведением рефакторинга
При изменениях технических требований, дизайна системы
Вероятность допустить ошибку ниже
Тесты выполняются чаще, некоторые перманентно
Возможность запустить тесты в любой момент
Раннее обнаружение проблем
Моментальное оповещение об изменении системы
Тесты не доказывают отсутсвие ошибок
Тесты могут иметь баги