Practical Test Centric Development

In 2007 I started contributing to a now defunct project called Creole.  They were using, if I recall correctly, PHPUnit to do unit testing and it was the first time I had been exposed to unit testing.  I was hooked.

Fast forward seven years: I like writing code, but I love writing tests!  I'm in general agreement with a Test Driven Development philosophy/methodology, but in my experience 100% Test Driven Development in all situations isn't practical and often isn't even feasible.  I don't care so much about what's trendy, I care about what works.

Over the years we've developed an approach to testing which gives us the biggest bang for our buck.  This talk will outline that approach, describe some of the underlying philosophies that drive it, and discuss the open source tools we use to make our testing happen.  Most importantly, we will discuss how attitude and culture, not technology, are the biggest hurdles to testing.

We will look at some of the typical problems encountered when testing software:

  • third party web APIs
  • sending email
  • generating test data
  • network and operating environment dependencies

My background and experience is building database driven web applications, primarily in Python.  Therefore the talk will be from the perspective of building that type of software.  However, the philosophy and approach presented will have significant overlap with other areas of software development.

Talk Outline:

  • Introduction & Background
  • Guiding Principles
  • Examples & Discussion
    • Unit Testing
    • Model Testing
    • Migration Testing
    • Functional Testing
    • UI Level Testing
    • Continuous Integration Testing
  • Overview of OSS Tools Used
  • Q&A