Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_16_Тема_7.docx
Скачиваний:
1
Добавлен:
14.08.2019
Размер:
35.96 Кб
Скачать

Тема 7. Тестирование и отладка по

Цели и задачи темы:

  1. Рассмотреть стратегии тестирования.

  2. Познакомиться с технологиями статического тестирования модуля - методом “стеклянного” и “черного” ящика.

  3. Рассмотреть технологию тестирования сопряжений.

  4. Понять технологию комплексного тестирования.

Тестирование программного обеспечения — процесс выявления ошибок в программном обеспечении (ПО). Тестирование программного обеспечения (Software Testing) ‑ проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]

В более широком смысле, тестирование ‑ это одна из техник контроля качества, включающая в себя активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).

Верификация (verification) ‑ это процесс оценки системы или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа [IEEE]. Т.е. выполняются ли цели, сроки, задачи по разработке проекта, определенные в начале текущей фазы.

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

Классификация типов тестирования программного обеспечения

Различают несколько критериев, позволяющих выполнять классификацию типов тестирования:

Аспект тестирования:

  • Функциональное тестирование (functional testing);

  • Нагрузочное тестирование;

  • Тестирование производительности (perfomance/stress testing);

  • Тестирование стабильности (stability/load 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):

  1. Тестирование при приёмке (smoke testing);

  2. Тестирование новых функциональностей (new feature testing);

  3. Регрессионное тестирование (regression testing);

  4. Тестирование при сдаче (acceptance testing).

  • Бета тестирование (beta testing).

Позитивность сценариев:

  • Позитивное тестирование (positive testing);

  • Негативное тестирование (negative testing).

Степень подготовленности к тестированию:

  • Тестирование по документации (formal testing);

  • Интуитивное тестирование (ad hoc testing).

Различают следующие уровни тестирования:

  • Модульное тестирование (юнит-тестирование)— тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция. Часто модульное тестирование осуществляется разработчиками ПО.

  • Интеграционное тестирование — тестируются интерфейсы между компонентами, подсистемами. При наличии резерва времени на данной стадии тестирование ведётся итерационно, с постепенным подключением последующих подсистем.

  • Системное тестирование — тестируется интегрированная система на её соответствие требованиям.

    • Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком.

    • Бета-тестирование — в некоторых случаях выполняется распространение версии с ограничениями (по функциональности или времени работы) для некоторой группы лиц, с целью убедиться, что продукт содержит достаточно мало ошибок. Иногда бета-тестирование выполняется для того, чтобы получить обратную связь о продукте от его будущих пользователей.

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

Тестирование «белого ящика» и «чёрного ящика»

В терминологии профессионалов тестирования (программного и некоторого аппаратного обеспечения), фразы «тестирование белого ящика» и «тестирование чёрного ящика» относятся к тому, имеет ли разработчик тестов доступ к исходному коду тестируемого ПО, или же тестирование выполняется через пользовательский интерфейс либо прикладной программный интерфейс, предоставленный тестируемым модулем.

При тестировании белого ящика (англ. white-box testing, также говорят — прозрачного ящика), разработчик теста имеет доступ к исходному коду программ и может писать код, который связан с библиотеками тестируемого ПО. Это типично для юнит-тестирования (англ. unit testing), при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции — работоспособны и устойчивы, до определённой степени. При тестировании белого ящика используются метрики покрытия кода.

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

Если «альфа-» и «бета-тестирование» относятся к стадиям до выпуска продукта (а также, неявно, к объёму тестирующего сообщества и ограничениям на методы тестирования), тестирование «белого ящика» и «чёрного ящика» имеет отношение к способам, которыми тестировщик достигает цели.

Бета-тестирование в целом ограничено техникой чёрного ящика. Таким образом, термин «бета-тестирование» может указывать на состояние программы (ближе к выпуску чем «альфа»).

Статическое и динамическое тестирование

Техники тестирования белого и чёрного ящика — предполагают, что код исполняется. В обоих случаях это динамическое тестирование.

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

Также к статическому тестированию относят тестирование требований, спецификаций, документации.

Регрессионное тестирование

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

Тестовые скрипты

Сотрудники, выполняющие тестирование, пишут и используют тестовые скрипты, которые создаются для модулей с наивысшим риском появления отказов и наибольшей вероятностью того что этот риск станет проблемой.

Покрытие кода

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

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

Показатели качества ПО

Показатели качества ПО устанавливают ГОСТ 28195 Оценка качества программных средств. Общие положения и ГОСТ Р ИСО/МЭК 9126 Информационная технология. Оценка программной продукции. Характеристика качества и руководства по их применению.

ГОСТ Р ИСО/МЭК 9126 устанавливает шесть характеристик качества ПО. Под характеристикой качества ПО, согласно этому стандарту, понимается набор свойств (атрибутов) программной продукции, по которым ее качество оценивается или описывается.

Определение качества и определенные в этом стандарте характеристики отражают представление пользователя о качестве ПО.