Jump to content

Характеристический тест

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

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

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

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

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

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

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

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

Преимущества

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

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

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

Недостатки

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

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

  • Это зависит от повторяемости . Неустойчивые и недетерминированные значения необходимо замаскировать /удалить как из Золотого Мастера, так и из результата процесса. Если необходимо удалить слишком много элементов или их удаление слишком сложное, это может сделать тестирование Golden Master непрактичным.
  • Повторяемость зависит не только от программного обеспечения, но также от стабильности среды и входных значений.
  • Тестирование Golden Master не делает вывод о правильности результатов. Это просто помогает обнаружить нежелательные последствия изменений программного обеспечения.
  1. ^ «Дж. Б. Райнсбергер - Выживший код наследия с Golden Master и выборкой» . Проверено 30 мая 2017 г.
  2. ^ Фезерс, Майкл С. Эффективная работа с устаревшим кодом ( ISBN   0-13-117705-2 ).
  3. ^ Болтон, Майкл (январь 2005 г.). «Тестирование без карты» (PDF) . Лучшее программное обеспечение . Sticky Minds / TechWell . Проверено 30 мая 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7380769d5cd4e2417b13cee25fee47b3__1655955480
URL1:https://arc.ask3.ru/arc/aa/73/b3/7380769d5cd4e2417b13cee25fee47b3.html
Заголовок, (Title) документа по адресу, URL1:
Characterization test - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)