Creed for Speed: Comprehensive Infrastructure as Code Testing
With Programming Languages Infrastructure as Code (PL-IaC), developers implement imperative IaC programs in one of many general-purpose programming languages, e.g., TypeScript, Python, or Go, to declaratively describe deployments. Using these languages provides access to quality assurance techniques and tools developed for traditional software; however, programmers routinely rely on prohibitively slow integration testing—if they test at all. As a result, even simple bugs are found late, tremendously slowing down the development process.
To improve the velocity of PL-IaC development, we propose ProTI, an automated unit testing approach that quickly tests PL- IaC programs in many different configurations. ProTI mocks all cloud resources, replacing them with pluggable oracles that validate all resources’ configurations and a generator for realistic test inputs. We implemented ProTI for Pulumi TypeScript with simple generator and oracle plugins. Our experience of testing with ProTI encourages the exploration of more sophisticated oracles and generators, leading to the early detection of more bugs. ProTI enables programmers to rapidly prototype, explore, and plug in new oracles and generators for efficient PL-IaC program testing.
Tue 24 OctDisplayed time zone: Lisbon change
16:00 - 17:30 | |||
16:00 22mTalk | Applying Large Scale Diffing to Declarative Configuration Code for Production Safety CONFLANG | ||
16:22 22mTalk | Creed for Speed: Comprehensive Infrastructure as Code Testing CONFLANG Daniel Sokolowski University of St. Gallen, David Spielmann University of St. Gallen, Guido Salvaneschi University of St. Gallen Pre-print | ||
16:45 22mTalk | Configuration testing for Borg at Google CONFLANG Alex Ivanov Google | ||
17:07 22mLive Q&A | Configuration testing Q&A/Discussion CONFLANG |