Что нельзя использовать в качестве источника тестового оракула для ожидаемого результата

Обновлено: 21.11.2024

Я знаю определение тестирующего оракула, но мне кажется, что оно переоценено. У меня есть спецификация, зачем мне думать об оракулах? Я просто сравниваю то, что хочет спецификация и что делает программа. Или у меня есть варианты использования, что угодно. Когда я читаю об оракулах в книгах, мне кажется, что это отдельная наука. Есть ли что-то еще за этой концепцией? Может быть, я просто не понял его смысла.

Оракул состоит из генератора и компаратора. В чем смысл компаратора, если вы просто проверяете, равен ли фактический результат ожидаемому результату? Как еще это можно проверить?

Что вы называете "оракулом"? Вы говорите: «У меня есть спецификация, зачем мне думать об оракулах?», но в статье Википедии Oracle (тестирование программного обеспечения) самым первым приведенным примером оракула являются «спецификации и документация».

Ну, Википедия не является авторитетным источником, ИМО. В книгах говорится, что «это механизм для определения того, пройден ли тест или нет». или "В тестировании программного обеспечения механизм, используемый для получения ожидаемых результатов, называется оракулом".

@Carson63000 Не могли бы вы объяснить мне также концепцию «Компаратора» и «Генератора»? Потому что я не думаю, что это ясно из фразы «Oracle — это спецификация».

@user970696 Википедия обычно является прекрасным источником тем по программированию. Существует множество книг с плохими советами, которые никогда не меняются, но статьи WP — это проекты сообщества, а мусор, как правило, вычищается.

2 ответа 2

У меня есть спецификация, зачем мне думать об оракулах? Я просто сравниваю то, что хочет спецификация, и то, что делает программа.

Дело в следующем: что, если у вас нет спецификации или спецификация сложнее, чем просто список входных и ожидаемых выходных данных? Некоторые примеры:

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

«Oracle» — это просто более общий термин, чем спецификация.

В чем смысл компаратора, если вы просто проверяете, равен ли фактический результат ожидаемому результату?

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

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

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

Ответы есть у Oracle.

Пример . Если у вас есть один набор данных, скажем, для налогового заявления, человек, зарабатывающий X, с вычетами Y и другими факторами окружающей среды, такими как количество детей и т. д., компаратор возьмет эти данные и рассчитает сумму налога. , затем сравните с тем, что выводит программа; чтобы увидеть, правильно ли он понял. Если они не совпадают, значит, один из них ошибся. Будем надеяться, что приложение или оракул не являются хорошим оракулом.

Я не совсем понимаю концепцию оракула для тестирования программного обеспечения. Там написано:

Оракул — это механизм для определения того, прошла ли программа тест или нет.

Рассмотрите следующий код:

Тестируемый класс всегда возвращает сумму двух целых чисел.
Я передаю в качестве параметра 2 и 3, а ожидаю 5. 2 и 3 будут суммироваться и сравниваться с ожидаемым значением (5). В этом случае тест проходит успешно.

Как именно мне может помочь оракул? Участвует ли в этом примере оракул?

Мне тоже интересно об этом узнать, поскольку концепция тестового оракула всегда казалась мне расплывчатой. Мое понимание (которое может быть неправильным, отсюда и мой интерес) состоит в том, что средство запуска тестов является примером тестового оракула. (В вашем случае объект тестера.)

2 ответа 2

Тестовый оракул — это источник информации о том, является ли вывод программы (или функции, или метода) правильным или нет.

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

Оракул может быть

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

Концепция если и не расплывчата, то, по крайней мере, очень широка.

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

В вашем примере вы использовали свою личную способность выполнять алгоритм сложения в качестве своего оракула. Вместо этого вы можете использовать другую реализацию этого алгоритма в качестве оракула:

Я знаю определение тестирующего оракула, но мне кажется, что оно переоценено. У меня есть спецификация, зачем мне думать об оракулах? Я просто сравниваю то, что хочет спецификация и что делает программа. Или у меня есть варианты использования, что угодно. Когда я читаю об оракулах в книгах, мне кажется, что это отдельная наука. Есть ли что-то еще за этой концепцией? Может быть, я просто не понял его смысла.

