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 条
  • [41] The TPTP World - Infrastructure for Automated Reasoning
    Sutcliffe, Geoff
    REASONING WEB: WEB LOGIC RULES, 2015, 9203 : 327 - 329
  • [42] Test-suite-guided discovery of least privilege for cloud infrastructure as code
    Ryo Shimizu
    Yuna Nunomura
    Hideyuki Kanuka
    Automated Software Engineering, 2024, 31
  • [43] The do's and don'ts of infrastructure code: A systematic gray literature review
    Kumara, Indika
    Garriga, Martin
    Romeu, Angel Urbano
    Di Nucci, Dario
    Palomba, Fabio
    Tamburri, Damian Andrew
    van den Heuvel, Willem-Jan
    INFORMATION AND SOFTWARE TECHNOLOGY, 2021, 137
  • [44] Test-suite-guided discovery of least privilege for cloud infrastructure as code
    Shimizu, Ryo
    Nunomura, Yuna
    Kanuka, Hideyuki
    AUTOMATED SOFTWARE ENGINEERING, 2024, 31 (01)
  • [45] Characterizing Co-located Insecure Coding Patterns in Infrastructure as Code Scripts
    Bhuiyan, Farzana Ahamed
    Rahman, Akond
    2020 35TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING WORKSHOPS (ASEW 2020), 2020, : 27 - 32
  • [46] Testing Error Handling Code With Software Fault Injection and Error-Coverage-Guided Fuzzing
    Bai, Jia-Ju
    Fu, Zi-Xuan
    Xie, Kai-Tao
    Jiang, Zu-Ming
    IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING, 2024, 21 (04) : 1724 - 1739
  • [47] Domain-specific language for infrastructure as code
    Shvetcova, Valeriya
    Borisenko, Oleg
    Polischuk, Maxim
    2019 IVANNIKOV MEMORIAL WORKSHOP (IVMEM 2019), 2019, : 39 - 45
  • [48] An Approach to Identifying Error Patterns for Infrastructure as Code
    Chen, Wei
    Wu, Guoquan
    Wei, Jun
    2018 29TH IEEE INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING WORKSHOPS (ISSREW), 2018, : 124 - 129
  • [49] RobusTest: A Framework for Automated Testing of Software Robustness
    Shahrokni, Ali
    Feldt, Robert
    2011 18TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC 2011), 2011, : 171 - 178
  • [50] Automated Software Testing-A Case Study
    Poulova, Petra
    Klimova, Blanka
    ADVANCED SCIENCE LETTERS, 2018, 24 (04) : 2578 - 2581