Тестирование программных средств Сафронов Сергей, 2007 год
Оглавление Особенности ОО систем и влияние на тестирование Особенности ОО систем и влияние на тестирование ИнкапсуляцияИнкапсуляция НаследованиеНаследование ПолиморфизмПолиморфизм Особенности наиболее распространенных ОО систем Особенности наиболее распространенных ОО систем Автоматизация тестирования Автоматизация тестирования Сравнение ручного и автоматического тестированияСравнение ручного и автоматического тестирования Основные категории средств автоматизации тестированияОсновные категории средств автоматизации тестирования
Особенности ОО систем Объектно-ориентированный подход: инкапсуляция Данные скрыты Данные скрыты Акцент на поведении класса Акцент на поведении класса Высокая связность внутри класса Высокая связность внутри класса Низкая связность между классами Низкая связность между классами Пользователь должен понимать поведение модуля, а не его внутреннее устройство
Особенности ОО систем Объектно-ориентированный подход: наследование Уменьшение объема кода/повторное использование Уменьшение объема кода/повторное использование Простота поддержки Простота поддержки Быстрота разработки различных, но схожих классов Быстрота разработки различных, но схожих классов Осмысление через классификацию Осмысление через классификацию
Влияние инкапсулирования на тестирование Плюсы: Нет глобальных данных Нет глобальных данных Четко определены границы модулей Четко определены границы модулейМинусы: Скрытые данные (private data) Скрытые данные (private data) Изменения в стратегии тестирования: Больше встроенных тестов (проверка пред- и постусловий, инвариантов) Больше встроенных тестов (проверка пред- и постусловий, инвариантов) Акцент на unit-тестировании (уровень классов) Акцент на unit-тестировании (уровень классов)
Влияние наследования на тестирование Плюсы: Меньше объем кода для тестирования (за счет повторного использования) Меньше объем кода для тестирования (за счет повторного использования) Четкие границы классов Четкие границы классовМинусы: Большой набор тестирования при изменении базовых классов (ancestor) Большой набор тестирования при изменении базовых классов (ancestor) Множественное наследование существенно увеличивает объем тестирования Множественное наследование существенно увеличивает объем тестирования Влияние на стратегию тестирования: Дополнительное unit-тестирование иерархии классов Дополнительное unit-тестирование иерархии классов Дополнительное время для полного тестирования базовых классов Дополнительное время для полного тестирования базовых классов
Влияние полиморфизма на тестирование Плюсы: Четкие интерфейсы Четкие интерфейсы Принцип подстановки Принцип подстановки Динамическое связывание Динамическое связываниеМинусы: Динамическое связывание увеличивает сложность тестирования Динамическое связывание увеличивает сложность тестирования Влияние на стратегию тестирования: Требуются дополнительные тесты для всех вариантов реализации интерфейсов Требуются дополнительные тесты для всех вариантов реализации интерфейсов
Особенности наиболее распространенных ОО систем С++ Возможность создавать public данные и глобальные данные Возможность создавать public данные и глобальные данные Множественное наследование Множественное наследование Отсутствует автоматического полиморфизма (по умолчанию статическое связывание) Отсутствует автоматического полиморфизма (по умолчанию статическое связывание) Нестандартный менеджмент объектов (проблемы с зависшими ссылками и утечками памяти) Нестандартный менеджмент объектов (проблемы с зависшими ссылками и утечками памяти)Java Возможность создавать public данные и глобальные данные Возможность создавать public данные и глобальные данные Отсутствует множественное наследование поведения Отсутствует множественное наследование поведения Автоматический полиморфизм Автоматический полиморфизм Сборка мусора Сборка мусора Visual Basic Наследование только интерфейсов Наследование только интерфейсов Автоматический полиморфизм Автоматический полиморфизм подсчет ссылок (механизм учета клиентов данного объекта ) подсчет ссылок (механизм учета клиентов данного объекта )
Автоматизация тестирования Технологии и процессы тестирования программного обеспечения Управление жизненным циклом Управление жизненным циклом Управление тестированием Управление тестированием Оценка затрат, времени, ресурсовОценка затрат, времени, ресурсов Управление изменениями Управление изменениями Влияние правок на тестированиеВлияние правок на тестирование Управление ошибками Управление ошибками Bug tracking Systems и учет failuresBug tracking Systems и учет failures Управление требованиями Управление требованиями Для проектов, с изменяющимися требованиямиДля проектов, с изменяющимися требованиями Управления конфигурациями Управления конфигурациями Конфигурации систем и настройкиКонфигурации систем и настройки Автоматизация Автоматизация Для выполнения повторяющихся однотипных операцийДля выполнения повторяющихся однотипных операций Интеграция систем разработки и тестированияИнтеграция систем разработки и тестирования
Проблемы, связанные с ручным тестированием С ростом сложности системы растут затраты С ростом сложности системы растут затраты Невозможно симулировать загрузку сервера Невозможно симулировать загрузку сервера Недостаточно быстрое для управляемых событиями методов (поведение компонента системы определяется набором возможных внешних событий и ответных реакций компонента на них) Недостаточно быстрое для управляемых событиями методов (поведение компонента системы определяется набором возможных внешних событий и ответных реакций компонента на них) Не может обеспечить полною точность повторения Не может обеспечить полною точность повторения Большой объем рутинной работы, больная нагрузка на тестировщиков Большой объем рутинной работы, больная нагрузка на тестировщиков Чаще всего начинается с окончанием разработки Чаще всего начинается с окончанием разработки
Плюсы автоматического тестирования Быстрота Быстрота Возможность точного повторения Возможность точного повторения Уменьшение ручной работы Уменьшение ручной работы Уменьшение трудозатрат, выше качество Уменьшение трудозатрат, выше качество Упрощается регрессионное тестирование Упрощается регрессионное тестирование Тестирование 7х24 Тестирование 7х24 Возможность существенно увеличить тестовое покрытие Возможность существенно увеличить тестовое покрытие
Подводные камни автоматизации Накладные расходы по внедрению Накладные расходы по внедрению Низкая гибкость систем Низкая гибкость систем Требуется набор машин для тестирования Требуется набор машин для тестирования
Особенности большинства систем Объектно-ориентированные Объектно-ориентированные Автоматическое регрессионное тестирование Автоматическое регрессионное тестирование Скриптовые языки/генераторы Скриптовые языки/генераторы Автоматическое сравнение ожидаемых и реальных результатов Автоматическое сравнение ожидаемых и реальных результатов Основывается на обработке экранов или функций Основывается на обработке экранов или функций Особенности некоторых систем Стресс-тестирование Стресс-тестирование Автоматический анализ метрик Автоматический анализ метрик Платформо-независимость Платформо-независимость Анализ производительности Анализ производительности База данных результатов тестирования База данных результатов тестирования
Основные категории средств автоматизации тестирования Статический анализ Статический анализ Динамический анализ Динамический анализ Работа с GUI («электронная обезьяна») Работа с GUI («электронная обезьяна») Управление процессом тестирования Управление процессом тестирования
Управление процессом тестирования Автоматизация и ускорение процесса тестирования за счет: Управление результатами тестирования Управление результатами тестирования Сбор, организация, обработка и хранение результатов тестированияСбор, организация, обработка и хранение результатов тестирования Поддержка сбора сопутствующих данных для тестированияПоддержка сбора сопутствующих данных для тестирования Поддержка анализа результатов тестирования Поддержка анализа результатов тестирования Помощь в планировании дополнительного тестирования (обнаружение слабых мест) Помощь в планировании дополнительного тестирования (обнаружение слабых мест)
Статический анализ Локализация самых сложных (логически или структурно) участков кода Локализация самых сложных (логически или структурно) участков кода Анализ кода по большому числу принятых в промышленности метрик Анализ кода по большому числу принятых в промышленности метрик Определение графов выполнения, графов вызовов функций, etc Определение графов выполнения, графов вызовов функций, etc Анализ влияния изменений на тестирование/качество Анализ влияния изменений на тестирование/качество
Динамический анализ Анализ тестового покрытия Анализ тестового покрытия Выявление непротестированного и мертвого кода Выявление непротестированного и мертвого кода Анализ покрытия требований Анализ покрытия требований Анализ производительности Анализ производительности Анализ ресурсоемкости Анализ ресурсоемкости Анализ утечек памяти/потерянных ссылок Анализ утечек памяти/потерянных ссылок
Работа с GUI Фиксирование, внесение изменений и повторное выполнение HCI Фиксирование, внесение изменений и повторное выполнение HCI Гибкость Гибкость В комплект входят скриптовые языки для настройки и создания тестовых драйверовВ комплект входят скриптовые языки для настройки и создания тестовых драйверов Платформо-зависимые Платформо-зависимые Предназначены для регрессионного тестирования интерфейсов и GUI приложений Предназначены для регрессионного тестирования интерфейсов и GUI приложений
Критерии выбора средств автоматизации тестирования Поддерживаемые процессы тестирования. Поддерживаемые процессы тестирования. Поддерживаемые типы тестов. Поддерживаемые типы тестов. Поддерживаемые технологии. Поддерживаемые технологии. Интеграция с системами разработки. Интеграция с системами разработки. Техническая и документальная поддержка компанией разработчиком. Техническая и документальная поддержка компанией разработчиком. Обучение и сертификация персонала, работающего с набором инструментов и/или методологией Обучение и сертификация персонала, работающего с набором инструментов и/или методологией