Оракул состоит из генератора и компаратора. В чем смысл компаратора, если вы просто проверяете, равен ли фактический результат ожидаемому результату? Как еще это можно проверить?

Что вы называете "оракулом"? Вы говорите: «У меня есть спецификация, зачем мне думать об оракулах?», но в статье Википедии Oracle (тестирование программного обеспечения) самым первым приведенным примером оракула являются «спецификации и документация».

Ну, Википедия не является авторитетным источником, ИМО. В книгах говорится, что «это механизм для определения того, пройден ли тест или нет». или "В тестировании программного обеспечения механизм, используемый для получения ожидаемых результатов, называется оракулом".

@Carson63000 Не могли бы вы объяснить мне также концепцию «Компаратора» и «Генератора»? Потому что я не думаю, что это ясно из фразы «Oracle — это спецификация».

@user970696 Википедия обычно является прекрасным источником тем по программированию. Существует множество книг с плохими советами, которые никогда не меняются, но статьи WP — это проекты сообщества, а мусор, как правило, вычищается.

2 ответа 2

У меня есть спецификация, зачем мне думать об оракулах? Я просто сравниваю то, что хочет спецификация, и то, что делает программа.

Дело в следующем: что, если у вас нет спецификации или спецификация сложнее, чем просто список входных и ожидаемых выходных данных? Некоторые примеры:

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

«Oracle» — это просто более общий термин, чем спецификация.

В чем смысл компаратора, если вы просто проверяете, равен ли фактический результат ожидаемому результату?

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

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

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

Ответы есть у Oracle.

Пример . Если у вас есть один набор данных, скажем, для налогового заявления, человек, зарабатывающий X, с вычетами Y и другими факторами окружающей среды, такими как количество детей и т. д., компаратор возьмет эти данные и рассчитает сумму налога. , затем сравните с тем, что выводит программа; чтобы увидеть, правильно ли он понял. Если они не совпадают, значит, один из них ошибся. Будем надеяться, что приложение или оракул не являются хорошим оракулом.

Оракул — это механизм определения того, прошла ли программа тест или нет.

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

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

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

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

Следующие примеры иллюстрируют использование оракулов:

Авторское право (c) Cem Kaner 2004

Эти примечания частично основаны на исследовании, поддержанном грантом NSF EIA-0113539 ITR/SY+PE: «Улучшение образования тестировщиков программного обеспечения». Любые мнения, выводы и выводы или рекомендации, выраженные в этом материале, принадлежат автору (авторам) и не обязательно отражают точку зрения Национального научного фонда.

Я не совсем понимаю концепцию оракула для тестирования программного обеспечения. Там написано:

Оракул — это механизм для определения того, прошла ли программа тест или нет.

Рассмотрите следующий код:

Тестируемый класс всегда возвращает сумму двух целых чисел.
Я передаю в качестве параметра 2 и 3, а ожидаю 5. 2 и 3 будут суммироваться и сравниваться с ожидаемым значением (5). В этом случае тест проходит успешно.

Как именно мне может помочь оракул? Участвует ли в этом примере оракул?

Мне тоже интересно об этом узнать, поскольку концепция тестового оракула всегда казалась мне расплывчатой. Мое понимание (которое может быть неправильным, отсюда и мой интерес) состоит в том, что средство запуска тестов является примером тестового оракула. (В вашем случае объект тестера.)

2 ответа 2

Тестовый оракул — это источник информации о том, является ли вывод программы (или функции, или метода) правильным или нет.

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

Оракул может быть

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

Концепция если и не расплывчата, то, по крайней мере, очень широка.

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

В вашем примере вы использовали свою личную способность выполнять алгоритм сложения в качестве своего оракула. Вместо этого вы можете использовать другую реализацию этого алгоритма в качестве оракула:

Читайте также: