Decomposing requirements
Real-world requirements describe the highly diverse behavior of a software under development. Grouping functionality into single responsibilities, which have to play together to accomplish the program's objectives, creates dependencies between the components that implement such responsibilities. In the first section, you'll learn why and how these relations can affect our unit testing efforts.
Separating concerns
"Divide and rule." | ||
--Julius Caesar |
So far, we've learned a lot about the basics of unit testing. But real-world software doesn't consist of one simple class whose behavior is specified by a single test case. Hence, we have to reflect a bit about the requirements before actually starting development. At this stage, we try to spot and group together functionality that affects common concerns from a high level point of view. This helps us to assess the interplay of responsibilities and to decide where to begin.
Remembering our timeline specification from Chapter...