В concolic тестировании, что означает конкретное исполнение?

Я столкнулся с терминами «конкретное и символическое исполнение», когда рассматривал концепцию конколическое тестирование. (Упомянутая там статья "CUTE: Concolic модульного тестирования для C" использует этот термин в своем абстрактном разделе.)

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

Кто-нибудь может подтвердить, что означает «конкретное исполнение»? Несмотря на мои поиски, я не смог найти прямых цитат/явных утверждений.

Насколько я понял, «конкретное выполнение» означает «выполнение программы с фактическими входными значениями, в отличие от символического выполнения, которое предполагает символические значения для переменных, входных данных и т. д.». Если я не прав, поправьте меня (если можно на небольшом примере).


person Suhas Chikkanna    schedule 24.01.2015    source источник


Ответы (2)


Исполнение Concolic представляет собой сочетание исполнения CONCrete и исполнения symbOLIC с целью осуществимости.

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

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

Надеюсь, это ответит на ваш вопрос

person João Matos    schedule 24.04.2015

В контексте, который вы упомянули, я почти уверен, что «конкретное выполнение» означает фактический запуск программы на определенных входных данных и наблюдение за тем, что происходит. В статье «concolic testing», на которую вы ссылались, предлагается гибридный подход между тестированием конкретных входных данных (конкретное выполнение, которое является полным, но ненадежным) и символическим тестированием (символическое выполнение, которое звучит, но не полностью).

Надеюсь это поможет!

person templatetypedef    schedule 24.01.2015
comment
Привет, я как раз искал этот ответ, и я делаю вывод из этой статьи. Спасибо за подтверждение. Также могу ли я узнать, является ли этот термин стандартизированным, или он варьируется в каждом другом контексте, или этот термин просто используется автором в статье как часть английского языка. (как упоминалось другими комментаторами в этом посте)? Я чувствую, что этот термин имеет стандартное значение по тому, как он используется, но опять же нет подтверждения / не уверен в этом. - person Suhas Chikkanna; 24.01.2015
comment
@SuhasChikkanna Я не уверен. Я никогда не видел его раньше, но я также не много работаю над проверкой программ. - person templatetypedef; 24.01.2015
comment
Тем не менее, я продолжу искать ответ и когда-нибудь продолжу этот пост. Это очень любезный ответ от вас, который я считаю действительно правильным. Пожалуйста, дайте мне время, прежде чем я подтвержу это, еще раз большое спасибо! - person Suhas Chikkanna; 24.01.2015
comment
Не могли бы вы объяснить, почему вы сказали, что конкретное исполнение нецелесообразно? Я не совсем понимаю. Для какой цели вы имели в виду, что это несостоятельно? - person user541686; 09.09.2015
comment
@Mehrdad Я использовал этот термин в контексте формальной логики. Надежность означает, что если тесты сообщают, что программа верна, то программа действительно верна, а полнота означает, что если программа верна, тесты сообщат, что она верна. Конкретное выполнение завершено (если программа действительна, она пройдет тест), но ненадежно (неправильная программа может пройти все тесты в наборе тестов). - person templatetypedef; 09.09.2015
comment
@templatetypedef: о, да, я знаю, что означает правильность в формальной логике, но я не думал об этом правильно. Хорошо спасибо! - person user541686; 09.09.2015