Stefan Boos

Link collection and some blog posts

Follow me on GitHub

Software Testing

-Table of Contents** *generated with DocToc

Books on Testing

  • Andreas Spillner, Tilo Linz: Basiswissen Softwaretest (in German) - Aus- und Weiterbildung zum Certified Tester – Foundation Level nach ISTQB®-Standard.

  • Roy Osherove: The Art of Unit Testing, 2nd Edition, Manning Publications Co. November 2013. ISBN 9781617290893.

  • Gerard Meszaros: xUnit Test Patterns - Refactoring Test Code.

Rationale for Testing (in General)

All literature I have found up to now agrees that automated software testing is an essential integral part of the software development process.

In chapter 4 “Technical Practices” of Accelerate: The Science of DevOps the authors state:

Testing is not something that we should only start once a feature or a release is “dev complete.” Because testing is so essential, we should be doing it all the time as an integral part of the development process. Automated unit and acceptance tests should be run against every commit to version control to give developers fast feedback on their changes. Developers should be able to run all automated tests on their workstations in order to triage and fix defects. Testers should be performing exploratory testing continuously against the latest builds to come out of CI. No one should be saying they are “done” with any work until all relevant automated tests have been written and are passing.

More prominent and widely accepted opinions are given in the following works (sorted by descending date):

Websites and Articles on Testing

Research on TDD

-*Annotations**

Annotation  Description
🤝 Link was provided by Daniel Spicher via Michael Mahlberg. Thank you! :-)
🔓 Open Access Publication :-)
  • Caspers Jones: “Chapter 59: Test-Driven Development (TDD)” in Caspers Jones: Software Methodologies - A Quantitative Guide, pp. 467 - 471, CRC Press Taylor & Francis Group, LLC, 2018. ISBN 978-1-138-03308-5.

  • 🤝🔓 Mohammad Ghafari, Timm Gross, Davide Fucci, and Michael Felderer: Why Research on Test-Driven Development is Inconclusive? in Proceedings of the 14th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM) (ESEM ‘20). Association for Computing Machinery, New York, NY, USA, Article 25, 1–10. 2020. DOI:https://doi.org/10.1145/3382494.3410687

    • this current meta study is somewhat pessimistic about the current state of research
    • objective: identify factors contributing to the inconclusing research results on tdd so that scientists can improve their study design
    • value: use this study as a starting point for further research
  • 🤝🔓 D. Fucci, H. Erdogmus, B. Turhan, M. Oivo and N. Juristo: A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last? in IEEE Transactions on Software Engineering, vol. 43, no. 7, pp. 597-614, 1 July 2017, DOI:https://doi.org/10.1109/TSE.2016.2616877.

    • “Conclusion: The claimed benefits of TDD may not be due to its distinctive test-first dynamic, but rather due to the fact that TDD-like processes encourage fine-grained, steady steps that improve focus and flow.”
    • refers to caveats regarding refactoring
    • discusses the tdd approach and variations of it
  • 🤝 Old studies by Laurie Williams regarding TDD

Miscellaneous

Tools and Ideas

Property Based Testing

Fuzzing / Fuzz Testing

  • Vincent Blanchon: Go: Fuzz Testing in Go - A short introductory article for Go.
  • Dmitry Vyukov: go-fuzz - A coverage-guided fuzzing solution for testing of Go packages.
  • Google: gofuzz - A library for populating go objects with random values.
  • Jazzer - A coverage-guided, in-process fuzzer for the JVM platform.
  • Atheris - A Coverage-Guided, Native Python Fuzzer.
  • OSS-Fuzz - Combining modern fuzzing techniques with scalable, distributed execution for open source projects.