Test-Driven Development

At Driverbase we pride ourselves on delivering a better car search experience.

Just as we recognize the value in test driving a vehicle before taking it off the lot, we also understand the importance of fully testing our software before delivering it to the web.

Consistent website performance is at the core of our vehicle search and recommendation experience. Today we’d like to highlight a few key features of our development process that enable us to deliver a consistent and high-quality product.

Good software starts with a solid team. Designing and writing scalable code should be a fun and engaging experience, and we carefully select engineers who enjoy solving problems in a collaborative environment. We look for good communicators who are enthusiastic about learning new technologies and building meaningful applications. We’re hiring engineers!

We use a range of tools to architect, design, and build our application. Slack is a great collaboration app for our distributed team. We use GitHub to manage our source code repo and code review process. VS Code is a wonderful (and free!) IDE with support for many different languages, and an active and engaged support community.

From the very start, our development philosophy focused on creating testable code. Our test framework is designed to facilitate quick iterations, and developers can easily run our entire suite of unit, integration, and selenium tests (locally or on the build server) in under five minutes.

As part of integration testing, we use the nifty tool Obevo to build and populate a test database from scratch. This enables us to test webapp to database interactions, and verify real communication between a live app and database.

We use CircleCi for continuous integration builds, and at the moment we run 600+ automated tests on every commit. Successful tests serve as a pre-review gate in GitHub, as well as living documentation of expected behavior. High test coverage gives us greater confidence and freedom to make changes without breaking existing behavior.

In addition to testable code, we strongly believe in the ability to deploy changes at a moments notice, with zero downtime. With CircleCi workflows, we deploy our application to test or prod environments running on AWS with a single click. Clicking deploy runs a custom ansible script that connects to our hosts and performs the upgrade. Ansible helps us encapsulate complex functionality in a simple process, and enables us to push approved and tested changes to prod in minutes.

Test-driven development plays an important role in the Driverbase car search experience. We hope you continue to enjoy our platform, and if you have any feature requests, please let us know!

Eric Parziale
VP Engineering