Test design

In order to design properly a test, we need to define specifically what needs to be implemented. To that aim, it is important to remember what is the generic structure of a test, already explained in chapter 1, Retrospective On Software Quality And Java Testing. Therefore, for each test we need to define:

  • What is test fixture, that is, the required state in the SUT to carry out the test? This is done at the beginning of the test in the stage called setup. At the end of the test, the test fixture might be released in the stage called teardown.
  • What is the SUT, and if we are doing unit tests, which are its DOC(s)? Unit test should be in isolation and therefore we need to define test doubles (typically mocks or spies) for the DOC(s).
  • What are the assertions? This a key part of tests. Without assertions, we cannot claim that a test is actually made. In order to design assertion, it is worth to recall which is its generic structure. In short, an assertion consists in the comparison of some expected value (test data) and the actual outcome obtained from the SUT. If any of the assertions is negative, the test will be declared as failed (test verdict):
Test cases and assertions general schema

Test data plays a crucial role in the testing process. The source of test data is often called test oracles, and typically can be extracted from the requirements. Nevertheless, there are some others commonly used sources for tests oracles, for example:

  • A different program, which produces the expected output (inverse relationship).
  • A heuristic or statistical oracle that provides approximate results.
  • Values based on the experience of human experts.

Moreover, test data can be derived, depending on the underlying testing technique. When using black-box testing, that is, exercise some specific requirement based using some input and expecting some output, different techniques can be employed, such as equivalence partitioning or boundary analysis. On the other side, if we are using white-box testing, the structure is the basis for our test and therefore the test coverage will be key to select the test input which maximizes these coverage rates. In the following sections, these techniques are reviewed.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.149.29.71