stringtranslate.com

Тестовый оракул

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

Термин «тестовый оракул» был впервые введен в статье Уильяма Э. Хаудена. [2] Дополнительные работы по различным видам оракулов были исследованы Элейн Вейукер . [3]

Оракул может работать отдельно от тестируемой системы; к нему можно обращаться во время выполнения теста , или его можно использовать до запуска теста с ожидаемыми результатами, закодированными в тестовой логике. [4]

Однако постусловия метода являются частью SUT, как автоматизированные оракулы в моделях проектирования по контракту . [5]

Определение правильного вывода для заданного ввода (и набора состояний программы или системы) известно как проблема оракула или проблема тестового оракула , [6] : 507  которую некоторые считают относительно сложной проблемой и которая включает в себя работу с проблемами, связанными с управляемостью и наблюдаемостью. [7]

Категории

Обзор исследовательской литературы, охватывающий период с 1978 по 2012 год [6], выявил несколько потенциальных категорий тестовых оракулов.

Указано

Указанный оракул обычно ассоциируется с формализованными подходами к моделированию программного обеспечения и построению программного кода. Он связан с формальной спецификацией , [8] проектированием на основе модели , которое может использоваться для генерации тестовых оракулов, [9] спецификацией перехода состояний, для которой оракулы могут быть получены для помощи в тестировании на основе модели [10] и тестировании соответствия протокола , [11] и проектированием по контракту , для которого эквивалентным тестовым оракулом является утверждение .

Определенные тестовые оракулы имеют ряд проблем. Формальная спецификация опирается на абстракцию, которая в свою очередь может иметь элемент неточности, поскольку все модели не могут охватить все поведение. [6] : 514 

Полученный

Производный тестовый оракул различает правильное и неправильное поведение, используя информацию, полученную из артефактов системы. Они могут включать документацию, результаты выполнения системы и характеристики версий SUT. [6] : 514  Наборы регрессионных тестов (или отчеты) являются примером производного тестового оракула — они построены на предположении, что результат предыдущей версии системы может быть использован в качестве вспомогательного средства (оракула) для будущей версии системы. Ранее измеренные характеристики производительности могут использоваться в качестве оракула для будущих версий системы, например, для запуска вопроса о наблюдаемом потенциальном ухудшении производительности. Текстовая документация из предыдущих версий системы может использоваться в качестве основы для руководства ожиданиями в будущих версиях системы.

Псевдооракул [6] : 515  попадает в категорию производных тестовых оракулов. Псевдооракул, как определено Вейукером [12], представляет собой отдельно написанную программу, которая может принимать те же входные данные, что и программа или SUT, так что их выходные данные можно сравнивать, чтобы понять, есть ли проблема, требующая исследования.

Частичный оракул [6] : 515  — это гибрид между указанным тестовым оракулом и производным тестовым оракулом. Он определяет важные (но не полные) свойства SUT. Например, метаморфическое тестирование использует такие свойства, называемые метаморфическими отношениями, в нескольких исполнениях системы.

Скрытый

Неявный тестовый оракул опирается на подразумеваемую информацию и предположения. [6] : 518  Например, может быть некоторый подразумеваемый вывод из сбоя программы, т. е. нежелательное поведение - оракул, чтобы определить, что может быть проблема. Существует ряд способов поиска и тестирования нежелательного поведения, некоторые называют это негативным тестированием, где есть специализированные подмножества, такие как фаззинг .

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

Человек

Человек может выступать в качестве тестового оракула. ​​[7] Этот подход можно отнести к категории количественных или качественных. [6] : 519–520  Количественный подход направлен на поиск нужного количества информации для сбора по SUT (например, результатов тестирования), чтобы заинтересованная сторона могла принять решения о соответствии целевому назначению или выпуске программного обеспечения. Качественный подход направлен на поиск репрезентативности и пригодности входных тестовых данных и контекста выходных данных SUT. Примером является использование реалистичных и репрезентативных тестовых данных и осмысление результатов (если они реалистичны). Они могут руководствоваться эвристическими подходами, такими как интуиция, эмпирические правила, контрольные списки и опыт, чтобы помочь адаптировать конкретную комбинацию, выбранную для SUT.

Примеры

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

Оракул согласованности сравнивает результаты одного выполнения теста с другим на предмет схожести. [16] Это еще один пример производного тестового оракула.

Оракул для программного обеспечения может быть второй программой, которая использует другой алгоритм для оценки того же математического выражения, что и тестируемый продукт. Это пример псевдооракула, который является производным тестовым оракулом. [12] : 466 

Во время поиска Google у нас нет полного оракула для проверки правильности числа возвращаемых результатов. Мы можем определить метаморфическое отношение [17] таким образом, что последующий суженный поиск даст меньше результатов. Это пример частичного оракула, который является гибридом между указанным тестовым оракулом и производным тестовым оракулом.

Статистический оракул использует вероятностные характеристики, [18] например, с анализом изображений, где диапазон определенности и неопределенности определяется для тестового оракула, чтобы объявить о совпадении или нет. Это будет примером количественного подхода в человеческом тестовом оракуле.

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

