Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерном программировании , тест характеристики (также известный как Золотой Мастер тестирования [1] ) является средством для описания (характеризуют) фактическое поведение существующего части программного обеспечения, и , следовательно , защитить существующее поведение унаследованного кода от непреднамеренных изменений по автоматизации тестирования . Этот термин был придуман Майклом Фезерсом. [2]

Обзор [ править ]

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

В классификации тестовых оракулов Джеймса Баха и Майкла Болтона [3] этот вид тестирования соответствует историческому оракулу. В отличие от обычного подхода к тестированию программного обеспечения на основе утверждений , результат теста определяется не отдельными значениями или свойствами (которые проверяются с помощью утверждений), а путем сравнения сложного результата тестируемого программного процесса в целом с результат того же процесса в предыдущей версии программного обеспечения. В некотором смысле тестирование характеристик инвертирует традиционное тестирование: традиционные тесты проверяют отдельные свойства ( заносят их в белый список ), а тестирование характеристик проверяет все свойства, которые не были удалены (занесен в черный список ).

При создании характеристического теста необходимо наблюдать, какие выходы имеют место для данного набора входов. Учитывая наблюдение, что унаследованный код дает определенный вывод на основе заданных входных данных, можно написать тест, который утверждает, что выходные данные унаследованного кода соответствуют наблюдаемому результату для данных входов. Например, если кто-то замечает, что f (3.14) == 42, то это можно создать как характеристический тест. Затем, после модификаций системы, тест может определить, вызвали ли модификации изменения в результатах при одинаковых входных данных.

К сожалению, как и в случае с любым другим тестированием, обычно невозможно создать характеристический тест для всех возможных входных и выходных данных. Таким образом, многие люди выбирают либо заявление, либо покрытие ветки. Однако даже это может быть сложно. Составители тестов должны использовать свое суждение, чтобы решить, какой объем тестирования уместен. Часто бывает достаточно написать тесты для определения характеристик, которые охватывают только определенные входы и выходы, которые, как известно, происходят, с уделением особого внимания крайним случаям.

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

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

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

Преимущества [ править ]

Тестирование Golden Master имеет следующие преимущества перед традиционным тестированием программного обеспечения на основе утверждений:

  • Это относительно легко реализовать для сложных устаревших систем .
  • Таким образом, возможен рефакторинг.
  • Как правило, это разумный подход для сложных результатов, таких как PDF-файлы , XML , изображения и т. Д., Когда проверка всех соответствующих атрибутов с утверждениями будет как незаметной из-за количества атрибутов, так и приведет к нечитаемому / не поддерживаемому тесту.

Недостатки [ править ]

Тестирование Golden Master имеет следующие недостатки по сравнению с традиционным тестированием программного обеспечения на основе утверждений:

  • Это зависит от повторяемости . Неустойчивые и недетерминированные значения должны быть замаскированы / удалены как из Golden Master, так и из результата процесса. Если необходимо удалить слишком много элементов или удалить их слишком сложно, это может сделать тестирование Golden Master непрактичным.
  • Это зависит не только от повторяемости программного обеспечения, но и от стабильности среды и входных значений.
  • Тестирование Golden Master не предполагает правильности результатов. Это просто помогает обнаружить нежелательные последствия изменений программного обеспечения.

Ссылки [ править ]

  1. ^ "JB Rainsberger - Кодекс выживания наследия с Золотым Мастером и Сэмплингом" . Проверено 30 мая 2017 .
  2. ^ Feathers, Майкл К. Эффективная работа с устаревшим кодом ( ISBN 0-13-117705-2 ). 
  3. Болтон, Майкл (январь 2005 г.). «Тестирование без карты» (PDF) . Лучшее программное обеспечение . Липкие умы / TechWell . Проверено 30 мая 2017 .

Внешние ссылки [ править ]

  • Характеризационные тесты
  • Эффективная работа с характеристическими тестами - первое в серии руководств по характеризационным тестам, основанной на блоге.
  • Change Code Without Fear Статья DDJ о тестах характеристик.