Getting started with software testing
In this section, we introduce the reader to the idea of software testing and its importance. More specifically, we discuss the following topics:
Why software testing?: By means of a simple example, we will convince the reader that proper testing is a fundamental activity that needs to be done to achieve high-quality software systems. We will also convince the reader that, while the process of deriving test cases is a manual activity, its execution should be automated.
Principles of software testing: We explain to the reader some of the "truths" about testing software. Among others, we explain why exhaustive testing is infeasible, and why we need to vary the testing techniques we apply in order to keep finding bugs.
Software testing automation: We introduce to the reader the JUnit tool. JUnit is the de-facto industry standard for writing automated tests in Java. We show that, once tests are automated, software development teams enjoy benefits, such as confident refactoring. This is an introductory chapter; readers that are familiar with JUnit can skip it.
Testing vs writing tests and developer testing workflow: Modern software development is all about quality. To achieve it, developers should perform both testing and design techniques. In this chapter, we explain how we envision testing as part of the developer's work cycle.