Automated input minimization (or test case reduction) is an automated debugging technique to isolate that part of the failure-inducing input that is actually inducing the failure.
Selenium is a good tool for automating at the UI, but it also has a number of other usages that often go overlooked. Looking for Race Conditions is one of these usages. Using a tool like Selenium IDE allows you to enter data, click buttons and navigate ...
"Strong integration tests, consisting of collaboration tests (clients using test doubles in place of collaborating services) and contract tests (showing that service implementations correctly behave the way clients expect) can provide the same level of confidence as integrated tests at a lower total cost of maintenance."
"You’ve seen interfaces that violate the Interface Segregation Principle in the worst possible ways—my canonical example is Java’s ResultSet—and mocking those interfaces is a sure path towards madness."
ObjectMother describes a design pattern for testing, where common names are given to standard test fixtures. Examples:
"Heather" - employee since the company was founded,
"John" - always forgets his password,
"Horst" - works from another timezone
A. Leitner, M. Oriol, A. Zeller, I. Ciupa, and B. Meyer. Proceedings of the Twenty-second IEEE/ACM International Conference on Automated Software Engineering, page 417--420. New York, NY, USA, ACM, (2007)