Java Testing and Design: From Unit Testing to Automated Web Tests