Другие журналы

научное издание МГТУ им. Н.Э. Баумана

НАУКА и ОБРАЗОВАНИЕ

Издатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211.  ISSN 1994-0408

Новая модификация метода анализа кодов программ на основе резюме для тестирования сложных программных комплексов

# 08, август 2015
DOI: 10.7463/0815.0793227
Файл статьи: SE-BMSTU...o300.pdf (406.31Кб)
авторы: Сидорин А. В.1, Романова Т. Н.1

УДК 004.4'2

Россия,  МГТУ им. Н.Э. Баумана

В связи с распространением средств автоматического тестирования возникает необходимость подвергать тщательному автоматизированному тестированию крупные программные системы и комплексы, включая тестирование интерфейсов взаимодействия компонентов системы или комплекса между собой. Для этого необходимо преодолевать проблемы масштабируемости различных методов анализа программ, связанные с тем, что полный анализ всех путей выполнения программы невозможен. Целью проводимого исследования является построение метода межпроцедурного анализа с производительностью, позволяющей выполнять анализ крупных программных систем (таких, как ОС Android) за приемлемое время (не более 4-х часов). В настоящей статье проведён подробный обзор существующих методов анализа компьютерных программ с целью определения наличия в них потенциальных дефектов. Особое внимание уделено методу символьного выполнения, поскольку он находит широкое использование как при статическом анализе исходных текстов программ, так и при смешанном анализе объектных исполняемых файлов и промежуточного представления (символьно-конкретное тестирование — concolic testing). Суть метода символьного выполнения заключается в разбиении множества значений входных данных на классы эквивалентности при принятии решения о пути выполнения программы. Рассмотрены основные преимущества метода и его недостатки. Одним из основных проблем масштабируемости данного метода связана с межпроцедурным анализом. При символьном выполнении при использовании межпроцедурного анализа с помощью встраивания быстро растёт время анализа программы. В связи с этим в данной работе впервые предложено использование метода резюме для решения проблемы масштабируемости метода символьного выполнения. В качестве целевой системы для реализации метода резюме выбран свободный статический анализатор Clang Static Analyzer, являющийся частью проекта LLVM, что позволит произвести непосредственное сравнение производительности при использовании метода встраивания и метода резюме. Приведены предварительные расчёты, показывающие возможность увеличения быстродействия при использовании данного метода и рассмотрены основные источники увеличения производительности, построена математическая модель.

Список литературы
  1. Hiroo Matsumoto. Applying Clang Static Analyzer to Linux Kernel: abstract of 2012 LinuxCon Japan (6−8 June, 2012). Fujitsu Computer Technologies Ltd., 2012.
  2. Описание PVS-Studio // PVS-Studio. Статический анализатор кода для C и C ++: сайт компании ООО «СиПроВер». Режим доступа:http://www.viva64.com/ru/pvs-studio/ (дата обращения 13.05.2015).
  3. Marjamaki D. Cppcheck Design, 2010 // Kent State University: website. Режим доступа: http://www.cs.kent.edu/~rothstei/spring_12/secprognotes/cppcheck-design.pdf (дата обращения 14.05.2015).
  4. Johnson S.C. Lint, a C Program Checker // Computer Science Technical Reports No. 65. Bell Laboratories, Murray Hill, New Jersey, 1978. P. 78-90.
  5. Almossawi A., Lim K., Sinha T. Analysis tool evaluation: Coverity Prevent. Final Report. Pittsburgh, PA: Carnegie Mellon University, 2006. 19 с .
  6. Иванников В.П., Белеванцев А.А., Бородин А.Е., Игнатьев В.Н., Журихин Д.М., Аветисян А.И., Леонов М.И. Статический анализатор Svace для поиска дефектов в исходном коде программ // Труды Института системного программирования РАН. 2014. Т . 26, № 1. С . 231-250.
  7. Hovemeyer D., Pugh W. Finding Bugs is Easy // ACM SIGPLAN Notices. 2004. Vol. 39, no. 12. P. 132-136. DOI: 10.1145/1028664.1028717
  8. Nethercote N., Seward J. Valgrind: a framework for heavyweight dynamic binary instrumentation // ACM SIGPLAN Notices. 2007. Vol. 42, no. 6. P. 89-100. DOI:10.1145/1273442.1250746
  9. Serebryany K., Bruening D., Potapenko A., Vyukov D. AddressSanitizer: A Fast Address Sanity Checker // Proceedings of the 2012 USENIX Annual Technical Conference. USENIX, 2012. P. 309-318. Available at: https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany, accessed 01.07.2015.
  10. Serebryany K., Iskhodzhanov T. ThreadSanitizer: data race detection in practice // Proc. of the Workshop on Binary Instrumentation and Applications (WBIA '09). ACM, New York, NY, USA, 2009. P. 62-71. DOI:10.1145/1791194.1791203
  11. Sang Kil Cha, Avgerinos T., Rebert A., Brumley D. Unleashing Mayhem on Binary Code // Proceedings of the 33rd IEEE Symposium on Security and Privacy. IEEE, 2012. P. 380-394. DOI: 10.1109/SP.2012.31
  12. Cadar C., Dunbar D., Engler D. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs // Proceedings of the 8th USENIX conference on Operating systems design and implementation. USENIX, 2008. P. 209-224.
  13. King J.C. Symbolic execution and program testing // Communications of the ACM. 1976. Vol. 19, no. 7. P. 385-394. DOI:10.1145/360248.360252
  14. Cousot P., Cousot R. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints // Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. ACM, 1977. C. 238-252. DOI:10.1145/512950.512973
  15. Reps T., Horwitz S., Sagiv M. Precise interprocedural dataflow analysis via graph reachability // Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, 1995. C. 49-61. DOI:10.1145/199448.199462
  16. Sen K., Marinov D., Agha G. CUTE: a concolic unit testing engine for C // Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering. ACM, 2005. C. 263-272. DOI:10.1145/1095430.1081750
  17. The LLVM compiler infrastructure. Режим доступа:http://llvm.org/ (дата обращения 14.05.2015).
  18. clang: a C language family frontend for LLVM. Режим доступа:http://clang.llvm.org/ (дата обращения 15.05.2015).
  19. Clang Static Analyzer. Режим доступа: http://clang-analyzer.llvm.org/ (дата обращения 15.05.2015).
Поделиться:
 
ПОИСК
 
elibrary crossref ulrichsweb neicon rusycon
 
ЮБИЛЕИ
ФОТОРЕПОРТАЖИ
 
СОБЫТИЯ
 
НОВОСТНАЯ ЛЕНТА



Авторы
Пресс-релизы
Библиотека
Конференции
Выставки
О проекте
Rambler's Top100
Телефон: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)
  RSS
© 2003-2018 «Наука и образование»
Перепечатка материалов журнала без согласования с редакцией запрещена
 Тел.: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)