Задача разработки SAT-решателя для поиска верификационных наборов в тестировании программного обеспечения

Аспекты автоматической генерации верификационных наборов тестовых процедур. Разработка алгоритма нахождения тестовых наборов посредством трансляции программ в логические выражения и их преобразования для решения задачи выполнимости булевых формул.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 11.01.2018
Размер файла 287,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аннотация

Задача разработки SAT-решателя для поиска верификационных наборов в тестировании программного обеспечения

Д.С. Богданов, И.А. Ляпунова, Е.В. Тетруашвили, Южный федеральный университет, Ростов-на-Дону.

Данная работа посвящена автоматической генерации верификационных наборов тестовых процедур; предложен и разработан алгоритм нахождения тестовых наборов посредством трансляции программ в логические формулы и их преобразования для решения задачи выполнимости булевых формул.

Ключевые слова: тестовые наборы, автоматическая генерация, решатель, булевы ограничения

Актуальность разработки систем автоматизированного тестирования (SAT)

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

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

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

Разработка решателя

Задача о выполнимости булевых формул (the Boolean Satisfiability Problem или SAT) - задача, которая заключается в определении: существуют ли такие значения переменных, при которых данная булева формул (набор переменных, скобок и операций конъюнкции, дизъюнкции и логического отрицания) получает значение "истина". SAT является NP-полной задачей, поэтому она крайне важна для теории алгоритмов, и ее решение способно дать ответ на вопрос равенства классов P и NP [1, 2].

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

"NP-полнота" SAT заключается в том, что к ней сводится большое количество задач из класса NP за полиномиальное время (теорема Кука-Левина, [3]). Поэтому использование SAT-решателя может оказаться полезным для решения таких распространенных проблем, как составление расписания в учебных заведениях или построение рационального маршрута (задача коммивояжера). верификационный тестовая логическая булевая

В задаче о выполнимости дана булева формула Ц, которая состоит из N переменных, операторов конъюнкции (?), дизъюнкции (?) и отрицания (¬), а также скобок. Задача заключается в поиске ответа на вопрос, можно ли присвоить такие значения переменным, чтобы формула стала истинной.

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

В алгоритме мультиплатформенного SAT-решателя было решено использовать самое необходимое: распространение переменной, наблюдение за двумя литералами, а также CDCL (Conflict-Driven Clause Learning). Алгоритм будет основан на алгоритме Дэвиса-Патнема-Логемана-Лавленда (DPLL) - это итеративная процедура, в основе которой стоит подстановка в формулу значений с последующим "распространением булевых ограничений" (Boolean Constraint Propagation, BCP), наблюдение за конфликтами и бэктрекинг.

Распространение булевых ограничений основано на простом правиле единичного дизъюнкта.

Обычно решение SAT задачи заключается лишь в ответе на вопрос "существует ли такой набор значений переменных, при котором формула обращается в 1". Но на практике всегда важно знать этот набор, называемый "сертификатом". Поэтому очевидно, что распространение булевых ограничений должно сопровождаться присвоением единичным дизъюнктам значения 1.

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

При возникновении конфликтной ситуации запоминается полученное частичное приписание, которое не приведет к решению.

Необходимо учесть, что задачи для CNF-SAT-решателей принято формулировать следующим образом: первая строка текстового документа должна отображать информацию о "проблеме" (через пробел вводится количество переменных и количество дизъюнктов); каждая следующая строка представляет собой дизъюнкт, переменные в котором также разделяются пробелом; каждый дизъюнкт завершается нулем "0"; в качестве переменных выступают числа, соответствующие индексу переменной; если перед переменной стоит знак "-", то это обозначает отрицание данной переменной.

Пример задачи:

p cnf 42 133

-1-7 0

-1-13 0

-1-19 0

-1-25 0

-1-31 0

-1-37 0

-7-13 0

-7-19 0

-7-25 0

……………………………. [119 дизъюнктов]

18 17 16 15 14 13 0

24 23 22 21 20 19 0

30 29 28 27 26 25 0

36 35 34 33 32 31 0

42 41 40 39 38 37 0

Для реализации мультиплатформенности было решено написать программу с использованием веб-технологий (HTML, CSS, JavaScript). Таким образом, данный решатель представляет собой веб-страницу с полем ввода и кнопкой, запускающей алгоритм решения задачи.

Примеры работы решателя можно увидеть на рисунках 1-2.

Рис. 1 - Пример работы программы (формула выполнима - SAT)

Рис. 2 - Пример работы программы (формула невыполнима - UNSAT)

Получившийся решатель может быть запущен на большинстве устройств, имеющих браузер.

Результаты решения формул в тестовых наборах представлены в таблице №1. Здесь большое значение имеют как характеристики вычислительных ресурсов, так и время работы программы [4, 5].

Таблица 1 - Время решения формул

Число переменных

Число дизъюнкт

Время решения (сек)

5

40

0.00633

10

60

0.0084

20

150

0.01491

50

300

0.04902

100

1000

0.12906

100

1500

0.14763

200

3000

0.38784

1000

8000

1.11069

2000

