Saved in:
Bibliographic Details
Main Authors: Westphal, Oliver, Voigtländer, Janis
Format: Preprint
Published: 2020
Subjects:
Online Access:https://arxiv.org/abs/2008.09253
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866913913089556480
author Westphal, Oliver
Voigtländer, Janis
author_facet Westphal, Oliver
Voigtländer, Janis
contents We present a small, formal language for specifying the behavior of simple console I/O programs. The design is driven by the concrete application case of testing interactive Haskell programs written by students. Specifications are structurally similar to lexical analysis regular expressions, but are augmented with features like global variables that track state and history of program runs, enabling expression of an interesting range of dynamic behavior. We give a semantics for our specification language based on acceptance of execution traces. From this semantics we derive a definition of the set of all traces valid for a given specification. Sampling that set enables us to mechanically check program behavior against specifications in a probabilistic fashion. Beyond testing, other possible uses of the specification language in an education context include related activities like providing more helpful feedback, generating sample solutions, and even generating random exercise tasks.
format Preprint
id arxiv_https___arxiv_org_abs_2008_09253
institution arXiv
publishDate 2020
record_format arxiv
spellingShingle Describing Console I/O Behavior for Testing Student Submissions in Haskell
Westphal, Oliver
Voigtländer, Janis
Programming Languages
Software Engineering
We present a small, formal language for specifying the behavior of simple console I/O programs. The design is driven by the concrete application case of testing interactive Haskell programs written by students. Specifications are structurally similar to lexical analysis regular expressions, but are augmented with features like global variables that track state and history of program runs, enabling expression of an interesting range of dynamic behavior. We give a semantics for our specification language based on acceptance of execution traces. From this semantics we derive a definition of the set of all traces valid for a given specification. Sampling that set enables us to mechanically check program behavior against specifications in a probabilistic fashion. Beyond testing, other possible uses of the specification language in an education context include related activities like providing more helpful feedback, generating sample solutions, and even generating random exercise tasks.
title Describing Console I/O Behavior for Testing Student Submissions in Haskell
topic Programming Languages
Software Engineering
url https://arxiv.org/abs/2008.09253