I've been working now for about seven years in the area of software test. I frequently read about software engineering issues online, but often find the role of software test either scarcely mentioned, or written off as the job somewhere well beneath that of 'programmers' or 'developers'. In particular Joel, of 'Joel on Software' has some very fine opinions on the business of software engineering, but when he talks about testing it still annoys me. I think the reason is simple, if all you develop are end-user type apps, then the job of software testing is to just be like a very patient user, trying all those end user widgets, clicking on stuff, etc. And yes there is probably more of that sort of testing that most. However I am here to write about another sort.... testing middleware. That's the stuff that most people don't think about, or perhaps even realise is there. It's running the world's businesses, making banks work, running websites. It is databases, and transaction servers, and messaging systems. In order to test these systems, you are not clicking some user front end. You are writing application code, and this code must be robust. By definition it has to cope when the underlying system does not work. It has to test a huge array of functions and clearly log what does and doesn't work. The speed and clarity with which these test applications run has a huge impact on the ability of the business to develop and deliver complex middleware products. It requires solid engineering practices and a wide range of skills. It is about this kind of testing that I will be writing.