Automated Infrastructure as Code Program Testing

被引:1
|
作者
Sokolowski, Daniel [1 ]
Spielmann, David [1 ]
Salvaneschi, Guido [1 ]
机构
[1] Univ St Gallen, CH-9000 St Gallen, Switzerland
基金
瑞士国家科学基金会;
关键词
Testing; Generators; Software; Cloud computing; Engines; Codes; Libraries; Property-based testing; fuzzing; infrastructure as code; DevOps; LANGUAGE;
D O I
10.1109/TSE.2024.3393070
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Infrastructure as Code (IaC) enables efficient deployment and operation, which are crucial to releasing software quickly. As setups can be complex, developers implement IaC programs in general-purpose programming languages like TypeScript and Python, using PL-IaC solutions like Pulumi and AWS CDK. The reliability of such IaC programs is even more relevant than in traditional software because a bug in IaC impacts the whole system. Yet, even though testing is a standard development practice, it is rarely used for IaC programs. For instance, in August 2022, less than 1 % of the public Pulumi IaC programs on GitHub implemented tests. Available IaC program testing techniques severely limit the development velocity or require much development effort. To solve these issues, we propose Automated Configuration Testing (ACT), a methodology to test IaC programs in many configurations quickly and with low effort. ACT automatically mocks all resource definitions in the IaC program and uses generator and oracle plugins for test generation and validation. We implement ACT in ProTI, a testing tool for Pulumi TypeScript with a type-based generator and oracle, and support for application specifications. Our evaluation with 6 081 programs from GitHub and artificial benchmarks shows that ProTI can directly be applied to existing IaC programs, quickly finds bugs where current techniques are infeasible, and enables reusing existing generators and oracles thanks to its pluggable architecture.
引用
收藏
页码:1585 / 1599
页数:15
相关论文
共 50 条
  • [1] Extensible Testing for Infrastructure as Code
    Spielmann, David
    Sokolowski, Daniel
    Salvaneschi, Guido
    COMPANION PROCEEDINGS OF THE 2023 ACM SIGPLAN INTERNATIONAL CONFERENCE ON SYSTEMS, PROGRAMMING, LANGUAGES, AND APPLICATIONS: SOFTWARE FOR HUMANITY, SPLASH COMPANION 2023, 2023, : 58 - 60
  • [2] Decentralizing Infrastructure as Code
    Sokolowski, Daniel
    Weisenburger, Pascal
    Salvaneschi, Guido
    IEEE SOFTWARE, 2023, 40 (01) : 50 - 55
  • [3] When Your Infrastructure Is a Buggy Program: Understanding Faults in Infrastructure as Code Ecosystems
    Drosos, Georcios-petros
    Sotiropoulos, Thodoris
    Alexopoulos, Ceorcios
    Mitropoulos, Dimitris
    Su, Zhendonc
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (OOPSLA):
  • [4] GLITCH: Automated Polyglot Security Smell Detection in Infrastructure as Code
    Saavedra, Nuno
    Ferreira, Joao F.
    PROCEEDINGS OF THE 37TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, ASE 2022, 2022,
  • [5] Infrastructure as Code for Dynamic Deployments
    Sokolowski, Daniel
    PROCEEDINGS OF THE 30TH ACM JOINT MEETING EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, ESEC/FSE 2022, 2022, : 1775 - 1779
  • [6] The 'as code' activities: development anti-patterns for infrastructure as code
    Rahman, Akond
    Farhana, Effat
    Williams, Laurie
    EMPIRICAL SOFTWARE ENGINEERING, 2020, 25 (05) : 3430 - 3467
  • [7] A Pilot Study of Testing Infrastructure as Code for Cloud Systems
    Suwanachote, Nabhan
    Pornmaneerattanatri, Soratouch
    Kashiwa, Yutaro
    Ichikawa, Kohei
    Leelaprute, Pattara
    Rungsawang, Arnon
    Manaskasemsak, Bundit
    Iida, Hajimu
    PROCEEDINGS OF THE 2023 30TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE, APSEC 2023, 2023, : 584 - 588
  • [8] A systematic mapping study of infrastructure as code research
    Rahman, Akond
    Mandavi-Hezaveh, Rezvan
    Williams, Laurie
    INFORMATION AND SOFTWARE TECHNOLOGY, 2019, 108 : 65 - 77
  • [9] Gang of Eight: A Defect Taxonomy for Infrastructure as Code Scripts
    Rahman, Akond
    Farhana, Effat
    Parnin, Chris
    Williams, Laurie
    2020 ACM/IEEE 42ND INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2020), 2020, : 752 - 764
  • [10] Towards Reliable Infrastructure as Code
    Sokolowski, Daniel
    Salvaneschi, Guido
    2023 IEEE 20TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE COMPANION, ICSA-C, 2023, : 318 - 321