Formative test-driven development for programming practicals

Peadar F Grant


Sub-optimal performance in programming practicals may be associated with a lack of contemporaneous formative feedback in the laboratory session. Although automated testing is a key feature of industrial software development, its routine use in educational coding settings remains uncommon. Additionally, written or verbal specifications cannot fully encode the required functionality with sufficient brevity and precision, leading to uncertainty of expectation amongst students. Literature reports of automated testing centre mainly on student-written tests as an end product and on summative grading systems utilising testing.

This study therefore examines the effect of adopting a signature pedagogy of test-driven development that utilises formative automated testing in advanced applied programming laboratories. Laboratory sessions were re-designed to incorporate automated formative feedback using lecturer-supplied tests using industry-standard frameworks. A first-principles methodology from best practices in formative feedback shaped the implementation. Furthermore, technology choices minimised student effort whilst remaining tolerent of student-specific technology choices. Tools for staff use were additionally developed to tabulate and aggregate test results to guide subsequent sesions.

A mixed-method evaluation combined qualitative learner views and practitioner reflections, supported by ongoing test performance collection. Adoption of the test-driven signature pedagogy were shown to provide improved certainty of completion and correctness. Student feedback particularly noted the easy penalty-free access to formative feedback within familiar programming environments. Utilisation of industry-standard tools and a common project layout promoted and focused student discussion with peers and staff. It is concluded that a test-driven signature pedagogy utilising lecturer-composed formative test cases could improve outcomes in advanced applied programming courses.


formative assessment; unit testing; test-driven development

Full Text: