A Dystopian World for Software Testers


You've entered the Twilight Zone. A robot that uses the cloud and massive amounts of big data can completely test software programs while detecting all bugs, rendering testers obsolete. But wait—the robot in this dystopian tale isn't utilizing special abilities only it can possess; these are methods any skilled tester should be employing right now.

News flash: A secret government organization has created a parallel automated test robot that uses the cloud and massive amounts of big data to completely test software programs while detecting all bugs. The technology uses test mutation analysis, math model-based fuzz testing, agile test-driven development, and standards-based automation frameworks running keywords supported by error case-based artificial intelligence. As the developer writes lines of code, the robot can test everything in real time automatically. Programmers get error reports within seconds so they can fix the software immediately. This technology makes testers obsolete. Testers are advised to quickly update their skill bases or look for other careers.

And now for something completely different.

Hopefully you understand this is a manager’s dream and not reality, but read some of the test concepts again. Do any of them sound familiar? They are more than abilities only a robot could possess; they are methods any skilled tester should be employing right now.

Agile test-driven development: I met a software developer on a ski lift (really). He said more than half of his job was testing. I wish more developers had this approach. Do your developers do testing? Is it good testing? Can you help them do it better? I believe that everyone on the team should test, and testers can be a focal point in helping with test-driven development and all testing, even in nonagile groups.

Fuzz testing: Chances are that most of us should be doing more with security testing, evidenced by several big stores’ databases getting hacked recently. Fuzz testing is a technique in security testing that provides unexpected or random data to computer programs to detect potential crashes or leaks. It should have a priority in your list of security test skill building.

Standards in testing: Do you know what any of the international standards for testing say or when they might be of use? For example, there are the ISO/IEC/IEEE 29119 Software Testing Standard and IEEE 1012 Standard for System and Software Verification and Validation. Many testers have never read a book or standard on testing. They use the same approaches to testing over and over while missing many bugs along the way. They check requirements against the code as if that is only way to test. Standards are not for every context and they are not a best practice, but testers at least should be aware they exist—and when or if they might be of use.

Test automation: For thirty years we have heard about test automation. Do you believe automation will do away with the job of testing? It may change your job from being a data entry person entering a prewritten test script to a thinking test designer using concepts such as keywords with automated test execution. Do you understand these concepts and what test automation really is? Have you read one of the books on automation to know its pros and cons? Does test automation with tools scare you? Do some research into test automation and see how helpful it can be.

Error case-based artificial intelligence (aka error taxonomies): The names may not be familiar to you, but the concepts should be.The concept of learning from the error bug history has been written about many authors, but how many testers analyze their bug log histories? Have you met that tester who seems to magically find bugs? I believe creative and inspired testers have mental models of where bugs hide and intuitively know how to find them. They create these mental models over their years of testing. Try learning from and analyzing your bug databases using an error taxonomy.

Other ideas: There were some ideas in the first paragraph that sounded like science fiction but actually have some basis in testing and research. Math-based testing uses concepts such as domain-based testing, combinatorial testing, and design of experiments. Domain testing includes techniques such as equivalance classes and boundary value analysis. Combinatorial test math involves pair-wise testing, and there are now free tools and textbooks to help you learn the combinatorial approach to testing. And if you are testing in areas where there are unknowns, then design of experiments, statistical testing, and other sampling approaches could be useful. Finally, working in the cloud and dealing with big data are more than just buzz words. These situations are real for many testers, and we need to be able to test in these environments.

I hope the first scary paragraph of this article made you laugh—and then maybe made you think a little. Most professions know how to use and reuse many different tools. In the building trade, no building professional has just a hammer and a saw. They have hundreds of tools. But many software testers use only a few tried and trusted techniques and never think about changing times or requirements.

How many of the ideas above have you actually applied? It is more fun and interesting to try out new test concepts while working on being a testing professional. If you are a truly a skilled tester, you will have challenging and exciting jobs.

About the author

StickyMinds is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.