Using Relational Problems to Teach Property-Based Testing

10/30/2020
by   John Wrenn, et al.
0

Context: The success of QuickCheck has led to the development of property-based testing (PBT) libraries for many languages and the process is getting increasing attention. However, unlike regular testing, PBT is not widespread in collegiate curricula. Furthermore, the value of PBT is not limited to software testing. The growing use of formal methods in, and the growth of software synthesis, all create demand for techniques to train students and developers in the art of specification writing. We posit that PBT forms a strong bridge between testing and the act of specification: it's a form of testing where the tester is actually writing abstract specifications. Inquiry: Even well-informed technologists mention the difficulty of finding good motivating examples for its use. We take steps to fill this lacuna. Approach Knowledge: We find that the use of "relational" problems – those for which an input may admit multiple valid outputs – easily motivates the use of PBT. We also notice that such problems are readily available in the computer science pantheon of problems (e.g., many graph and sorting algorithms). We have been using these for some years now to teach PBT in collegiate courses. Grounding: In this paper, we describe the problems we use and report on students? completion of them. We believe the problems overcome some of the motivation issues described above. We also show that students can do quite well at PBT for these problems, suggesting that the topic is well within their reach. In the process, we introduce a simple method to evaluate the accuracy of their specifications, and use it to characterize their common mistakes. Importance: Based on our findings, we believe that relational problems are an underutilized motivating example for PBT. We hope this paper initiates a catalog of such problems for educators (and developers) to use, and also provides a concrete (though by no means exclusive) method to analyze the quality of PBT.

READ FULL TEXT

page 8

page 10

page 11

research
09/05/2023

Improving students' code correctness and test completeness by informal specifications

The quality of software produced by students is often poor. How to teach...
research
11/19/2021

Automated, Targeted Testing of Property-Based Testing Predicates

Context: This work is based on property-based testing (PBT). PBT is an i...
research
09/18/2021

Steps Before Syntax: Helping Novice Programmers Solve Problems using the PCDIT Framework

Novice programmers often struggle with problem solving due to the high c...
research
03/01/2019

Having Fun in Learning Formal Specifications

There are many benefits in providing formal specifications for our softw...
research
05/24/2022

Using ACL2 To Teach Students About Software Testing

We report on our experience using ACL2 in the classroom to teach student...
research
06/16/2022

Roadblocks to Attracting Students to Software Testing Careers: Comparisons of Replicated Studies

Context. Recently, a family of studies highlighted the unpopularity of s...
research
01/26/2023

Synthesizing Specifications

Every program should always be accompanied by a specification that descr...

Please sign up or login with your details

Forgot password? Click here to reset