Example-driven development: bridging tests and documentation
<|reference_start|>Example-driven development: bridging tests and documentation: Software systems should be explainable, that is, they should help us to answer questions while exploring, developing or using them. Textual documentation is a very weak form of explanation, since it is not causally connected to the code, so easily gets out of date. Tests, on the other hand, are causally connected to code, but they are also a weak form of explanation. Although some tests encode interesting scenarios that answer certain questions about how the system works, most tests don't make interesting reading. Examples are tests that are also factories for interesting system entities. Instead of simply succeeding or failing, an example returns the object under test so that it can be inspected, or reused to compose further tests. An example is causally connected to the system, is always live and tested, and can be embedded into live documentation. Although technically examples constitute just a small change to the way that to test methods work, their impact is potentially ground-breaking. We show (i) how Example-Driven Development (EDD) enriches TDD with live programming, (ii) how examples can be molded with tiny tools to answer analysis questions, and (iii) how examples can be embedded within live documentation to make a system explainable.<|reference_end|>
@article{nierstrasz2024example-driven,
    title={Example-driven development: bridging tests and documentation},
    author={Oscar Nierstrasz and Andrei Chic{s} and Tudor G^irba},
    journal={arXiv preprint arXiv:2409.00514},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.00514},
    primaryClass={cs.SE}
}