Тип работы:
Предмет:
Язык работы:


Исследование инструментов фаззинга для генерации модульных тестов на Java

Работа №128299

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы27
Год сдачи2021
Стоимость4340 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
31
Не подходит работа?

Узнай цену на написание


1. Введение 5
2. Постановка задачи 7
3. Обзор 8
3.1. Терминология 8
3.2. Фаззинг 8
3.2.1. История 9
3.2.2. Виды фаззинга 9
3.2.3. Инструменты 10
3.3. Генерация тестов 11
3.3.1. Случайное тестирование 12
3.3.2. Тестирование на основе поиска 13
3.3.3. Символьное исполнение 14
3.3.4. Сравнение 15
3.3.5. Вывод 16
4. Особенности реализации системы 17
4.1. Стек технологий 17
4.2. Процесс создания теста 17
4.3. Архитектура системы 18
4.4. Детали реализации 19
4.4.1. Генераторы 19
4.4.2. Фаззинг 20
4.4.3. Построение утверждений 20
5. JUnit Testing Tool Competition 22
6. Эксперименты 24
6.1. Постановка экспериментов 24
6.1.1. Набор данных 24
6.1.2. Временной бюджет 24
6.1.3. Метрики 25
6.2. Результаты 25
7. Заключение 26
Список литературы 27

На сегодняшний день создано огромное количество программных продуктов, и их количество продолжает расти. На создание, тестирование, сопровождение требуются значительные ресурсы; если проект содержит миллионы строк программного кода, то ресурсов может потребоваться немыслимо много, и даже в таком случае выпустить продукт без дефектов и поддерживать его на должном уровне качества — задача трудновыполнимая [23]. При этом цена на обнаружение и исправление ошибки с течением времени значительно растёт [20], и не обнаруженный вовремя дефект может приводить к миллионным убыткам. Например, ошибка в программном обеспечении Маринера-1 стоила NASA сотни миллионов долларов.
Программисты, даже самые высококвалифицированные, совершают ошибки. Поэтому для повышения качества кода и минимизации количества дефектов конечного продукта необходимо проводить тестирование, начиная с самых ранних этапов разработки. Модульное тестирование — вид тестирования, ориентированный на обнаружение дефектов и программных регрессий в отдельных модулях системы [4]. Однако создание модульных тестов и поддержание их в актуальном состоянии — трудоёмкая деятельность, к тому же часто требующая написания большого количества шаблонного кода. Поэтому актуальна задача по автоматизации этого процесса.
Имеется множество инструментов, решающих данную задачу [9,17, 21], но покрытие кода при их использовании не максимально и может быть улучшено [15]. В текущей работе для повышения покрытия рассматривается идея комбинирования уже существующих инструментов генерации модульных тестов с фаззингом — исполнением программы с передачей на вход неправильных, неожиданных или случайных данных. Также представляет интерес то, каким образом различные виды фаззеров работают с различными алгоритмами генерации тестов, что в дальнейшем может быть использовано для создания собственного инструмента для генерации тестов.
В рамках данной работы будут рассмотрены основные инструменты для генерации модульных тестов и фаззинга, а также создана система, совмещающая эти инструменты, которая должна повысить покрытие тестируемого кода и позволить исследовать совместную работу инструментов.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках данной работы были получены следующие результаты:
• создана система , совмещающая инструменты генерации тестов и фаззинга
— добавлены генераторы Randoop, EvoSuite;
— добавлен фаззер JQF+Zest;
• созданная система интегрирована в плагин к IntelliJ IDEA UTBot и также может быть запущена в инфраструктуре Java Unit Testing Tool Competition;



