This is a story of a software quality analyst (QA).
He passed out of college with great passion for software quality. In his first job he realized though, that all he was expected to do was to look at test plan documents and manually test the application. He of course found it really boring to mindlessly follow the instructions and to keep entering data and clicking buttons all day. He began to wonder, is this what I want to do with my life ? If this was QA is all about ?
And then one day he stumbled upon a tool call
Selenium. With Selenium, he realized that he could write simple programs to get the computer to do all the boring tasks of entering data and clicking on buttons. Selenium would run the scripts that he wrote and show a green bar if everything went as planned and show a red bar if there were any discrepancies in the application. It saved him all the manual effort, gave him confidence that no regression bugs will creep in. It was perfect. This was the beginning of his love story with the idea of automated UI tests. He was so crazy about this at this time that all green things in life were good for him and all red was bad. His mom was surprised that he had started eating green vegetables now, but would not eat any apples :). No really, he was never happier as a QA.
After he spent about 6 months on his project doing this, he suspected that something was still wrong. While these tests were great help in finding regression issues, by now he had written some 300 of them. It took 6 hours to run all the tests once. On every run some random group of 10 tests failed every time. Whenever the application changed even a little bit, he had go make changes to 25 of his tests. So there were all these problems he was seeing, but automated UI testing was his first love remember, he said to himself that anything beautiful has some blemishes. Its OK. And so project after project he continued to do same things and saw the same pros and cons.
The on one day a miracle happened ! While he was asleep, someone planted an idea in his mind, like the in the movie inception. The idea was "Treat your services as a product". It didn't make any sense to him at first but the idea slowly grew on him. Today he has a very different approach to QA on his projects.
His current project is a SOA based web application. He believes now, that the services layer is where all the business logic is, it is where all the complexity is so that is the most important thing to test for me. So he writes several automated tests against his services emulating end to end user flows. These tests are much easier to write than the corresponding UI level tests, they also run fast and are less brittle and less susceptible to change.
Dont get me wrong... His love for selenium and his UI tests hasn't faded completely, though he now he treats them as a smoke suite. He has created a very small number of these tests around 15, which look at the most critical user scenarios and ensure that the app doesn't regress on those.
Now of course this web application is a web 2.0 style application, it does have a lot of dynamic UI behavior. So how does he test that ? Well he does not... he depends instead on the developers in his team to test drive their java script code and thus their unit tests are enough to catch any issues that creep up.
Since he now not wasting time baby sitting a large, slow and brittle UI test suite, he gets to spend time doing what he really wanted to do in the first place. He now has the time to think about 'how do I break this damn application'. So he spends time conducting many crazy ad-hoc tests, thinking up crazy scenarios where the bugs usually hide.
With all the extra time he also gets to plan actively to other kinds of tests like Performance testing, stress testing, load testing, Security testing and usability testing.
He is at his happiest now, he is a real QA now and not just an automator.