/sttp-book

The "Software Testing: From Theory to Practice" book (source)

Primary LanguageShell

Software Testing: From Theory to Practice

Book header

Welcome to Software Testing: From Theory to Practice!

This book covers the most important testing techniques needed to build high-quality software systems. Specific topics covered are quality attributes, maintainability and testability, manual and exploratory testing, automated testing, DevOps, test adequacy, model-based testing, state-based testing, decision tables, reviews and inspections, design-by-contract, test-driven design, unit versus integration testing, mocks and stubs.

We expect readers to be able to:

  • Create unit, integration, and system tests using current existing tools (i.e., JUnit, Mockito, and JaCoCo) that effectively test complex software systems.

  • Derive test cases that deal with exceptional, corner, and bad weather cases by performing several different techniques (i.e., boundary analysis, state-based testing, decision tables) as well as able to reflect on their limitations, when and when not to apply them in a given context.

  • Measure and reflect on the efficiency of the developed test suites by means of different test adequacy metrics (i.e., line, branch, condition, MC/DC coverage).

  • Design and implement testable software systems by means of architectural patterns such as dependency injection, and ports and adapters.

  • Write maintainable test code by avoiding well-known test code smells (e.g., Assertion Roulette, Slow or Obscure Tests).

Target audience: first-year Computer Science students. Knowledge in programming is required. Code examples are in Java, although easily transferrable to other languages.