[1] Arcuri A., Iqbal M. Z., Briand L. Random Testing: Theoretical Re¬sults and Practical Implications //IEEE Transactions on SoftwareEngineering. —2012. —Vol. 38, no. 2. —P. 258-277.
[2] The Art, Science, and Engineering of Fuzzing: A Survey / V. J. M. Manes, H. Han, C. Han et al. //IEEE Transactions on Soft¬ware Engineering. — 2019. — P. 1-1.
[3] Cadar Cristian, Dunbar Daniel, Engler Dawson. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Sys¬tems Programs // Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. — OSDI’08. — USA : USENIX Association, 2008. — P. 209-224.
[4] Cohn Mike. Succeeding with Agile: Software Development Us¬ing Scrum. — 1st edition. — Addison-Wesley Professional, 2009. — ISBN:0321579364.
[5] Combining Unit-Level Symbolic Execution and System-Level ConcreteExecution for Testing Nasa Software / Corina S. Pundefinedsundefine- dreanu, Peter C. Mehlitz, David H. Bushnell et al. // Proceedings of the 2008 International Symposium on Software Testing and Analy¬sis. — ISSTA ’08. — New York, NY, USA : Association for Computing Machinery, 2008.—P. 15-26. — Access mode: https://doi.org/10.1145/1390630.1390635 (online; accessed: 17.12.2020).
[6] Cseppento Lajos, Micskei Zoltan. Evaluating code-based test input generator tools //Software Testing, Verification and Reliability. — 2017. —Vol. 27, no. 6. —P. e1627. — e1627 stvr.1627.
[7] Devroey Xavier, Panichella Sebastiano, Gambi Alessio.Java UnitTesting Tool Competition: Eighth Round // Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops. — ICSEW’20. — New York, NY, USA : Association for Computing Machinery, 2020. — P. 545-548. — Access mode: https://doi.org/10.1145/3387940.3392265 (online; accessed: 17.12.2020).
[8] Feedback-Directed Random Test Generation/ Carlos Pacheco, Shu- vendu K. Lahiri, Michael D. Ernst, Thomas Ball // Proceedings of the 29th International Conference on Software Engineering. — ICSE ’07. — USA : IEEE Computer Society, 2007. — P. 75-84. — Access mode: https://doi.org/10.1109/ICSE.2007.37 (online; accessed: 17.12.2020).
[9] Fraser Gordon, Arcuri Andrea.EvoSuite: Automatic Test Suite Gen-eration for Object-Oriented Software // Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Founda-tions of Software Engineering. — ESEC/FSE ’11. — New York, NY, USA : Association for Computing Machinery, 2011.—P. 416-419.— Access mode: https://doi.org/10.1145/2025113.2025179 (online; accessed: 17.12.2020).
[10] Fraser G., Arcuri A. Whole Test Suite Generation //IEEE Transac¬tions on Software Engineering. — 2013. —Vol. 39, no. 2. — P. 276-291.
[11] Fuzzing: State of the Art / H. Liang, X. Pei, X. Jia et al. //IEEETransactions on Reliability. — 2018. — Vol. 67, no. 3. — P. 1199-1218.
[12] Godefroid Patrice.Test Generation Using Symbolic Execution// IARCS Annual Conference on Foundations of Software Technol¬ogy and Theoretical Computer Science (FSTTCS 2012) / Ed. by Deepak D’Souza, Telikepalli Kavitha, Jaikumar Radhakrishnan. — Vol. 18 of Leibniz International Proceedings in Informatics (LIPIcs). — Dagstuhl, Germany : Schloss Dagstuhl-Leibniz-Zentrum fuer Infor- matik, 2012.—P. 24-33. — Access mode: https://drops.dagstuhl.de/opus/volltexte/2012/3845 (online; accessed: 17.12.2020).
[13] An Industrial Evaluation of Unit Test Generation: Finding Real Faultsin a Financial Application/ M. M. Almasi, H. Hemmati, G. Fraser et al. // 2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).— 2017. —P. 263-272.
[14] Kersten Rody, Luckow Kasper, Pasareanu Corina S.POSTER: AFL-Based Fuzzing for Java with Kelinci // Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. — CCS ’17. — New York, NY, USA : Association for Computing Ma¬chinery, 2017. — P. 2511-2513. — Access mode: https://doi.org/10.1145/3133956.3138820 (online; accessed: 17.12.2020).
[15] Kifetew Fitsum, Devroey Xavier, Rueda Urko.Java Unit TestingTool Competition: Seventh Round// Proceedings of the 12th Inter¬national Workshop on Search-Based Software Testing. — SBST ’19. — Montreal, Quebec, Canada : IEEE Press, 2019. — P. 15-20. — Ac¬cess mode: https://doi.org/10.1109/SBST.2019.00014 (online; ac¬cessed: 17.12.2020).
[16] King James C. Symbolic Execution and Program Testing //Com-mun. ACM. — 1976. — Jul.—Vol. 19, no. 7. — P. 385-394. — Access mode: https://doi.org/10.1145/360248.360252 (online; accessed: 17.12.2020).
[17] Pacheco Carlos, Ernst Michael D.Randoop: Feedback-Directed Ran¬dom Testing for Java// Companion to the 22nd ACM SIGPLAN Con¬ference on Object-Oriented Programming Systems and Applications Companion. — OOPSLA ’07. — New York, NY, USA : Association for Computing Machinery, 2007. — P. 815-816. — Access mode: https://doi.org/10.1145/1297846.1297902 (online; accessed: 17.12.2020).
[18] Padhye Rohan, Lemieux Caroline, Sen Koushik.JQF: Coverage-Guided Property-Based Testing in Java// Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis. — ISSTA 2019. — New York, NY, USA : Association for Computing Machinery, 2019. — P. 398-401. — Access mode: https://doi.org/10.1145/3293882.3339002 (online; accessed: 17.12.2020).
[19] PerfFuzz: Automatically Generating Pathological Inputs / Caro¬line Lemieux, Rohan Padhye, Koushik Sen, Dawn Song // Proceed¬ings of the 27th ACM SIGSOFT International Symposium on Soft¬ware Testing and Analysis. — ISSTA 2018. — New York, NY, USA : Association for Computing Machinery, 2018. — P. 254-265. — Ac¬cess mode: https://doi.org/10.1145/3213846.3213874 (online; ac¬cessed: 17.12.2020).
[20] S.M.K Quadri, Farooq Sheikh Umar. Software Testing - Goals, Prin-ciples, and Limitations //International Journal of Computer Applica-tions.—2010.—09.—Vol. 6.
[21] SUSHI: A Test Generator for Programs with Complex StructuredInputs / Pietro Braione, Giovanni Denaro, Andrea Mattavelli, Mauro Pezze // Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings.—ICSE ’18.— New York, NY, USA : Association for Computing Machinery, 2018. — P. 21-24. — Access mode: https://doi.org/10.1145/3183440.3183472 (online; accessed: 17.12.2020).
[22] Semantic Fuzzing with Zest / Rohan Padhye, Caroline Lemieux, Koushik Sen et al. // Proceedings of the 28th ACM SIGSOFT Interna¬tional Symposium on Software Testing and Analysis. — ISSTA 2019. — New York, NY, USA : Association for Computing Machinery, 2019.— P. 329-340. — Access mode: https://doi.org/10.1145/3293882.3330576 (online; accessed: 17.12.2020).
[23] Simmonds Devon M. Complexity and the Engineering of Bug-Free Soft-ware // Proceedings of the International Conference on Frontiers in Education: Computer Science and Computer Engineering (FECS) / The Steering Committee of The World Congress in Computer Science, Computer .... — 2018. — P. 94-100.
[24] TesMa and CATG: Automated Test Generation Tools for Mod¬els of Enterprise Applications / Haruto Tanno, Xiaojing Zhang, Takashi Hoshino, Koushik Sen // Proceedings of the 37th Interna¬tional Conference on Software Engineering - Volume 2. — ICSE ’15. — Florence, Italy : IEEE Press, 2015.—P. 717-720.
[25] jFuzz: A concolic whitebox fuzzer for Java / Karthick Jayaraman, D Harvison, Vijay Ganesh, Adam Kiezun // Proceedings of the First NASA Formal Methods Symposium. — 2009. — 01. — P. 121-125.


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