Розподілена система навантажувального тестування у безперервній інтеграції

Thumbnail Image
Глибовець, Андрій
Карпович, Артем
Ковш, Микола
Journal Title
Journal ISSN
Volume Title
У роботі вивчено можливість побудови розподіленої системи для навантажувального тестування із використанням інструментів, що перебувають у відкритому доступі, а саме Gatling, InfluxDB, Grafana, Logstash, Docker та Jenkins. Описано підхід для подолання обмежень інструменту з автоматизації тестування продуктивності Gatling, а саме обмеження, що не дає змоги побудувати власну систему розподіленого навантаження "з коробки". Це рішення інтегровано у безперервне постачання коду на основі сервісу Jenkins і випробовувано із централізованим звітуванням результатів у реальному часі. Цю систему було розроблено на противагу представленим на ринку комерційним рішенням, що надає їй більшої гнучкості.
The digital system performance is a separate engineering science that includes approaches and practices for building and optimizing systems at all levels – from physical devices, network, to writing highly efficient algorithms. At the same time, any digital solution that is designed and built should be tested, preferably under real conditions, including performance testing or as it is often called load testing. Performance testing is designed to simulate the real usage conditions of the system and load on it in order to find out its potential bottlenecks. However, to implement this type of testing without special software tools is almost impossible. The performance testing system itself should also meet certain criteria and requirements, the implementation of which will make possible an effective testing. Thus, to test large (including distributed) information solutions, it is necessary to build a distributed system for its load. In addition, it may be necessary to create such a load simultaneously, for example, from different continents. Moreover, large-scale testing produces large amounts of resulting data that need to be collected and tracked in real, allowing to respond quickly to errors or other problems. The relevance of this topic is that, despite the presence on the market of commercial tools for such testing, it is often necessary to build own (project specific) system to display either more required metrics, or the inability to use third-party systems or budget restrictions, or all together. This paper explores the possibility of building such a distributed solution for performance testing using open-source tools such as Gatling, InfluxDB, Grafana, Logstash, Docker and Jenkins. Gatling is the main tool for load testing, but its open-source version does not allow to implement scaled testing "out of the box". The main limitation is that even if you run several test processes from different servers at the same time, the report will be generated separately on each one and will not show the overall picture. This problem has been solved by using such a tool as Logstash which is described in this paper. Additionally, this solution has been integrated into the continuous integration based on Jenkins service and successfully tested with centralized real-time reporting using Grafana service
продуктивність системи, тестування продуктивності, тестування навантаження, безперервне постачання коду, відображення результатів у реальному часі, розподілена система навантаження, великомасштабні системи, стаття, system performance, performance testing, load testing, continuous integration, real-time reporting, test results, distributed load system
Глибовець А. М. Розподілена система навантажувального тестування у безперервній інтеграції / Глибовець А. М., Карпович А. В., Ковш М. В. // Наукові записки НаУКМА. Комп'ютерні науки. - 2020. - Т. 3. - С. 42-49.