Preview

Труды Института системного программирования РАН

Расширенный поиск

Фреймворк автоматизации тестирования на гонки по данным

https://doi.org/10.15514/ISPRAS-2025-37(1)-6

Аннотация

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

Об авторах

Евгений Анатольевич ГЕРЛИЦ
Институт системного программирования им. В.П. Иванникова РАН
Россия

Научный сотрудник отдела технологий программирования ИСП РАН. Область научных интересов: методы контроля и обеспечения качества программного обеспечения, методы динамической верификации, статической верификации и анализа программ, формальные методы.



Вадим Сергеевич МУТИЛИН
Институт системного программирования им. В.П. Иванникова РАН
Россия

Cтарший научный сотрудник Института системного программирования. Сфера научных интересов: статический и динамический анализ программ.



Список литературы

1. Beust C., Suleiman H. Next generation Java testing: TestNG and advanced concepts. – Pearson Education, 2007.

2. Massol V. JUnit in action. – 2004.

3. Hyuk Myeong. Googletest In Practice: Unit Testing Guide for C++ Programmers. – 2021.

4. Leblanc. Debugging parallel programs with instant replay //IEEE Transactions on Computers. – 1987. – Т. 100. – №. 4. – С. 471-482.

5. Wang Y. et al. Drdebug: Deterministic replay based cyclic debugging with dynamic slicing //Proceedings of annual IEEE/ACM international symposium on code generation and optimization. – 2014. – С. 98-108.

6. Thane H., Hansson H. Using deterministic replay for debugging of distributed real-time systems //Proceedings 12th Euromicro Conference on Real-Time Systems. Euromicro RTS 2000. – IEEE, 2000. – С. 265-272.

7. Serebryany K., Iskhodzhanov T. ThreadSanitizer: data race detection in practice //Proceedings of the workshop on binary instrumentation and applications. – 2009. – С. 62-71.

8. Savage S. et al. Eraser: A dynamic data race detector for multithreaded programs //ACM Transactions on Computer Systems (TOCS). – 1997. – Т. 15. – №. 4. – С. 391-411.

9. Erickson J. et al. Effective {Data-Race} Detection for the Kernel //9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 10). – 2010.

10. The Kernel Concurrency Sanitizer. The Linux Kernel Organization. Available at: https://docs.kernel.org/dev-tools/kcsan.html, accessed 04.01.2025.

11. Adve S. V. et al. Detecting data races on weak memory systems //ACM SIGARCH Computer Architecture News. – 1991. – Т. 19. – №. 3. – С. 234-243.

12. Lamport L. Time, clocks, and the ordering of events in a distributed system //Concurrency: the Works of Leslie Lamport. – 2019. – С. 179-196.

13. RTCA DO-178C, Software Considerations in Airborne Systems and Equipment Certification.

14. ISO International Standard ISO/IEC 14882:2020(E) – Programming Language C++.

15. Исходный код инструмента Clade для перехвата команд сборки. Веб-ссылка: https://github.com/17451k/clade, доступно 01.04.2024.

16. Документация компилятора Clang с главой, посвящённой библиотеке libclang. Веб-ссылка: https://clang.llvm.org/doxygen/index.html, доступно 01.04.2024.

17. Yu T., Srisa-an W., Rothermel G. SimRT: An automated framework to support regression testing for data races //Proceedings of the 36th international conference on software engineering. – 2014. – С. 48-59.

18. Halpert R. L., Pickett C. J. F., Verbrugge C. Component-based lock allocation //16th International Conference on Parallel Architecture and Compilation Techniques (PACT 2007). – IEEE, 2007. – С. 353 - 364.

19. Huang J., Liu P., Zhang C. LEAP: Lightweight deterministic multi-processor replay of concurrent Java programs //Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering. – 2010. – С. 207-216.

20. Musuvathi M. et al. Finding and Reproducing Heisenbugs in Concurrent Programs //OSDI. – 2008. – Т. 8. – №. 2008.

21. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs //IEEE transactions on computers. – 1979. – Т. 100. – №. 9. – С. 690-691.

22. Said, M., Wang, C., Yang, Z., & Sakallah, K. (2011, April). Generating data race witnesses by an SMT-based analysis. In NASA Formal Methods Symposium (pp. 313-327). Springer, Berlin, Heidelberg.

23. De Moura L., Bjørner N. Satisfiability modulo theories: introduction and applications //Communications of the ACM. – 2011. – Т. 54. – №. 9. – С. 69-77.

24. Dutertre B., De Moura L. A fast linear-arithmetic solver for DPLL (T) //International Conference on Computer Aided Verification. – Berlin, Heidelberg : Springer Berlin Heidelberg, 2006. – С. 81-94.

25. https://www.rapitasystems.com/products/rapitest.


Рецензия

Для цитирования:


ГЕРЛИЦ Е.А., МУТИЛИН В.С. Фреймворк автоматизации тестирования на гонки по данным. Труды Института системного программирования РАН. 2025;37(1):107-120. https://doi.org/10.15514/ISPRAS-2025-37(1)-6

For citation:


GERLITS E.A., MUTILIN V.S. Towards a Test Automation Framework for Data Race Testing. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2025;37(1):107-120. (In Russ.) https://doi.org/10.15514/ISPRAS-2025-37(1)-6



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)