10000

1.30737

Поиск всех выполняющих наборов булевских формул получил широкое применение в таких областях как проверка неограниченных символьных моделей, QBF-задачах, задачах булевой оптимизации и многих других [6-9]. Особый интерес вызывает возможность реализации подобных алгоритмов на ГРИД-системе [10]. Можно сделать вывод, что полученный решатель заметно уступает в производительности реализованному на С++ MiniSAT, но в ходе отладки и тестирования программы было установлено, что решатель работает корректно и справляется с поставленными перед ним задачами. Также были проведены тесты на мобильных устройствах и различных версиях браузеров.

Литература

1. J. Gu, P.W. Purdom, J. Franco, B.W. Wah, Algorithms for satisfiability (SAT) problem: A survey. DIMACS Volume Series on Discrete Mathematics and Theoretical Computer Science: The Satisfiability (SAT) Problem, vol. 35, American Mathematical Society, Providence, RI, pp. 19-151.

2. N. Een, N. Sorensson. "An Extensible SAT-solver" in SAT 2003, pp. 502-508.

3. Levin, L. A. (1973). Universal sequential search problems. Problems of Information Transmission, 9:3, pp. 265-266.

4. Кажаров Х.А., Ляпунова И.А., Чистяков А.Е. Программная реализация численного решения обратной задачи транспорта веществ // Инженерный вестник Дона, 2015. №4 URL: ivdon.ru/ru/magazine/archive/n4y2015/3437.

5. Дегтярева Е.Е., Проценко Е.А., Чистяков А.Е. Программная реализация трехмерной математической модели транспорта взвеси в мелководных акваториях // Инженерный вестник Дона, 2012. № 4-2 URL: ivdon.ru/ru/magazine/archive/n4p2y2012/1283.

6. Семёнов А.А. О преобразованиях Цейтина в логических уравнениях - Теоретические основы прикладной дискретной математики, 2009. - C. 28-50.

7. Mitchell D. Linear Time: Unit Propagation and Horn-SAT // Notes on Satisfiability-Based Problem Solving, 2015. pp. 1-5.

8. Цейтин Г.С. О сложности вывода в исчислении высказываний// Записки научных семинаров ЛОМИ АН СССР. 1968. Т.8. C.234-259.

9. Semenov, A., Zaikin, O.: Using Monte Carlo method for searching partitionings of hard variants of Boolean satisfiability problem. In: Malyshkin, V. (ed.) Parallel Computing Technologies - 13th International Conference, PaCT 2015, Petrozavodsk, Russia, August 31 - September 4, 2015, Proceedings. Lecture Notes in Computer Science, vol. 9251, pp. 222-230. Springer (2015).

10. Курейчик В.М., Таран А.Е., Ляпунова И.А. Реализация муравьиного алгоритма на ГРИД-системе// Вестник Ростовского государственного университета путей сообщения. 2015. № 4 (60). С. 48-52.

References:

1. J. Gu, P.W. Purdom, J. Franco, B.W. Wah, Algorithms for satisfiability (SAT) problem: A survey. DIMACS Volume Series on Discrete Mathematics and Theoretical Computer Science: The Satisfiability (SAT) Problem, vol. 35, American Mathematical Society, Providence, RI, pp. 19-151.

2. N. Een, N. Sorensson. "An Extensible SAT-solver" in SAT 2003, pp. 502-508.

3. Levin, L. A. (1973). Universal sequential search problems. Problems of Information Transmission, 9:3, pp. 265-266.

4. Kazharov H.A., Lyapunova I.A., Chistjakov A.E. Inћenernyj vestnik Dona (Rus), 2015, №4. URL: ivdon.ru/ru/magazine/archive/n4y2015/3437.

5. Degtyareva E.E., Protsenko E.A., Chistyakov A.E. Inћenernyj vestnik Dona (Rus), 2012, №4-2. URL: ivdon.ru/ru/magazine/archive/n4p2y2012/1283.

6. A.A. Semjonov, PDM, 2009, № 4(6), pp. 28-50.

7. Mitchell D. Notes on Satisfiability-Based Problem Solving, 2015, pp.1-5.

8. G.S. Cejtin. Zap. nauchn. sem. LOMI, 1968, tom 8, pp. 234-259.

9. Semenov, A., Zaikin, O.: Using Monte Carlo method for searching partitionings of hard variants of Boolean satisfiability problem. In: Malyshkin, V. (ed.) Parallel Computing Technologies - 13th International Conference, PaCT 2015, Petrozavodsk, Russia, August 31 - September 4, 2015, Proceedings. Lecture Notes in Computer Science, vol. 9251, pp. 222-230. Springer (2015).

10. Kurejchik V.M., Taran A.E., Ljapunova I.A. Vestnik Rostovskogo gosudarstvennogo universiteta putej soobshhenija, 2015, № 4 (60), pp. 48-52.

Размещено на Allbest.ru

...

