Test List Driven Development

When developing software, the flow usually starts from a list of features. This features list gives the development team a general idea of what need to be coded. Testing is done after coding and the code is adjusted based on testing. This approach puts testing as an after-thought, often leading to bugs down the line. 

Current test methodologies of unit testing, built around test driven development (TDD), requires that the developer create blocks of testable code. Another similar approach of behavior driven development (BDD) encourages that the tests are written in a plain language. This then requires the developer to create programmatic test to test against the code. While both methods have the benefit of testing code upfront, they also lead to extended development time.

Test list driven development (TLDD) is an approach of prioritizing testing without the complexity of today’s testing approaches. Test lists are essentially unit test based checklists, written in a simple language, that guide the developer in knowing what to develop and the tester in generating a list of testing parameters.

Example of a Test List

Task — show a list of all Users and their group, with a filter to view a specific group and count

Test List
  1. Navigation Menu with Users link
  2. Default drop-down filter is set to all
  3. Button to run filter is called “Show”
  4. “Count:” is the label on the right side showing the user count
  5. Filter for groups drop down should show 4 options - All, Alpha, Bravo, Charlie, Delta, No Group
  6. Default view does not show any results
  7. By default, group filter is “All”
  8. Count for “All” is 54 users
  9. Selecting “Alpha” for group filter should show 16 users
  10. Selecting “Bravo” for group filter should show 22 users
  11. Selecting “Charlie” for group filter should show 17 users
  12. Selecting “Delta” for group filter should show 8 users
  13. Selecting “No Group” for group filter should show 1 user
The above example demonstrates how a detailed test list can help the tester communicate a simple task requirements into a complete testable check list. The developer will reference this list to bring the code to match against the results. By displaying the expected results as part of the test, it eases the workload on the developers end and also makes re-testing faster later on.
Pitfalls in Under-Promising and Over-Delivering
Trello Workflow for Test List Software Development