Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>If you have little experience in writing tests, it's the easiest to start from the domain model (or a higher level just below the UI). When you have driven the design of the domain model with TDD, then you will know that what the database schema needs to be like. It may be good to postpone introducing a database to the system, because dealing with database schema migration will add some overhead to the development. And that will also lead to a better design, because then the domain model will be better decoupled from the database layer.</p> <p>If you are skilled in writing tests and in TDD, it may be beneficial to start from an end-to-end test (in this case they would be written against the web UI) and produce a thin slice of functionality which touches all architectural parts of the system (as recommended in <a href="http://www.growing-object-oriented-software.com/" rel="nofollow noreferrer">GOOS</a>). In other words, create a <a href="http://alistair.cockburn.us/Walking+skeleton" rel="nofollow noreferrer">walking skeleton</a>. The benefits from this approach are that (1) you will be able to tackle and solve integration problems right at the start, (2) when the end-to-end tests are used to drive the design, it can help you to avoid implementing superfluous parts, and (3) the difficulties of writing the end-to-end tests pressure you to improve the architecture and add monitoring hooks, which may also be useful in monitoring the system in production. (Focused unit test will still be needed, because they provide design pressure at the class level, plus they run faster and thus provide faster feedback.)</p> <p>I've written more about this latter approach at <a href="http://blog.orfjackal.net/2010/07/design-for-integrability.html" rel="nofollow noreferrer">Design for Integrability</a>.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload