By Scott Tilley
Today’s software is so important to our society that it’s essential that testing be performed professionally and effectively. Without proper software testing, bad things can happen – things that can affect every our daily lives. For example, many of the transactions made on the stock exchange are done using automated trading systems that buy and sell shares many times a second – far faster than a human trader. One such system malfunctioned in February 2010, causing oil futures to fluctuate wildly. According to The Economist, the cause was eventually determined to be a new program that had been turned on the day before, but was only tested for one hour. The usual testing period for these programs is six to eight weeks. Bugs in the code went undetected until the program malfunctioned, causing hundreds of thousands of dollars of losses and fines.
There are many hard problems in software testing. Some are people issues (e.g., education and training), some are process issues (e.g., how testing is conducted within an organization), and some are technology issues (e.g., which tools are used). For example, security testing is particularly critical for corporate safety and national infrastructure. Irrespective of the program, all testing focuses on finding bugs. A “bug” is some part of the program that is not working properly. The word “bug” actually harkens back to a simpler time in computing, when a literal bug – a moth – was stuck between the contact plates of a relay of an early computer, causing it to malfunction.
The skills needed by a good software tester are increasingly broad and deep. Fortunately, software testing is an attractive career. A recent article in Forbes magazine ranked software testing as “the happiest job in the US.” With a typical salary of $85,000, who can blame them?
A challenge facing the computing industry worldwide is a lack of skilled software testers. Very few universities have dedicated software testing classes as part of their computer science or software engineering curricula. Most testers come from other disciplines and learn on the job. Fortunately, there are organizations that offer specialized courses that cover the testing spectrum. Some of these courses adhere to the standards set by the International Software Testing Qualifications Board (ISTQB), so that professionals who pass an accredited course have portable and recognized skills to further their career.
Taking such courses has become an essential part of a software tester’s career path. This is due in part to the rapid change in technology and the increasingly complex software applications that are built and deployed everyday.
Consider the example of cloud computing, an area of IT that has gained much attention lately. Cloud computing includes virtualized hardware and software resources that are hosted remotely and made available on-demand using a services model (e.g., SOA). Instead of running or storing applications locally, users can host their applications in the cloud and access them from anywhere using a thin client application such as a Web browser. Cloud computing promises efficiency, flexibility, and scalability.
Cloud computing also presents tremendous new challenges – and opportunities – to software testers. Software testing in the cloud (STITC) lies at the intersection of three key areas: software testing, cloud computing, and system migration. STITC is an emerging discipline with the potential to significantly change the way software testing is done. It is an important area that deserves the attention of researchers, practitioners, and managers alike.
For software testers to become proficient in cloud computing, they need specialized training. As part of my own consulting and training activities, I partner with experts to lead corporate classes on topics such as software testing, cloud computing, and business analysis.
About the author
Scott Tilley is a Professor of Software Engineering in the Department of Computer Sciences at the Florida Institute of Technology, a Professor of Information Systems in the College of Business, and an Associate Member of the Harris Institute for Assured Information. He is a Visiting Scientist at Carnegie Mellon University’s Software Engineering Institute. He is Chair of the Steering Committee for the IEEE Web Systems Evolution (WSE) series of events and a Past Chair of the ACM’s Special Interest Group on Design of Communication (SIGDOC). He is an ACM Distinguished Lecturer. He writes the weekly “Technology Today” column for the Florida Today newspaper. His most recent book is Software Testing in the Cloud: Migration and Execution (Springer, 2012).
If you want to learn more, feel free to contact Scott by e-mail: scott[at]srtilley.com