- •Тестирование программного обеспечения
- •Тестирование
- •С точки зрения ISO 9126, качество программного обеспечения можно определить как совокупную характеристику
- •Структура стандарта IEEE 829-2008
- •Этапы развития представлений об организации и реализации тестирования
- •Этапы развития представлений об организации и реализации тестирования (продолжение).
- •Классификация
- •Классификация
- •Классификация
- •Классификация
- •Уровни тестирования
- •Статическое и динамическое тестирование
- •Функциональное тестирование: особенности тестирования «черного ящика»
- •Функциональное тестирование: классы обнаруживаемых ошибок
- •Функциональное тестирование: область и специфика применения тестирования «черного ящика».
- •Функциональное тестирование: «серый ящик» (grey-box testing)
- •Объектно-ориентированное тестирование
- •Объектно-ориентированное тестирование: расширение области применения тестирования
- •Объектно-ориентированное тестирование: CRC-карта
- •Объектно-ориентированное тестирование: CRC-карта
- •Объектно-ориентированное тестирование: изменение методики при объектно-ориентированном тестировании.
- •Объектно-ориентированное тестирование: проектирование объектно- ориентированных тестовых вариантов .
- •Объектно-ориентированное тестирование: проектирование объектно-ориентированных тестовых вариантов .
- •Предваряющее тестирование при экстремальной разработке
- •Отладка
Уровни тестирования
•Модульное тестирование (юнит-тестирование) — тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция.
•Интеграционное тестирование — тестируются интерфейсы между компонентами, подсистемами или системами.
•Системное тестирование — тестируется интегрированная система на её соответствие требованиям.
•Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком.
•Бета-тестирование — в некоторых случаях выполняется распространение предварительной версии (в случае проприетарного ПО иногда с ограничениями по функциональности или времени работы) для некоторой большей группы лиц, с тем чтобы убедиться, что продукт содержит достаточно мало ошибок. Иногда бета- тестирование выполняется для того, чтобы получить обратную связь о продукте от его будущих пользователей.
Часто для свободного/открытого ПО стадия альфа-тестирования характеризует функциональное наполнение кода, а бета-тестирования — стадию исправления ошибок. При этом как правило на каждом этапе разработки промежуточные результаты работы доступны конечным пользователям.
Статическое и динамическое тестирование
Тестирование белого ящика и тестирование чёрного ящика предполагают, что код исполняется, и разница состоит лишь в той информации, которой владеет тестировщик. В обоих случаях это динамическое тестирование.
При статическом тестировании программный код не выполняется — анализ программы происходит на основе исходного кода, который вычитывается вручную, либо анализируется специальными инструментами. В некоторых случаях, анализируется не исходный, а промежуточный код.
Также к статическому тестированию относят тестирование требований, спецификаций, документации.
Функциональное тестирование: особенности тестирования «черного ящика»
набор, образуемый такими входными данными, которые приводят к аномалиям поведения программы (назовем его IT);
набор, образуемый такими выходными данными, которые демонстрируют дефекты программы (назовем его ОТ).
Функциональное тестирование: классы обнаруживаемых ошибок
Тестирование «черного ящика» обеспечивает поиск следующих категорий ошибок:
1)некорректных или отсутствующих функций;
2)ошибок интерфейса;
3)ошибок во внешних структурах данных или в доступе к внешней базе данных;
4)ошибок характеристик (необходимая емкость памяти и т. д.);
5)ошибок инициализации и завершения.
Функциональное тестирование: область и специфика применения тестирования «черного ящика».
Принципы «черного ящика» и «белого ящика» - это не альтернативы, а взаимодополняющие подходы.
В отличие от тестирования «белого ящика», которое выполняется на ранней стадии процесса тестирования, тестирование «черного ящика» применяют на поздних стадиях тестирования.
При тестировании «черного ящика» пренебрегают управляющей структурой программы, внимание концентрируется на информационной области определения программной системы.
Техника «черного ящика» ориентирована на решение таких задач как:
•сокращение необходимого количества тестовых вариантов (из-за проверки не статических, а динамических аспектов системы);
•выявление классов ошибок, а не отдельных ошибок.
Функциональное тестирование: «серый ящик» (grey-box testing)
В исследованиях по методу "серого ящика"" объединены методы "белого ящика" и способы тестирования с помощью входных данных по методу "черного ящика". Удачным примером простого анализа по методу "серого ящика" является запуск программы внутри отладчика и подача на вход этой программы различных данных. При этом идет выполнение программы, а отладчик используется для выявления ошибок и некорректных состояний.
Объектно-ориентированное тестирование
особенности объектно-ориентированных систем должны вносить и вносят существенные изменения как в последовательность этапов, так и в содержание этапов тестирования. Сгруппируем эти изменения по трем направлениям:
•расширение области применения тестирования;
•изменение методики тестирования;
•учет особенностей объектно-ориентированного ПО при проектировании тестовых вариантов.
Объектно-ориентированное тестирование: расширение области применения тестирования
Разработка объектно-ориентированного ПО начинается с создания визуальных моделей, отражающих статические и динамические характеристики будущей системы. Критерии тестирования моделей: правильность, полнота, согласованность.
Осинтаксической правильности судят по правильности использования языка моделирования (например, UML). О семантической правильности судят по соответствию модели реальным проблемам. Для определения того, отражает ли модель реальный мир, она оценивается экспертами, имеющими знания и опыт в конкретной проблемной области. Эксперты анализируют содержание классов, наследование классов, выявляя пропуски и неоднозначности. Проверяется соответствие отношений классов реалиям физического мира.
Осогласованности судят путем рассмотрения противоречий между элементами в модели. Несогласованная модель имеет в одной части представления, которые противоречат представлениям в других частях модели.
Для оценки согласованности нужно исследовать каждый класс и его взаимодействия с другими классами. Для упрощения такого исследования удобно использовать модель Класс— Обязанность— Сотрудничество CRC (Class— Responsibility — Collaboration). Основной элемент этой модели — CRC-карта.
Объектно-ориентированное тестирование: CRC-карта
CRC-карта — это расчерченная карточка размером 6 на 10 сантиметров. Она помогает установить задачи класса и выявить его окружение (классы-собеседники). Для каждого класса создается отдельная карта.
Имя класса: Банкомат |
|
Обязанности: |
Сотрудники: |
Читать карту клиента |
Карта клиента |
Идентификация клиента |
База данных клиентов |
Проверка счета |
База данных счетов |
Выдача денег |
Блок денег |
Выдача квитанции |
Блок квитанций |
Захват карты |
Блок карт |
Объектно-ориентированное тестирование: CRC-карта
Для оценки модели (диаграммы) классов на основе CRC-карт рекомендуются следующие шаги :
1.Выполняется перекрестный просмотр CRC-карты и диаграммы сотрудничества (последовательности) объектов. Цель — проверить наличие сотрудников, согласованность информации в обеих моделях.
2.Исследуются обязанности CRC-карты. Цель — определить, предусмотрена ли в карте сотрудника обязанность, которая делегируется ему из данной карты.
3.Организуется проход по каждому соединению CRC-карты. Проверяется корректность запросов, выполняемых через соединения. Такая проверка гарантирует, что каждый сотрудник, предоставляющий услугу, получает обоснованный запрос.
4.Определяется, требуются ли другие классы, или правильно ли распределены обязанности по классам. Для этого используют проходы по соединениям, исследованные на шаге 3.
5.Определяется, нужно ли объединять часто запрашиваемые обязанности.
Шаги 1-5 применяются итеративно, к каждому классу и на каждом шаге эволюции объектно- ориентированной модели.
