Infra Atlas · Toolbox

Testing & Integration.

The tools that let you test infrastructure before it touches a real cloud account. Cloud service emulators that start in milliseconds, integration test frameworks for Terraform and Kubernetes, disposable database containers for CI, and API mocks that live in your repo. Test locally, test cheaply, test without credentials.

Form
Language
Picks
floci replaces LocalStack

Drop-in local cloud emulator suite: 47 AWS services, 8 Azure services, and 7 GCP services on a single native binary. Starts in 24 ms and idles at 13 MiB — compared to LocalStack's Docker container that takes seconds to spin up and hundreds of MB of RAM. MIT-licensed with no pricing tiers and no community-edition sunset. Listens on port 4566 so existing LocalStack clients work unchanged. The main reason to switch: it runs wherever a Rust binary runs, needs no Docker daemon, and has no authentication gates.

CLI Rust dev
floci-io/floci
LocalStack replaces real AWS accounts in dev/CI

The original local AWS emulator. Runs as a Docker container and emulates S3, SQS, DynamoDB, Lambda, IAM, and ~80 other services. Community edition covers the most common services; Pro adds more. The dominant choice for existing projects and the one most SDKs and tutorials target — if you're starting a new project, consider floci for the lighter footprint, but LocalStack's ecosystem depth (CDK local, SAM local, Terraform provider) is unmatched.

CLI Python mature dev
localstack/localstack
Testcontainers replaces Docker Compose stubs in CI

Spin up real Docker containers as throwaway test dependencies — a Postgres instance, a Redis cluster, a Kafka broker — directly from your test code, with automatic lifecycle management and port mapping. Polyglot: official SDKs for Go, Java, .NET, Node, Python, and Rust. The key insight is that your test spins up a real database rather than a mock, giving you confidence that your code works against the actual engine. Containers are destroyed at the end of the test run with no manual cleanup.

lib Go dev
testcontainers/testcontainers-go
Terratest replaces manual post-apply validation

Go library for writing automated tests for Terraform modules, Helm charts, Packer templates, and Kubernetes configs. Tests run terraform apply, make real cloud API calls to verify resources, then run terraform destroy. Built-in helpers cover SSH, HTTP, Kubernetes, AWS, GCP, and Azure SDKs. The pattern: write a test that deploys your module, asserts the outputs are correct, and tears it down — the same module you ship is the one being tested. Essential for shared Terraform modules that need regression coverage.

lib Go dev IaC
gruntwork-io/terratest
BATS replaces ad-hoc shell assertions

Bash Automated Testing System — write tests for shell scripts, CLI tools, and anything that runs as a command. Tests look like: @test "curl returns 200" { run curl -s -o /dev/null -w "%{http_code}" http://localhost; [ "$output" = "200" ]; }. TAP-compatible output integrates with any CI system. Invaluable for testing deployment scripts, wrapper scripts, and CI pipeline helpers that nobody tests because "it's just bash". BATS-core is the actively maintained fork.

CLI Shell dev
bats-core/bats-core
Mockoon replaces Postman mock server

API mock server where the mock definition is a plain JSON file that lives in your repo. Desktop GUI for designing mocks and a CLI (mockoon-cli start --data api.json) for running them in CI with no GUI. Define routes, response bodies, status codes, delays, and dynamic templating. The main reason to switch from Postman mock server: collections are files you own, diff in PRs, and run offline — no account, no sync service, no cloud dependency. MIT-licensed.

CLI GUI JS dev
mockoon/mockoon
Pact replaces integration tests between services

Consumer-driven contract testing framework. The consumer (client) writes tests that define what API contract it expects; those tests generate a "pact" file. The provider (server) then verifies it honours that contract — without both services needing to run at the same time. The key benefit in microservice architectures: you know a contract is broken before deploying, not after. SDKs for Go, JS/TS, Java, Python, Ruby, .NET. PactFlow provides a hosted broker; the OSS broker runs on Docker for self-hosted use.

lib Go JS dev
pact-foundation/pact-go
*

This department focuses on local-first and CI-friendly infrastructure testing. Unit testing frameworks for application code (Jest, pytest, Go testing) are out of scope — those are language choices, not infrastructure choices. Load testing tools (k6, oha, wrk) are in the API & Testing toolbox.