Теория тестирования игр

Цели тестирования

  • Минимизация количества дефектов

  • Максимизация скорости обнаружения дефектов

Методы защиты

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

Уровни тестирования

  • Unit (модульное, блочное компонентное)

Процесс исследования ПО, выполняемое в изоляции от остальных частей системы, при котором тестируется минимально возможный компонент, отдельный класс или функция.

  • Интеграционное

Процесс исследования ПО, при котором тестируется интерфейсы между компонентами или подсистемами. Это совместное выполнение двух или более классов, компонентов или подсистем.

  • Системное

Процесс исследования ПО в его окончательной конфигурации, интегрированного с другими программными и аппаратными системами. Предметом тестирования в этом случае являются безопасность, производительность, утечка ресурсов, проблемы синхронизации и прочие аспекты, которые невозможно протестировать на более низких уровнях интеграции.

Классификация тестов

По объекту тестирования

  • Функциональное тестирование

  • Тестирование производительности

  • Тестирование стабильности

  • Сетевое тестирование

  • Тестирование безопасности

По времени проведения

  • Регрессионное

Повторное выполнение тестов, направленное на обнаружение дефектов в программе, уже прошедшей этот набор тестов.

  • Smoke тестирование

Mинимальный набор тестов на выявления явных ошибок. Программу, которая не проходит этот тест, не имеет смысла отдавать на более глубокое тестирование.

  • alpha

  • beta

По знанию системы

  • Белый ящик

  • Черный ящик

По степени автоматизации

  • Ручное

  • Автоматическое

Зачем нужны тесты?

  • Предотвращение дефектов

  • Обнаружение дефектов

  • Документация пред и пост условий

  • Защита кода от других разработчиков

  • Проведение рефакторинга

  • Психологическая уверенность

  • Улучшение навыков программирования

  • Без тестов нельзя утверждать работает программа или нет

  • Экономия времени и денег

Когда создавать тесты

  • После создания блока функциональности (feature)

  • После обнаружения бага

  • В конце спринта (практически невыполнимый способ)

  • Перед написанием функциональности (TDD Test Driven Development)

  • Перед проведением рефакторинга

  • При изменениях технических требований, дизайна системы

Зачем автоматизировать тесты

  • Вероятность допустить ошибку ниже

  • Тесты выполняются чаще, некоторые перманентно

  • Возможность запустить тесты в любой момент

  • Раннее обнаружение проблем

  • Моментальное оповещение об изменении системы

Проблемы тестирования

  • Тесты не доказывают отсутсвие ошибок

  • Тесты могут иметь баги

Last updated