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] Making legacy Fortran code type safe through automated program transformation
    Wim Vanderbauwhede
    The Journal of Supercomputing, 2022, 78 : 2988 - 3028
  • [42] Code Analysis with Static Application Security Testing for Python']Python Program
    Ma, Li
    Yang, Huihong
    Xu, Jianxiong
    Yang, Zexian
    Lao, Qidi
    Yuan, Dong
    JOURNAL OF SIGNAL PROCESSING SYSTEMS FOR SIGNAL IMAGE AND VIDEO TECHNOLOGY, 2022, 94 (11): : 1169 - 1182
  • [43] DEVELOPMENT OF AN AUTOMATED TESTING SYSTEM FOR VERIFICATION AND VALIDATION OF NUCLEAR DATA AND SIMULATION CODE
    Triplett, Brian S.
    Anghaie, Samim
    White, Morgan C.
    NUCLEAR TECHNOLOGY, 2010, 170 (01) : 80 - 89
  • [44] A Solution for Measuring Code Coverage during Automated Testing of an Electronic Circuit Unit
    Malbasic, Teodor
    Kordic, Branislav
    Kovacevic, Marko
    Bojovic, Zivko
    2019 27TH TELECOMMUNICATIONS FORUM (TELFOR 2019), 2019, : 614 - 617
  • [45] Security controls in infrastructure as code
    Almuairfi S.
    Alenezi M.
    Computer Fraud and Security, 2020, 2020 (10): : 13 - 19
  • [46] Kief Morris on Infrastructure as Code
    Johann, Sven
    IEEE SOFTWARE, 2017, 34 (01) : 117 - 120
  • [47] Luke Hoban on Infrastructure as Code
    Doolittle, Jeff
    IEEE SOFTWARE, 2022, 39 (02) : 112 - 114
  • [48] Towards Reliable Infrastructure as Code
    Sokolowski, Daniel
    Salvaneschi, Guido
    2023 IEEE 20TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE COMPANION, ICSA-C, 2023, : 318 - 321
  • [49] 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
  • [50] Recent Research Into Infrastructure as Code
    Staron, Miroslaw
    Abrahao, Silvia
    Penzenstadler, Birgit
    Hochstein, Lorin
    IEEE SOFTWARE, 2023, 40 (01) : 86 - 88