Documenting my thoughts on life in the world of Testing
Thursday, 28 March 2013
Will automated testing ever replace manual testing?
Manual testing is a core function in any software development lifecycle, but with automated tests, will there ever come a time when there is no manual testing done on a product?
Automated testing is extremely powerful when used in the right way (see Testing Automated Tests blog post), and when used in the right tests (see How to decide what and when to automate). So, obviously, the next big question would be, if I can automate tests, do I really need to spend time and money running manual tests? As manual testing is often one of the biggest overheads at a company in terms of releasing a product to live. An automated test, no matter how robust and how good you might think it is, will never replace that of a truly awesome manual test. By a truly awesome manual test, I am not necessarily talking about the steps in the test case, but about the testers knowledge of the system, as that will never be replaced by an automated test. Another thing that I dont think automated tests will ever replace is that of cross browser testing, whilst functionality can be tested cross browser, UI changes will obviously be missed by that of an automated tests, if a button is in the wrong place for instance, would most probably never get picked up by an automated test, however, a manual tester would notice this straight off, and raise a bug appropriately. I recently read an article (blog postby Joel Spolskyhere) around the development of Vista (admittedly based on rumours - but it makes perfect sense to me), and how the testing of Vista was radically different to how previous versions of Windows were developed. Whether it's true or not, it definitely makes sense, and I'll explain more about it. We'll use a generic piece of software as an example... If the testers on previous versions tested a number of things manually, things like the location of controls and how easy the software was to navigate around and use, spelling and grammar of error messages along with testing the UI of the overall range of products. This meant that the software had a pretty good user experience and issues were raised around the above and fixed. However, the development of this new piece of software, involved none of the above, as it was decided to remove all manual testers and replace them with Software Engineers in Test, testers who wrote automated tests. So instead of performing manual tests on things like the UI and the flow of the software, these were replaced by automated tests, but, and this is a big but, automated tests will never be able to tell you if the software flows nicely together, or if the location of controls is intuitive, and so, this new piece of software was released with not necessarily what you would classify as a true bug, it's just that it was considered essentially a downgrade on previous versions as it had a terrible user experience. So, I think you can understand my point that automated tests will not replace manual testers, however, they will change the role of a manual tester. The manual tester will have more time to focus on other aspects, as most of the functional testing will be completed by automated tests. This means that as they won't necessarily be running all the functional tests anymore, this will allo them more time to perform user journeys, exploratory testing and become user experience testers, people who test the flow of software and the UI etc. This is essential testing, as user experience is extremely important in software today with so much competition around. I will now leave you with the following quote from here which I think sums up the above.. "Automated tests ensure the software is working as designed. Human tests ensure the design is working."