effective test driven database development gojko adzic [email protected] twitter.com/gojkoadzic
TRANSCRIPT
Lots of teams struggle with Database testing...
Bad tools Inherently hard to test Changes are persistent Attitude of DB Specialists
Full build with all integration tests is the only thing you
can really trust
...but it is not the most practical thing to run all the time
DB management
Dedicated instances for developers are best One development DB can also work ok Build + n*integrations must always be separate
Prepare everything you need...
Known state of small development databases Link to files Trash and restore DB
Start with a clean DB and Load data with DbUnit
Set up data for a specific test and roll back later Ideally don't suppose that the DB is empty
DBFIT: Test Driven DB Development Made Easy
FIT+FitNesse+DB Fixtures
http://sourceforge.net/projects/dbfithttp://fitnesse.info/dbfit
Why DbFit?
Manipulate data in a relational model Provides all the plumbing
Transaction management Smart features based on meta-data Parameter mapping “wizards” for regression tests
Because it runs inside FitNesse, already integrated with a lot of other tools/libraries
Use DbFit to:
Write and execute DB Unit tests Prepare/verify Java or .NET integration tests
.NET: Sql Server, Oracle, (DB2) Java: Mysql, Oracle, (DB2, SQL Server, Derby)
FitNesse symbols directly mapped to bind variables
Retrieve auto-generated keys and use them directly
<< and >> available in Java as well Already mapped to bind variables
Advanced features
Inspect queries, tables or procs to automatically generate test tables and regression tests
Store and compare queries Standalone mode for full control
DbFit 2.0
Upcoming release in April Support for command timeouts Better architecture, more flexible for different test
runners Integration with Trinidad Support for Db2, Derby, HSQL
Image credits
http://www.flickr.com/photos/seantubridy/ http://www.flickr.com/photos/aasta/ http://www.flickr.com/photos/guiniveve/ http://flickr.com/photos/annevoi/ http://www.flickr.com/photos/chaspope http://www.flickr.com/photos/massenpunkt http://www.flickr.com/photos/night_heron http://www.flickr.com/photos/80336234@N00