Подобные документы

  • Создание информационного сайта "Компьютерные технологии в автоперевозках", назначение и область применения разработки. Инструкции по инсталляции программного обеспечения и его эксплуатации, по использованию тестовых наборов. Составление сметы затрат.

    дипломная работа [2,2 M], добавлен 10.08.2014

  • Полные и стохастические неполные алгоритмы локального поиска для решения задачи булевой выполнимости. Модели преобразования операторов. Реализация решателя, применяющего модифицированный алгоритм gNovelty, расширенный на использование непрерывных форм.

    курсовая работа [531,9 K], добавлен 27.09.2016

  • Таблица тестовых наборов, код программы, скриншоты. Разработка программы вычисления заданного целочисленного выражения для данных в формате 16 бит. Вычисление принадлежности точки с заданными координатами заштрихованной области. Разветвления в С++.

    лабораторная работа [1,3 M], добавлен 23.11.2014

  • Применение тестовых заданий на уроках информатики. Основные виды тестовых заданий. Подбор тестовых заданий по темам курса информатики. Программные продукты для разработки и создания тестовых заданий. Общие правила оформления компьютерных тестовых заданий.

    курсовая работа [2,2 M], добавлен 28.09.2011

  • Составление программы, которая по введенным значениям x, y и номеру действия выполняет то или иное арифметическое действие над положительными числами. Алгоритм и код программы. Проведение тестовых наборов. Тестирование и результат работы программы.

    лабораторная работа [961,5 K], добавлен 23.11.2014

  • Исследование основных концепций информационного поиска: булева и векторная модели, меры подобия и определение веса индексных терминов. Оценка неранжированных наборов результата поиска. Реализация векторной модели в среде Matlab, листинг программы.

    реферат [717,1 K], добавлен 15.07.2012

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

    курсовая работа [3,3 M], добавлен 28.08.2012

  • Рассмотрение теоретических и методологических основ создания компьютерных тестов. Описание практической разработки программного обеспечения для контроля знаний студентов. Сравнение экономических и технических параметров аналогичных тестовых программ.

    дипломная работа [1,3 M], добавлен 14.07.2010

  • Основные принципы разработки программ. Разработка алгоритма решения задачи о пересечении двухвыпуклым многоугольником. Реализация разработанного алгоритма на языке программирования. Тесты для проверки работы программы. Графическая иллюстрация решения.

    курсовая работа [53,3 K], добавлен 20.11.2015

  • Разработка алгоритма реализации на ЭВМ процесса поиска кратчайшего пути в графе методом Дейкстры. Программная реализация алгоритма поиска кратчайшего пути между двумя любыми вершинами графа. Проверка работоспособности программы на тестовых примерах.

    реферат [929,8 K], добавлен 23.09.2013

  • Разработка программного комплекса и описание алгоритма. Разработка пользовательского интерфейса. Анализ тестовых испытаний программного блока. Защита пользователей от воздействия на них опасных и вредных факторов. Режимы работы программного комплекса.

    дипломная работа [1,7 M], добавлен 14.03.2013

  • Основные понятия и определения теории графов: теоремы и способы задания графа, сильная связность графов. Построение блок-схем алгоритма, тестирование разработанного программного обеспечения, подбор тестовых данных, анализ и исправление ошибок программы.

    курсовая работа [525,6 K], добавлен 14.07.2012

  • Описание решения задачи, ее постановка, общий подход к решению. Представление исходных данных, условий задачи и целей ее решения. Составление алгоритма решения поставленной задачи. Написание программного обеспечения и тестирование конечного продукта.

    курсовая работа [1,1 M], добавлен 03.07.2011

  • Общая характеристика прикладных программ, предназначенных для проведения табличных расчетов. Выделение параметров программного обеспечения, необходимого для решения финансовых задач. Разработка алгоритма решения поставленной задачи средствами MS Excel.

    контрольная работа [2,6 M], добавлен 18.01.2016

  • Транспортная задача как одна из самых распространенных специальных задач линейного программирования: понятие, основное назначение. Формальное описание метода минимального элемента. Характеристика этапов разработки алгоритма решения поставленной задачи.

    курсовая работа [713,3 K], добавлен 19.10.2012

  • Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.

    курсовая работа [241,7 K], добавлен 11.12.2009

  • Понятие, виды и функции тестов, компьютерное тестирование. Государственные стандарты создания компьютерных тестов и практическая реализация комплекса генерации тестов: СУБД и язык программирования, пользовательский интерфейс, экономическая эффективность.

    дипломная работа [2,1 M], добавлен 29.06.2012

  • Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.

    курсовая работа [586,3 K], добавлен 04.04.2015

  • Классификация методов оптимизации. Обзор и выбор языка C#. Алгоритмический анализ задачи, описание алгоритма решения. Графические схемы разработанных алгоритмов. Разработка приложения и результаты тестовых испытаний. Интерфейс пользователя, тестирование.

    курсовая работа [1,6 M], добавлен 08.03.2016

  • Назначение и область применения программного продукта. Построение ER-диаграммы. Получение наборов отношений. Реализация SQL-запросов в Access. Порядок следования строк и столбцов. Обработка информации в базах данных. Системы управления базами данных.

    курсовая работа [1,2 M], добавлен 19.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.