Тестовый оракул
При тестировании программного обеспечения тестовый оракул (или просто оракул ) является поставщиком информации, описывающей правильный вывод на основе входных данных тестового примера . Тестирование с помощью оракула включает сравнение фактических результатов тестируемой системы (SUT) с ожидаемыми результатами, предоставленными оракулом. [1]
Термин «тестовый оракул» был впервые введен в работу Уильяма Э. Хаудена. [2] Дополнительные работы над различными видами оракулов исследовала Элейн Вейкер . [3]
Оракул может работать отдельно от SUT; теста доступ к нему осуществляется во время выполнения , или его можно использовать перед запуском теста с ожидаемыми результатами, закодированными в логике теста. [4]
Однако постусловия метода являются частью SUT в качестве автоматизированных оракулов при проектировании с помощью контрактных моделей. [5]
Определение правильного вывода для данного ввода (и набора состояний программы или системы) известно как проблема оракула или проблема тестового оракула . [6] : 507 которую некоторые считают относительно сложной проблемой и предполагает работу с проблемами, связанными с управляемостью и наблюдаемостью. [7]
Категории
[ редактировать ]Обзор исследовательской литературы, охватывающий период с 1978 по 2012 год. [6] нашел несколько потенциальных категорий тестовых оракулов.
Указано
[ редактировать ]Указанный оракул обычно ассоциируется с формализованными подходами к моделированию программного обеспечения и построению кода программного обеспечения. Это связано с формальной спецификацией , [8] проектирование на основе моделей , которое можно использовать для создания тестовых оракулов, [9] спецификация перехода состояний, для которой могут быть получены оракулы для облегчения тестирования на основе моделей [10] и тестирование на соответствие протоколу , [11] и проектирование по контракту , для которого эквивалентным тестовым оракулом является утверждение .
Указанные тестовые оракулы сталкиваются с рядом проблем. Формальная спецификация опирается на абстракцию, которая, в свою очередь, может иметь элемент неточности, поскольку все модели не могут охватить все поведение. [6] : 514
Полученный
[ редактировать ]Производный тестовый оракул различает правильное и неправильное поведение, используя информацию, полученную из артефактов системы. Сюда может входить документация, результаты работы системы и характеристики версий ТУС. [6] : 514 Наборы регрессионных тестов (или отчеты) являются примером производного тестового оракула — они построены на предположении, что результат предыдущей версии системы может быть использован в качестве вспомогательного средства (оракула) для будущей версии системы. Ранее измеренные характеристики производительности можно использовать в качестве оракула для будущих версий системы, например, чтобы вызвать вопрос о наблюдаемом потенциальном ухудшении производительности. Текстовая документация предыдущих версий системы может использоваться в качестве основы для определения ожиданий от будущих версий системы.
Псевдо-оракул [6] : 515 попадает в категорию производных тестовых оракулов. Псевдооракул, по определению Вейкера, [12] — это отдельно написанная программа, которая может принимать те же входные данные, что и программа или SUT, чтобы их выходные данные можно было сравнить, чтобы понять, может ли возникнуть проблема, требующая исследования.
Частичный оракул [6] : 515 представляет собой гибрид указанного тестового оракула и производного тестового оракула. Он определяет важные (но не полные) свойства SUT. Например, метаморфическое тестирование использует такие свойства, называемые метаморфическими отношениями, при нескольких запусках системы.
Скрытый
[ редактировать ]Неявный тестовый оракул опирается на подразумеваемую информацию и предположения. [6] : 518 Например, из сбоя программы может быть некий подразумеваемый вывод, т.е. нежелательное поведение - оракул, позволяющий определить, что может возникнуть проблема. Существует множество способов поиска и проверки нежелательного поведения, некоторые называют это отрицательным тестированием, в котором есть специализированные подмножества, такие как фаззинг .
У неявных тестовых оракулов есть ограничения, поскольку они полагаются на подразумеваемые выводы и предположения. Например, сбой программы или процесса может не быть приоритетной проблемой, если система является отказоустойчивой и поэтому работает в форме самовосстановления/ самоуправления . Неявные тестовые оракулы могут быть подвержены ложным срабатываниям из-за зависимостей от среды. Тестирование на основе свойств опирается на неявные оракулы.
Человек
[ редактировать ]В качестве тестового оракула может выступать человек. [7] Этот подход можно разделить на количественный и качественный. [6] : 519–520 Количественный подход направлен на поиск нужного количества информации, которую нужно собрать по SUT (например, результаты испытаний), чтобы заинтересованная сторона могла принять решения о соответствии цели или выпуске программного обеспечения. Качественный подход направлен на определение репрезентативности и пригодности входных тестовых данных и контекста выходных данных ТРИ. Примером может служить использование реалистичных и репрезентативных данных испытаний и понимание результатов (если они реалистичны). Они могут руководствоваться эвристическими подходами, такими как интуиция, практические правила, контрольные списки и опыт, которые помогут адаптировать конкретную комбинацию, выбранную для SUT.
Примеры
[ редактировать ]Тестовые оракулы чаще всего основаны на спецификациях и документации . [13] [14] Формальная спецификация, используемая в качестве входных данных для проектирования на основе модели и тестирования на основе модели, может быть примером указанного тестового оракула . Оракул на основе модели использует ту же модель для генерации и проверки поведения системы. [15] Документация, которая не является полной спецификацией продукта, например, руководство по использованию или установке, или запись характеристик производительности или минимальных требований к компьютеру для программного обеспечения, обычно представляет собой производный тестовый оракул.
Оракул согласованности сравнивает результаты выполнения одного теста с другими на предмет сходства. [16] Это еще один пример производного тестового оракула.
Оракулом для программы может быть вторая программа, использующая другой алгоритм для вычисления того же математического выражения, что и тестируемый продукт. Это пример псевдо-оракула, который является производным тестовым оракулом. [12] : 466
Во время поиска Google у нас нет полноценного оракула, который мог бы проверить правильность количества возвращаемых результатов. Мы можем определить метаморфическое отношение [17] так что последующий суженный поиск даст меньше результатов. Это пример частичного оракула, который представляет собой гибрид указанного тестового оракула и производного тестового оракула.
Статистический оракул использует вероятностные характеристики, [18] например, при анализе изображений, где определяется диапазон достоверности и неопределенности, позволяющий тестовому оракулу объявить совпадение или иным образом. Это может быть примером количественного подхода в тестировании оракула на людях.
Эвристический оракул предоставляет репрезентативные или приблизительные результаты для класса тестовых входных данных. [19] Это был бы пример качественного подхода в тестировании оракула на людях.
Ссылки
[ редактировать ]- ^ Эрл Т. Барр и др.; Проблема Oracle в тестировании программного обеспечения: опрос , 2015 г.
- ^ Хауден, МЫ (июль 1978 г.). «Теоретические и эмпирические исследования тестирования программ». Транзакции IEEE по разработке программного обеспечения . 4 (4): 293–298. дои : 10.1109/TSE.1978.231514 .
- ^ Вейкер, Элейн Дж.; «Предположение Oracle о тестировании программ», в материалах 13-й Международной конференции по системным наукам (ICSS), Гонолулу, Гавайи, январь 1980 г. , стр. 44-49.
- ^ Джалоте, Панкадж; Интегрированный подход к разработке программного обеспечения , Springer/Birkhäuser, 2005, ISBN 0-387-20881-X
- ^ Мейер, Бертран; Фива, Арно; Чупа, Илинка; Лейтнер, Андреас; Вэй, И; Стапф, Эммануэль (сентябрь 2009 г.). «Программы, которые проверяют себя». Компьютер . 42 (9): 46–55. дои : 10.1109/MC.2009.296 .
- ^ Перейти обратно: а б с д и ж г час Барр, Эрл Т.; Харман, Марк; Макминн, Фил; Шахбаз, Музаммил; Ю, Шин (ноябрь 2014 г.). «Проблема Oracle в тестировании программного обеспечения: опрос» (PDF) . Транзакции IEEE по разработке программного обеспечения . 41 (5): 507–525. дои : 10.1109/TSE.2014.2372785 .
- ^ Перейти обратно: а б Амманн, Пол; и Оффатт, Джефф; «Введение в тестирование программного обеспечения, 2-е издание», Cambridge University Press , 2016 г., ISBN 978-1107172012
- ^ Бёргер, Э (1999). «Проектирование и анализ систем высокого уровня с использованием абстрактных конечных автоматов». В Хаттере, Д.; Стефан, В; Траверсо, П; Ульман, М. (ред.). Прикладные формальные методы — FM-Trends 98 . Конспекты лекций по информатике. Том. 1641. стр. 1–43. CiteSeerX 10.1.1.470.3653 . дои : 10.1007/3-540-48257-1_1 . ISBN 978-3-540-66462-8 .
- ^ Петерс, ДК (март 1998 г.). «Использование тестовых оракулов, созданных на основе программной документации». Транзакции IEEE по разработке программного обеспечения . 24 (3): 161–173. CiteSeerX 10.1.1.39.2890 . дои : 10.1109/32.667877 .
- ^ Уттинг, Марк; Пречнер, Александр; Легард, Бруно (2012). «Таксономия подходов к тестированию на основе моделей» (PDF) . Тестирование, проверка и надежность программного обеспечения . 22 (5): 297–312. дои : 10.1002/stvr.456 . ISSN 1099-1689 .
- ^ Годель, Мари-Клод (2001). «Тестирование на основе формальных спецификаций, общий подход». Ин Крейнест, Д.; Штромайер, А. (ред.). Надежные программные технологии — Ада-Европа 2001 . Конспекты лекций по информатике. Том. 2043. стр. 35–48. дои : 10.1007/3-540-45136-6_3 . ISBN 978-3-540-42123-8 .
- ^ Перейти обратно: а б Вейкер, Э.Дж. (ноябрь 1982 г.). «О тестировании нетестируемых программ» . Компьютерный журнал . 25 (4): 465–470. дои : 10.1093/comjnl/25.4.465 .
- ^ Питерс, Деннис К. (1995). Генерация тестового оракула на основе программной документации (дипломная работа на степень магистра английского языка). Университет Макмастера. CiteSeerX 10.1.1.69.4331 .
- ^ Питерс, Деннис К.; Парнас, Дэвид Л. «Создание тестового оракула на основе программной документации» (PDF) . Материалы Международного симпозиума по тестированию и анализу программного обеспечения 1994 года . ИССТА. АКМ Пресс. стр. 58–65.
- ^ Робинсон, Гарри; Модельно-ориентированное тестирование с конечным числом состояний при небольших затратах , STAR West, 1999 г.
- ^ Хоффман, Дуглас; Анализ таксономии тестовых оракулов , Неделя качества, 1998 г.
- ^ Чжоу, ZQ; Чжан, С.; Хагенбухнер, М.; Це, ТД; Куо, Ф.-К.; Чен, Тайвань (2012). «Автоматическое функциональное тестирование сервисов онлайн-поиска». Тестирование, проверка и надежность программного обеспечения . 22 (4): 221–243. дои : 10.1002/stvr.437 . hdl : 10722/123864 .
- ^ Майер, Йоханнес; Гудерлей, Ральф (2004). «Тестирование оракулов с использованием статистических методов» (PDF) . Материалы Первого международного семинара по качеству программного обеспечения. Конспект лекций по информатике . Первый международный семинар по качеству программного обеспечения. Спрингер. стр. 179–189.
- ^ Хоффман, Дуглас; Оракулы эвристического тестирования , журнал по тестированию программного обеспечения и обеспечению качества, 1999 г.
Библиография
[ редактировать ]- Биндер, Роберт В. (1999). «Глава 18. Оракулы» в тестировании объектно-ориентированных систем: модели, шаблоны и инструменты , Addison-Wesley Professional, 7 ноября 1999 г., ISBN 978-0-201-80938-1