Ссылки

  1. ^ Эрл Т. Барр и др.; Проблема Oracle в тестировании программного обеспечения: обзор , 2015 г.
  2. ^ Howden, WE (июль 1978). «Теоретические и эмпирические исследования тестирования программ». Труды IEEE по программной инженерии . 4 (4): 293–298. doi :10.1109/TSE.1978.231514.
  3. ^ Вейукер, Элейн Дж.; «Предположение Oracle о тестировании программ», в Трудах 13-й Международной конференции по системным наукам (ICSS), Гонолулу, Гавайи, январь 1980 г. , стр. 44-49
  4. ^ Джалоте, Панкадж; Комплексный подход к разработке программного обеспечения , Springer/Birkhäuser, 2005, ISBN 0-387-20881-X 
  5. ^ Мейер, Бертран; Фива, Арно; Чиупа, Илинка; Лейтнер, Андреас; Вэй, Йи; Стапф, Эммануэль (сентябрь 2009 г.). «Программы, которые проверяют себя». Computer . 42 (9): 46–55. doi :10.1109/MC.2009.296.
  6. ^ abcdefgh Барр, Эрл Т.; Харман, Марк; Макминн, Фил; Шахбаз, Музаммил; Ю, Шин (ноябрь 2014 г.). «Проблема Oracle в тестировании программного обеспечения: обзор» (PDF) . IEEE Transactions on Software Engineering . 41 (5): 507–525. doi : 10.1109/TSE.2014.2372785 .
  7. ^ ab Амманн, Пол; и Оффатт, Джефф; «Введение в тестирование программного обеспечения, 2-е издание», Cambridge University Press , 2016, ISBN 978-1107172012 
  8. ^ Börger, E (1999). "Проектирование и анализ высокоуровневых систем с использованием абстрактных конечных автоматов". В Hutter, D; Stephan, W; Traverso, P; Ullman, M (ред.). Прикладные формальные методы — FM-Trends 98. Конспект лекций по информатике. Том 1641. С. 1–43. CiteSeerX 10.1.1.470.3653 . doi :10.1007/3-540-48257-1_1. ISBN  978-3-540-66462-8.
  9. ^ Питерс, ДК (март 1998 г.). «Использование тестовых оракулов, сгенерированных из программной документации». IEEE Transactions on Software Engineering . 24 (3): 161–173. CiteSeerX 10.1.1.39.2890 . doi :10.1109/32.667877. 
  10. ^ Utting, Mark; Pretschner, Alexander; Legeard, Bruno (2012). «Таксономия подходов к тестированию на основе моделей» (PDF) . Software Testing, Verification and Reliability . 22 (5): 297–312. doi :10.1002/stvr.456. ISSN  1099-1689.
  11. ^ Годель, Мари-Клод (2001). «Тестирование на основе формальных спецификаций, общий подход». В Craeynest, D.; Strohmeier, A (ред.). Reliable SoftwareTechnologies — Ada-Europe 2001. Lecture Notes in Computer Science. Vol. 2043. pp. 35–48. doi :10.1007/3-540-45136-6_3. ISBN 978-3-540-42123-8.
  12. ^ ab Weyuker, EJ (ноябрь 1982 г.). «О тестировании нетестируемых программ». The Computer Journal . 25 (4): 465–470. doi : 10.1093/comjnl/25.4.465 .
  13. ^ Питерс, Деннис К. (1995). Генерация тестового оракула из программной документации (диссертация на степень магистра инженерии). Университет Макмастера. CiteSeerX 10.1.1.69.4331 . 
  14. ^ Питерс, Деннис К.; Парнас, Дэвид Л. «Генерация тестового оракула из программной документации» (PDF) . Труды Международного симпозиума по тестированию и анализу программного обеспечения 1994 года . ISSTA. ACM Press. стр. 58–65.
  15. ^ Робинсон, Гарри; Тестирование на основе конечно-статистической модели на небольшом бюджете, STAR West 1999
  16. ^ Хоффман, Дуглас; Анализ таксономии для тестовых оракулов, Quality Week, 1998
  17. ^ Чжоу, ZQ; Чжан, S.; Хагенбухнер, M.; Це, TH; Куо, F.-C.; Чэнь, TY (2012). «Автоматизированное функциональное тестирование служб онлайн-поиска». Тестирование программного обеспечения, проверка и надежность . 22 (4): 221–243. doi :10.1002/stvr.437. hdl : 10722/123864 .
  18. ^ Майер, Йоханнес; Гудерлей, Ральф (2004). «Тестовые оракулы с использованием статистических методов» (PDF) . Труды Первого международного семинара по качеству программного обеспечения, заметки по информатике . Первый международный семинар по качеству программного обеспечения. Springer. стр. 179–189.
  19. ^ Хоффман, Дуглас; Эвристические тестовые оракулы, Журнал тестирования программного обеспечения и инженерного обеспечения качества, 1999

Библиография