Монолитное тестирование

advertisement
Уровни тестирования
Инна Исаева
Классификация видов тестирования
По объекту тестирования:
 Функциональное тестирование (functional testing)
 Тестирование производительности (performance testing)
• Нагрузочное тестирование (load testing)
• Стресс-тестирование (stress testing)
• Тестирование стабильности (stability / endurance / soak testing)





Тестирование удобства использования (usability testing)
Тестирование интерфейса пользователя (UI testing)
Тестирование безопасности (security testing)
Тестирование локализации (localization testing)
Тестирование совместимости (compatibility testing)
Классификация видов тестирования
По знанию системы:
 Тестирование чёрного ящика (black box)
 Тестирование белого ящика (white box)
 Тестирование серого ящика (gray box)
По степени автоматизации:
 Ручное тестирование (manual testing)
 Автоматизированное тестирование (automated testing)
 Полуавтоматизированное тестирование (semiautomated testing)
Классификация видов тестирования
По степени изолированности компонентов:
 Компонентное (модульное) тестирование (component/unit testing)
 Интеграционное тестирование (integration testing)
 Системное тестирование (system/end-to-end testing)
По времени проведения тестирования:
 Альфа тестирование (alpha testing)
•
•
•
•
Тестирование при приёмке (smoke testing)
Тестирование новой функциональности (new feature testing)
Регрессионное тестирование (regression testing)
Тестирование при сдаче (acceptance testing)
 Бета тестирование (beta testing)
Классификация видов тестирования
По признаку позитивности сценариев:
 Позитивное тестирование (positive testing)
 Негативное тестирование (negative testing)
По степени подготовленности к тестированию:
 Тестирование по документации (formal testing)
 Эд Хок (интуитивное) тестирование (ad hoc testing)
Модульное тестирование
• Тестируется минимально возможный для тестирования
компонент, например, отдельный класс или функция.
• Процесс проверки корректностей модулей(классов)
программы.
• Заключается в изолированной проверке каждого
отдельного элемента путем запуска тестов в
искусственной среде.
Что такое модуль?
Модуль - это
• часть программного кода, выполняющая одну функцию с
точки зрения функциональных требований;
• программный модуль, т.е. минимальный компилируемый
элемент программной системы;
• задача в списке задач проекта (с точки зрения его
менеджера);
• участок кода, который может уместиться на одном экране
или одном листе бумаги;
• один класс или их множество с единым интерфейсом.
Цель
• Достоверность в соответствии требованиям каждого
отдельного модуля системы перед тем, как будет
произведена его интеграция в состав системы
• Получение работоспособного кода с наименьшими
затратами
• Определение степени готовности системы к переходу на
следующий уровень разработки и тестирования
• Разработка тестов, проверяющих работу каждой
нетривиальной функции или метода модуля
Задачи модульного тестирования
• Поиск и документирование несоответствий требованиям
• Поддержка разработки и рефакторинга низкоуровневой
архитектуры системы и межмодульного взаимодействия
• Поддержка рефакторинга модулей
• Поддержка устранения дефектов и отладки
Фазы модульного тестирования
(Стандарт IEEE 1008 )
• Фаза планирования тестирования
 Этап планирования основных подходов к тестированию, ресурсное
планирование и календарное планирование
 Этап определения свойств, подлежащих тестированию
 Этап уточнения основного плана, сформированного на этапе (1)
• Фаза получения набора тестов
 Этап разработки набора тестов
 Этап реализации уточненного плана
• Фаза измерений тестируемого модуля
 Этап выполнения тестовых процедур
 Этап определения достаточности тестирования
 Этап оценки результатов тестирования и тестируемого модуля.
Преимущества
•
•
•
•
Облегчение рефакторинга
Легкость обнаружения ошибок
Упрощение интеграции
Устранение сомнений по поводу надежности отдельных
модулей
• Документирование кода
• Позволяет уменьшить связность компонентов системы
Недостатки
• Увеличение срока разработки
• При изменении требований, ранее созданные тесты
становятся ненужными
Размер теста
• Тестовый метод должен быть коротким
• Количество проверок должно быть минимальным иначе
по падению теста сложно будет найти причину ошибки.
• Каждый тест должен покрывать одну единицу бизнеслогики:





Простой метод
Один из исходов конструкции if..else
Один из случаев (case) блока switch
Исключение, обрабатываемое блоком try…catch
Исключение, генерируемое (throw) в методе
Интеграционное тестирование
• Интеграционное тестирование - это тестирование части
системы, состоящей из двух и более модулей.
• Интеграционное тестирование - это тестирование
корректности взаимодействия нескольких модулей,
объединенных в единое целое.
Цель
• Удостовериться в корректности совместной работы
компонентов системы
• Проверка соответствия проектируемых единиц
функциональным, приёмным и требованиям надежности.
Задача интеграционного
тестирования
• Поиск дефектов, связанных с ошибками в реализации и
интерпретации взаимодействия между модулями.
Методы проведения
интеграционного тестирования
• восходящее тестирование;
• монолитное тестирование;
• нисходящее тестирование.
Восходящее тестирование
Сначала тестируются все программные модули, входящие в состав
системы и только затем они объединяются для интеграционного
тестирования.
Монолитное тестирование
• Монолитное тестирование предполагает, что отдельные
компоненты системы серьезного тестирования не
проходили.
• Основное преимущество – отсутствие необходимости в
разработке тестового окружения, драйверов и заглушек.
• После разработки всех модулей выполняется их
интеграция, затем система проверяется вся в целом, как
она есть.
Недостатки
• очень трудно выявить источник ошибки
(идентифицировать ошибочный фрагмент кода);
• трудно организовать исправление ошибок;
• процесс тестирования плохо автоматизируется.
Нисходящее тестирование
Сначала тестируют только самый верхний управляющий уровень
системы, без модулей более низкого уровня. Затем постепенно с более
высокоуровневыми модулями интегрируются более низкоуровневые.
Системное тестирование
• Системное тестирование охватывает целиком всю
систему, фокусируется на нефункциональных
требованиях — безопасности, производительности,
точности, надежности.
• На этом уровне также тестируются интерфейсы
к внешним приложениям, аппаратному обеспечению,
операционной среде и т.д.
Задачи
Выявление дефектов, связанных с работой системы в
целом:
 неверное использование ресурсов системы
 непредусмотренные комбинации данных пользовательского
уровня
 несовместимость с окружением
 непредусмотренные сценарии использования
 отсутствующая или неверная функциональность
 неудобство в применении и тому подобное.
Категории тестов системного
тестирования
1.
2.
3.
4.
5.
6.
7.
8.
Полнота решения функциональных задач.
Тестирование целостности (соответствие документации,
комплектность).
Стрессовое тестирование - на предельных объемах нагрузки
входного потока.
Корректность использования ресурсов (утечка памяти, возврат
ресурсов).
Оценка производительности.
Эффективность защиты от искажения данных и некорректных
действий.
Проверка инсталляции и конфигурации на разных платформах.
Корректность документации
Основные понятия
• Рефакторинг — процесс полного или частичного
преобразования внутренней структуры программы при
сохранении еѐ внешнего поведения.
Download