Testcontainers has been a popular open source project for
developers working on integration testing projects and has become the most popular
Docker-based integration testing library. The projects creator, Richard North, has now partnered with
Sergei Egorov, Testcontainers lead maintainer, to create AtomicJar.
VMblog
caught up with Richard to hear about AtomicJar, its new $4 million seed
funding, and get a better understanding of the how and whys of integration
testing.
VMblog: What is AtomicJar's mission?
Richard North: AtomicJar is focused on making integration testing easier for
developers across the software development lifecycle. We want it to be so
ergonomic to the development pipeline that it becomes part of every software
release.
VMblog: How did you come up with the idea, and how will seed
funding help?
North: I created Testcontainers in 2015 while working as a chief engineer
at Deloitte Digital. At that time, integration testing was a complicated to set-up
- everything from creating consistent local setups, to configuring databases,
and countless other issues - was a constant source of thrashing for our developer
teams, and it was obvious we (and I assumed others) needed a reliable way to
test code against real production-like dependencies. I built Testcontainers as
an open source library that lets developers "test with containers", directly
from their test code, against everything from data stores and databases (e.g.
Redis, PostgreSQL), to anything else that can run in a Docker container (Kafka,
RabbitMQ, Selenium, etc.).
We founded AtomicJar in March 2021 because we've been working on
Testcontainers for five years, but see additional needs in the community. The seed
funding is giving us the opportunity to be exclusively focused on
Testcontainers, and to hire the engineering resources to be able to address a
massive backlog of features requests and things like common integrations users
ask for. Testcontainers is very popular with Java frameworks, messaging queues
and data stores, and the more we extend Testcontainers' support of this
ecosystem of technologies that our users want to test against, the more
powerful and ubiquitous the platform becomes in its ability to support generic
use cases in integration testing.
With AtomicJar, we are keeping the same license. We are not
creating a different enterprise version or otherwise choking the open source
code in any way.
VMblog: If you could, explain a bit more about what Integration Testing is all about.
North: When applications integrate with external resources like
databases and other services, developers need to know how the application will
behave once it has been deployed to the real environment. Integration testing
allows developers to test their code against production-like replicas of each
of these external resources, before deployment. Integration testing reveals
problems that are otherwise very difficult to pinpoint -- everything from
incorrectly written database queries, to incompatibilities between software
versions in production, to any unforeseen dependency issues. Test teams build
Integration Tests so they can deploy to production with confidence that systems
will perform as expected, and so that they can find and fix issues earlier
(shift-left) in the software development lifecycle.
VMblog: And who benefits from integration
testing?
North: Any developer working
with microservices and distributed frameworks in
cloud-native. Testcontainers supports the ecosystem of framework providers
(VMware, Red Hat, Oracle, Microsoft, Lightbend) and database providers
(Elastic, Couchbase, Confluent, StreamNative, Datastax, Splunk, Trino, Oracle
Database, IBM DB2, Neo4J, Exasol, HiveMQ) as a staple for testing highly
distributed services against complicated production dependencies.
VMblog: What should our readers
expect to see from AtomicJar moving forward?
North: For now, we will use the seed funding to grow the core developer team
serving the Testcontainers community, build new enterprise features and
functionality, and continue to extend the ecosystem of frameworks in and beyond
the Java ecosystem that provide native integration testing with Testcontainers.
##