Chapter 10. Testing the database

 

This chapter covers

  • Prerequisites for testing the database
  • Database testing best practices
  • Test data life cycle
  • Managing database transactions in tests

The last piece of the puzzle in integration testing is managed out-of-process dependencies. The most common example of a managed dependency is an application database—a database no other application has access to.

Running tests against a real database provides bulletproof protection against regressions, but those tests aren’t easy to set up. This chapter shows the preliminary steps you need to take before you can start testing your database: it covers keeping track of the database schema, explains the difference between the state-based and migration-based database delivery approaches, and demonstrates why you should choose the latter over the former.

After learning the basics, you’ll see how to manage transactions during the test, clean up leftover data, and keep tests small by eliminating insignificant parts and amplifying the essentials. This chapter focuses on relational databases, but many of the same principles are applicable to other types of data stores such as document-oriented databases or even plain text file storages.

10.1. Prerequisites for testing the database

10.2. Database transaction management

10.3. Test data life cycle

10.4. Reusing code in test sections

10.5. Common database testing questions

10.6. Conclusion

Summary