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 条
  • [31] CoCoFuzzing: Testing Neural Code Models With Coverage-Guided Fuzzing
    Wei, Moshi
    Huang, Yuchao
    Yang, Jinqiu
    Wang, Junjie
    Wang, Song
    IEEE TRANSACTIONS ON RELIABILITY, 2023, 72 (03) : 1276 - 1289
  • [32] Predictable and Progressive Testing of Multithreaded Code
    Ball, Thomas
    Burckhardt, Sebastian
    de Halleux, Peli
    Musuvathi, Madanlal
    Qadeer, Shaz
    IEEE SOFTWARE, 2011, 28 (03) : 75 - 83
  • [33] Poster: Defect Prediction Metrics for Infrastructure as Code Scripts in DevOps
    Rahman, Akond
    Stallings, Jonathan
    Williams, Laurie
    PROCEEDINGS 2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING - COMPANION (ICSE-COMPANION, 2018, : 414 - 415
  • [34] Anti-Patterns in Infrastructure as Code
    Rahman, Akond
    2018 IEEE 11TH INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST), 2018, : 434 - 435
  • [35] Cloud WorkBench: Benchmarking laaS Providers based on Infrastructure-as-Code
    Scheuner, Joel
    Cito, Juergen
    Leitner, Philipp
    Gall, Harald
    WWW'15 COMPANION: PROCEEDINGS OF THE 24TH INTERNATIONAL CONFERENCE ON WORLD WIDE WEB, 2015, : 239 - 242
  • [36] Adoption, Support, and Challenges of Infrastructure-as-Code: Insights from Industry
    Guerriero, Michele
    Garriga, Martin
    Tamburri, Damian A.
    Palomba, Fabio
    2019 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE AND EVOLUTION (ICSME 2019), 2019, : 580 - 589
  • [37] Test-Based Least Privilege Discovery on Cloud Infrastructure as Code
    Shimizu, Ryo
    Kanuka, Hideyuki
    2020 IEEE INTERNATIONAL CONFERENCE ON CLOUD COMPUTING TECHNOLOGY AND SCIENCE (CLOUDCOM 2020), 2020, : 1 - 8
  • [38] Automated Testing
    David W. Brooks
    Diane E. Nolan
    Susan Gallagher
    Journal of Science Education and Technology, 2003, 12 (2) : 183 - 186
  • [39] Automated Testing Flow: The Present and the Future
    Portolan, Michele
    IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, 2020, 39 (10) : 2952 - 2963
  • [40] The TPTP World - Infrastructure for Automated Reasoning
    Sutcliffe, Geoff
    LOGIC FOR PROGRAMMING, ARTIFICIAL INTELLIGENCE, AND REASONING (LPAR-16), 2010, 6355 : 1 - 12