- •4 Курс 2 семестр
- •Задача проектирования программных систем
- •Общие сведения о технологии программирования
- •Тестирование программ
- •Тестирование программного обеспечения
- •Правила тестирования Майерса
- •Уровни тестирования
- •Введение в программную инженерию История и основные понятия
- •Эволюция подходов к управлению программными проектами
- •Модели процесса разработки по
- •Управление проектами. Определения и концепция
- •Расчет экономической ис
- •Моделирование программных систем
- •Словарь uml
Правила тестирования Майерса
Считайте тестирование ключевой задачей разработки программного средства, поручайте его лучшим программистам.
Нежелательно тестировать свою собственную программу.
Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы.
Готовьте тесты как для правильных, так и для неправильных данных.
Документируйте пропуск тестов через компьютер; детально изучайте результаты каждого теста; избегайте тестов, пропуск которых нельзя повторить.
Каждый модуль подключайте к программе только один раз, никогда не изменяйте программу, чтобы облегчить ее тестирование.
Пропускайте заново все тесты, связанные с проверкой работы какой-либо программы программного средства или ее взаимодействия с другими программами, если в нее были внесены изменения (например, в результате устранения ошибки).
Нельзя гарантировать, что тестированием можно установить наличие каждой имеющейся в ПС ошибки. Поэтому возникает две задачи. Первая задача: подготовить такой набор тестов и применить к ним ПС, чтобы обнаружить в нем возможности большее число ошибок. Вторая задача: определить момент окончания отладки ПС (или отдельной его части).
Существуют следующие принципы тестирования:
Функциональное (тестирование «черного ящика»). Тестируется спецификация программ, то есть вход-выход без учета знаний о ее структуре; известна общая схема работы программы.
Структурное (тестирование «белого ящика»). Тестируется логика, внутренняя структура программы (блоки ветвления, циклы).
Тестирование программного обеспечения – процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.
Уровни тестирования
Модульное тестирование. Тестируется минимально возможные для тестирования компоненты. Например, отдельный класс или функция. Данное тестирование осуществляется разработчиками ПО.
Интеграционное тестирование. Тестируются интерфейсы между компонентами и подсистемами.
Системное тестирование. Тестируется интегрированная система на ее соответствие требованиям.
Альфа тестирование. Имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями (либо заказчиками).
Бета тестирование. Выполняется распространение версии с ограничениями (по функциональности или времени работы).
Тестирование белого и черного ящика. Фразы тестирование белого ящика и тестирование черного ящика относятся к тому, имеет ли разработчик тестов доступ к исходному коду программного продукта. Тестирование выполняется через пользовательский интерфейс, либо прикладной программный интерфейс, предоставляемый тестируемым модулем.
При тестировании белого ящика разработчик тестов имеет доступ к исходному коду программы и может писать код, который связан с библиотеками тестируемого программного продукта. При тестировании белого ящика используется метрики покрытия кода.
При тестировании черного ящика разработчик тестов имеет доступ к программному продукту только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру подключатся к системе тестирования.
Статическое и динамическое тестирование. При тестировании белого и черного ящика происходит динамическое тестирование, так как в обоих случаях мы прогоняем программу. При статическом тестировании программный код не выполняется. Анализ программы происходит на основе исходного кода, который вычитывается вручную, либо анализируется специальными инструментами. К статическому тестированию также относят тестирование требований, спецификаций, документаций.
Регрессионное тестирование. Это собирательное название для всех видов тестирования программных продуктов, направленных на обнаружение ошибок в уже протестированных участках исходного кода. Такие ошибки, когда после внесения изменения в программу, перестает работать то, что должно было продолжать работать, называют регрессионными ошибками. Регрессионное тестирование является неотъемлемой частью экстремального программирования. В этой методологии проектная документация заменяется на расширяемое, повторяемое и автоматизированное тестирование всего программного пакета на каждой стадии цикла разработки программного продукта.
Тестовые скрипты. Используются на разных уровнях: модульном, интеграционном и системном тестировании. Тестовые скрипты пишутся для проверки компонентов, в которых наиболее высока вероятность появления отказов.
Покрытие кода. Покрытие кода показывает процент, насколько исходный код программы был протестирован.
Существует несколько различных способов измерения покрытия. Основные из них:
Покрытие операторов (каждая ли строка исходного кода была выбрана и протестирована)
Покрытие условий (каждая ли точка решения была выбрана и протестирована)
Покрытие пути (все ли возможные пути через заданную часть кода были выполнены и протестированы)
Покрытие функций (все ли функции были задействованы)
Покрытие входа выхода (вызовы функций и возврат в них).