We learned about automatic static and dynamic program analysis in the previous section. This section will focus on human-involved (preparing test code) tests, which are another part of dynamic analysis. These are unit testing, test-driven development, and behavior-driven development.
Unit testing assumes that if we already have a single unit of code, then we need to write a test driver and prepare input data to check if its output is correct. After that, we perform integration tests to test multiple units together, and then the acceptance tests, which test the entire application. Since the integration and acceptance tests are more difficult to maintain and more project-related than unit tests, it is very challenging to cover them in this book. Those of you who are interested can find out more by going to https://www.iso.org/standard/45142.html...