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

В вычисление, программная инженерия, и тестирование программного обеспечения, а тестовый оракул (или просто оракул) - это механизм определения того, прошел ли тест или нет.[1] Использование оракулов включает сравнение результатов работы тестируемой системы для заданного прецедент вход, к выходным данным, которые оракул определяет, что продукт должен иметь. Термин «тестовый оракул» впервые был введен в статье Уильяма Э. Хаудена.[2] Дополнительная работа над различными видами оракулов была исследована Элейн Вейкер.[3]

Оракулы часто работают отдельно от тестируемой системы.[4] Тем не мение, метод постусловия являются частью тестируемой системы, поскольку автоматические оракулы в дизайн по контракту модели.[5] Определение правильного вывода для данного ввода (и набора состояний программы / системы) известно как проблема оракула или же тестовая проблема оракула,[6]:507 что намного сложнее, чем кажется, и включает в себя работу с проблемами, связанными с управляемостью и наблюдаемостью.[7] Для решения проблемы тестового оракула были предложены различные методы. Популярная техника метаморфическое тестирование.[8][9]

Категории

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

Указано

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

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

Полученный

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

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

Скрытый

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

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

Человек

Если указанные, производные или неявные тестовые оракулы не могут быть использованы, то для определения тестовых оракулов требуется участие человека. Их можно рассматривать как количественный и качественный подходы.[6]:519–520

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

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

Примеры

Общие оракулы включают:

  • технические характеристики и документация.[15][16] Формальная спецификация, используемая как вход для модельно-ориентированный дизайн и модельное тестирование был бы примером указанный тестовый оракул. Документация, которая не была формальная спецификация продукта обычно будет производный тестовый оракул, например руководство по использованию или установке, или запись характеристик производительности или минимальных требований к компьютеру для программного обеспечения.
  • другие продукты (например, оракул для программы может быть второй программой, использующей другой алгоритм для вычисления того же математического выражения, что и тестируемый продукт). Это пример производный тестовый оракул, псевдо-оракул.[14]:466
  • а эвристический оракул который предоставляет приблизительные или точные результаты для набора из нескольких тестовых входов.[17]
  • а статистический оракул который использует статистические характеристики,[18] например, с анализом изображений, где определен диапазон достоверности / неопределенности для того, чтобы тестовый оракул объявил совпадение или нет. Это был бы пример человеческий тестовый оракул.
  • а оракул согласованности который сравнивает результаты выполнения одного теста с другим на предмет сходства.[19] Это пример производный тестовый оракул.
  • а основанный на модели оракул который использует ту же модель для генерации и проверки поведения системы,[20] пример указанный тестовый оракул.
  • человеческий оракул (т.е. правильность тестируемой системы определяется путем ручного анализа).[7]

