Automated Testing benefits more than just the tech team
We’ve made a fair number of process changes here at Dovetail over the last year, and one of them is really tightning up our automated testing. We used to have some automated tests, that we ran sometimes, and we were happy to have that. But over the last year we’ve made a big push towards solid continuous integration and automated testing, where hundreds upon hundreds of tests get run on every code check-in, including fast running unit tests, and slower running integration tests. In addition to these developer tests, we’ve also automated most of our customer acceptance tests, which typically falls into the realm of our software testing group. Towards the end of last year, we made strides towards having customer acceptance tests written before development work. That way everyone knew when a story was completed – when it passed the customer’s test, which the customer defined even before any coding work began. Tests as specifications, if you will.
The reason I bring this up is to comment on a post I recently read on Automated Software Testing as Competitive Advantage. We typically think of this testing infrastructure as beneficial to the technical side of the house, allowing us to build better software, and adapt quickly to ever-changing business needs. However, as Dharmesh points out, there’s advantages on the business side of the house as well, focused on increasing customer satisfaction, as well as reducing support costs. Thus, automated testing is good for the tech team, good for the customers, and good for the business team.
As we continue to evolve our products and testing practices, we’re looking into delivering our tests as part of our product. These tests are first class citizens, not some left-behind by-product. A customer finds a bug or gets an unexpected error? Forget hours of exchanging phone calls, emails, and log files. The customer can run the tests, and find out exactly which tests are failing, immediately pointing to the root cause of the issue. We can resolve the support issue and deliver a fix quicker than we could otherwise. Reduced support costs, reduced time for sustaining engineering, and increased customer satisfaction. Benefits for all involved. Very cool.