СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Техники тестирования

Нажмите, чтобы узнать подробности

Данный методический материал предназначен подготовки и проведения уроков при изучении  дисциплины "Инженерный подход к разработке программного обеспечения" специальности 09.02.03 "Программирование в компьютерных системах" СПО углубленной подготовки

Просмотр содержимого документа
«Техники тестирования»

Техники тестирования

Техники тестирования

Техники , базирующиеся  на  интуиции  и  опыте  инженера: Специализированное тестирование  Тесты основываются на опыте, интуиции и знаниях инженера, рассматривающего проблему с точки зрения имевшихся ранее аналогий. Данный вид тестирования может быть полезен для идентификации тех тестов, которые не охватываются более формализованными техниками. Исследовательское тестирование   Такое тестирование определяется как одновременное обучение, проектирование теста и его исполнение. Данный вид тестирования заранее не определяется в плане тестирования и такие тесты создаются, выполняются и модифицируются динамически, по мере необходимости. Эффективность исследовательских тестов напрямую зависит от знаний инженера.
  • Техники , базирующиеся на интуиции и опыте инженера:
  • Специализированное тестирование

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

  • Исследовательское тестирование

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

Техники, базирующиеся на спецификации  Эквивалентное разделение приложения  Рассматриваемая область приложения разделяется на коллекцию наборов или эквивалентных классов, которые считаются эквивалентными с точки зрения рассматриваемых связей и характеристик спецификации. Набор тестов (иногда – только один тест) формируется из тестов эквивалентных классов (или наборов классов). Анализ граничных значений  Тесты строятся с ориентацией на использование тех величин, которые определяют предельные характеристики тестируемой системы. Расширением этой техники являются тесты оценки живучести системы, проводимые с величинами, выходящими за рамки специфицированных пределов значений.
  • Техники, базирующиеся на спецификации
  • Эквивалентное разделение приложения

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

  • Анализ граничных значений

Тесты строятся с ориентацией на использование тех величин, которые определяют предельные характеристики тестируемой системы. Расширением этой техники являются тесты оценки живучести системы, проводимые с величинами, выходящими за рамки специфицированных пределов значений.

Таблицы принятия решений  Такие таблицы представляют логические связи между условиями (могут рассматриваться в качестве “входов”) и действиями  (могут рассматриваться как “выходы”). Набор тестов строится последовательным рассмотрением всех возможных кросс-связей в такой таблице. Тесты на основе конечного автомата  Строятся как комбинация тестов для всех состояний и переходов между состояниями, представленных в соответствующей модели (переходов и состояний приложения).
  • Таблицы принятия решений

Такие таблицы представляют логические связи между условиями (могут рассматриваться в качестве “входов”) и действиями  (могут рассматриваться как “выходы”). Набор тестов строится последовательным рассмотрением всех возможных кросс-связей в такой таблице.

  • Тесты на основе конечного автомата

Строятся как комбинация тестов для всех состояний и переходов между состояниями, представленных в соответствующей модели (переходов и состояний приложения).

Тестирование на основе формальной спецификации   Для спецификации, определенных с использованием формального языка, возможно автоматически создавать тесты для функциональных требований. В ряде случаев могут строится на основе модели, являющейся частью спецификации, не использующей формального языка описания. Случайное тестирование   Сами тесты генерируются случайным образом по списку заданного набора специфицированных характеристик.  Техники, ориентированные на код  Тесты, базирующиеся на блок-схеме  Набор тестов строится исходя из покрытия всех условий и решений блок-схемы. В какой-то степени напоминает тесты на основе конечного автомата.
  • Тестирование на основе формальной спецификации

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

  • Случайное тестирование

Сами тесты генерируются случайным образом по списку заданного набора специфицированных характеристик.

Техники, ориентированные на код

  • Тесты, базирующиеся на блок-схеме

Набор тестов строится исходя из покрытия всех условий и решений блок-схемы. В какой-то степени напоминает тесты на основе конечного автомата.

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

Отличие – в источнике набора тестов. Максимальная отдача от тестов на основе блок-схемы получается когда тесты покрывают различные пути блок-схемы – сценарии потоков работ (поведения) тестируемой системы. Адекватность таких тестов оценивается как процент покрытия всех возможных путей блок-схемы.

  • Тесты на основе потоков данных

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

Ссылочные модели для тестирования, ориентированного на код   Является не столько техникой тестирования, сколько контролем структуры программы, представленной в виде дерева вызовов (например, диаграммы, определенной в нотации UML и построенной на основе анализа кода). Тестирование, ориентированное на дефекты  Тесты ориентированы на специфические категории ошибок. Предположение ошибок  Направлены на обнаружение наиболее вероятных ошибок, предсказываемых, например, в результате анализа рисков
  • Ссылочные модели для тестирования, ориентированного на код

Является не столько техникой тестирования, сколько контролем структуры программы, представленной в виде дерева вызовов (например, диаграммы, определенной в нотации UML и построенной на основе анализа кода).

  • Тестирование, ориентированное на дефекты

Тесты ориентированы на специфические категории ошибок.

  • Предположение ошибок

Направлены на обнаружение наиболее вероятных ошибок, предсказываемых, например, в результате анализа рисков

Тестирование мутаций  Мутация – небольшое изменение тестируемой программы, произошедшее за счет частных синтаксических изменений кода (в частности, рефакторинга). Соответствующие тесты запускаются для оригинального и всех “мутировавших” вариантов тестируемой программы. Эта техника фокусируется на возможности, с помощью тестов, определять отличия между мутантами и исходным вариантом кода. Если такое отличие установлено, мутанта “убивают”, а тест считается успешным. Обычно, данный подход фокусируется на синтаксических ошибках, на практике отслеживаемых современными средами разработки и, конечно, компиляторами. Техники, базирующиеся на условиях использования Операционный профиль  Базируется на условиях использования системы.
  • Тестирование мутаций

Мутация – небольшое изменение тестируемой программы, произошедшее за счет частных синтаксических изменений кода (в частности, рефакторинга). Соответствующие тесты запускаются для оригинального и всех “мутировавших” вариантов тестируемой программы. Эта техника фокусируется на возможности, с помощью тестов, определять отличия между мутантами и исходным вариантом кода. Если такое отличие установлено, мутанта “убивают”, а тест считается успешным. Обычно, данный подход фокусируется на синтаксических ошибках, на практике отслеживаемых современными средами разработки и, конечно, компиляторами.

  • Техники, базирующиеся на условиях использования
  • Операционный профиль

Базируется на условиях использования системы.

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

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

  • Тестирование, базирующееся на надежности инженерного процесса

Базируется на условиях разработки системы.

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

 Техники , базирующиеся  на  природе  приложения  Описанные выше техники могут применяться к любым типам программных систем. В то же время, в зависимости от технологической или архитектурной природы приложений, могут также применять специфические техники, важные именно для заданного типа приложения. Среди таких техник выделяют: Объектно-ориентированное тестирование Компонентно-ориентированное тестирование Web-ориентированное тестирование Тестирование на соответствие протоколам Тестирование систем реального времени.   Выбор и комбинация различных техник

Техники , базирующиеся на природе приложения

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

  • Объектно-ориентированное тестирование
  • Компонентно-ориентированное тестирование
  • Web-ориентированное тестирование
  • Тестирование на соответствие протоколам
  • Тестирование систем реального времени.

Выбор и комбинация различных техник

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

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

  • Определенные или случайные техники

Обычно тесты можно распределить по данным группам на основе используемой политики выбора или определения входных параметров тестов.