Рекомендации

  1. ^ Канер, Джем; Курс по тестированию программного обеспечения черного ящика, 2004
  2. ^ Howden, W.E. (Июль 1978 г.). «Теоретические и эмпирические исследования тестирования программ». IEEE Transactions по разработке программного обеспечения. 4 (4): 293–298. Дои:10.1109 / TSE.1978.231514.
  3. ^ Weyuker, Elaine J .; «Предположение Oracle о тестировании программ», в Труды 13-й Международной конференции по системным наукам (ICSS), Гонолулу, Гавайи, январь 1980 г., стр. 44-49
  4. ^ Джалоте, Панкадж; Комплексный подход к разработке программного обеспечения, Springer / Birkhäuser, 2005 г., ISBN  0-387-20881-X
  5. ^ Мейер, Бертран; Фива, Арно; Чупа, Илинка; Лейтнер, Андреас; Вэй, Йи; Стапф, Эммануэль (сентябрь 2009 г.). «Программы, которые тестируют себя». Компьютер. 42 (9): 46–55. Дои:10.1109 / MC.2009.296.
  6. ^ а б c d е ж грамм Барр, Эрл Т .; Харман, Марк; Макминн, Фил; Шахбаз, Музаммил; Ю, Шин (ноябрь 2014 г.). «Проблема Oracle в тестировании программного обеспечения: обзор» (PDF). IEEE Transactions по разработке программного обеспечения. 41 (5): 507–525. Дои:10.1109 / TSE.2014.2372785.
  7. ^ а б Амманн, Пауль; и Оффатт, Джефф; «Введение в тестирование программного обеспечения», Издательство Кембриджского университета, 2008, ISBN  978-0-521-88038-1
  8. ^ Сегура, Серджио; Фрейзер, Гордон; Санчес, Ана Б .; Руис-Кортес, Антонио (2016). «Обзор метаморфических испытаний». IEEE Transactions по разработке программного обеспечения. 42 (9): 805–824. Дои:10.1109 / TSE.2016.2532875. HDL:11441/38271.
  9. ^ Чен, Цун Юэ; Куо, Фей-Цзин; Лю, Хуай; Пун, Пак-Лок; Тауи, Дэйв; Tse, T.H .; Чжоу, Чжи Цюань (2018). «Метаморфические испытания: обзор проблем и возможностей» (PDF). Опросы ACM Computing. 51 (1): 4:1–4:27. Дои:10.1145/3143561.
  10. ^ Бёргер, Э (1999). Hutter, D; Стефан, W; Traverso, P; Ульман, М. (ред.). Проектирование и анализ систем высокого уровня с использованием абстрактных конечных автоматов. Прикладные формальные методы - 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.
  11. ^ Петерс, Д. (Март 1998 г.). «Использование тестовых оракулов, созданных из программной документации». IEEE Transactions по разработке программного обеспечения. 24 (3): 161–173. CiteSeerX  10.1.1.39.2890. Дои:10.1109/32.667877.
  12. ^ Уттинг, Марк; Пречнер, Александр; Легерд, Бруно (2012). «Таксономия подходов к тестированию на основе моделей» (PDF). Тестирование, проверка и надежность программного обеспечения. 22 (5): 297–312. Дои:10.1002 / stvr.456. ISSN  1099-1689.
  13. ^ Годель, Мари-Клод (2001). Craeynest, D .; Strohmeier, A (ред.). Тестирование на основе формальных спецификаций, общий подход. Надежные программные технологии - Ada-Europe 2001. Конспект лекций по информатике. 2043. С. 35–48. Дои:10.1007/3-540-45136-6_3. ISBN  978-3-540-42123-8.
  14. ^ а б Weyuker, E.J. (Ноябрь 1982 г.). «О тестировании непроверяемых программ». Компьютерный журнал. 25 (4): 465–470. Дои:10.1093 / comjnl / 25.4.465.
  15. ^ Питерс, Деннис К. (1995). Создание тестового Oracle из программной документации (Кандидатская диссертация). Университет Макмастера. CiteSeerX  10.1.1.69.4331.
  16. ^ Питерс, Деннис К .; Парнас, Дэвид Л. «Создание тестового Oracle из программной документации» (PDF). Труды Международного симпозиума по тестированию и анализу программного обеспечения 1994 г.. ISSTA. ACM Press. С. 58–65.
  17. ^ Хоффман, Дуглас; Оракулы эвристических тестов, Журнал "Тестирование программного обеспечения и инженерия качества", 1999 г.
  18. ^ Майер, Йоханнес; Гудерлей, Ральф (2004). «Тестируйте оракулы с помощью статистических методов» (PDF). Труды Первого международного семинара по качеству программного обеспечения, конспекты лекций по информатике. Первый международный семинар по качеству программного обеспечения. Springer. С. 179–189.
  19. ^ Хоффман, Дуглас; Анализ таксономии тестовых оракулов, Неделя качества, 1998 г.
  20. ^ Робинсон, Гарри; Тестирование на основе модели с конечным числом состояний на шнурке, STAR West 1999

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

  • Биндер, Роберт В. (1999). "Глава 18 - Оракулы" в Тестирование объектно-ориентированных систем: модели, шаблоны и инструменты, Addison-Wesley Professional, 7 ноября 1999 г., ISBN  978-0-201-80938-1