App Testing at the Speed of Change
Jul 8, 2009 4:00 AM PT
Adaptability is the name of the game in our fast-paced society. In order to remain on top, every company needs to adapt to the market in which it participates.
Software and application developers (actually, the entire IT department, if you want to get technical) are particularly affected by this fast pace of change. With mobile phones, netbooks and smartbooks, as well as social networking, there are new platforms and competitors emerging every day. As a result, developers are being pressured to quickly release new, interesting and effective programs.
This means that the testing managers and QA (quality assurance) managers charged with maintaining quality and standards need to know what their teams are working on, what bugs exist and in what stages, and what (if any) feedback is coming in from clients. Furthermore, the testers themselves need to be aware of the entire project, not just the portion they are working on.
To get to the point, everyone involved in a particular project needs to know that the applications are being tested in an efficient and timely manner and are not being released to the public with any bugs or other outstanding issues. With all the variables bouncing around, it's fairly apparent that we've moved way beyond the days when a basic spreadsheet (or email!) was sufficient for tracking the development lifecycle.
Why Testing Matters
In such a competitive market, any company releasing buggy or otherwise faulty software is likely to see their customers move to the next company in line offering a similar product or service. In real-time systems such as banks, hospitals and airplanes, releasing buggy software can cause severe damage to a company's reputation, to say nothing of the damage caused to the actual people who rely on these software systems.
Imagine if the hospital program that held patients' medical details crashed because of a bug? That isn't just a PR disaster; it's a real-life disaster.
This is where a tightly monitored testing process comes into play. Performing test cases on each function of the application or software system ensures that the program performs as designed, and that each function produces the desired results prior to public release.
Testing managers, responsible for ensuring that software is released to the public without any bugs, need to be able to efficiently organize, control and oversee the testing process so each test case is completed both quickly and precisely. Having an organized and transparent testing process is also more efficient -- and, as we all know, the company first to market with the best and cheapest product wins!
Talking to Your Peers
Complicated systems have complicated testing processes. That's just the way it is. There are team leaders, testing managers, quality assurance managers, project managers and more -- all working on the same product to get it out the door as quickly as possible, and in working order. Any testing manager needs a quick and efficient way to communicate with everyone involved in the testing process. When analyzing the tests, details on previous testers, past test results and processes used to generate those results are integral in comparing functionality of the feature in all its iterations.
If a bug is found, a separate method is needed for tracking and fixing the issue. Keeping track of these bugs and their current status is necessary in order to complete the testing, as is communicating with the tester or developer on the other end of the process. In an ideal world, any tools used for bug tracking and test case tracking would be integrated, allowing easy transfer of information from one data set to the other.
Additionally, testers need to be able to see what their peers are doing in order to make critical decisions regarding their own tasks. If the developers and testers are able to easily communicate and view results from other team members, they can incorporate feedback and bug fixes quickly and efficiently.
Each tester also needs to know which step their colleagues are at in the testing process, what results have been achieved, and how far along the overall testing is. Testing managers want to do everything they can and use every tool at their disposal in order to facilitate communication between and among teams. Continuous feedback on bug and issue status and individual test case steps during the testing process can greatly reduce the amount of time a software system spends in development. As the saying goes, time is money!
Running the testing process according to schedule -- and making sure that each function has been properly tested -- can be difficult for a testing manager if the status of each test isn't easily accessible and apparent. For a detailed and organized test case scenario, it's useful to have data like test case ID and description, expected output, actual output, results, remarks, steps, related requirements, test category, author, and time spent on hand.
However, it's a time-consuming process to list the input, expected output, preconditions and post conditions in detail. Testing managers can increase efficiency and decrease frustration by having a system in place to preserve this information for future and related tests.
One way to track test cases is by keeping a detailed and constantly updated spreadsheet with test case methods, statuses and results. While this is fine for small-scale projects, it isn't a reasonable or even feasible method for most software and application development teams -- particularly those operating on a large scale. Email is also often used as a more proactive, albeit less organized, method of tracking test cases.
Both of these methods utilize existing infrastructure and often don't require any additional cost. However, if you add up the time spent by developers and testers in looking for files and searching for data, these methods don't always measure up to tools made for tracking the software development life cycle.
There are many software options available, both Web-based and not, which provide an organized testing environment. However, with the Software as a Service (SaaS) field growing so rapidly, some companies may still opt to build their own testing database and software, but many more are now frequently turning SaaS solutions.
SaaS providers not only host the management software, but are responsible for maintaining, updating and securing it. Additionally, some providers offer a range of integrated applications for the software development life cycle, which let users link test cases to bugs or help desk issues.
Shifting maintenance and time-consuming upgrades to the provider allows the development team to focus on their product and business growth. Which tracking solutions you choose for your projects depends on your company and development needs.
Companies that have multiple projects in various phases at various times, with developers and managers spread across the globe, tend to find that the most effective solution is one that will offer a detailed and organized test case scenario, easy archiving and reporting, and fluid communication between groups.
New platforms for development, a sinking economy encouraging companies to cut back on IT spending, and changing business models in the software and service delivery market are sure to change the way that software development and testing is conducted -- even more than these factors already have.
Additionally, as companies are once again realizing that they need to innovate in order to stay afloat, social networking is being worked into even the most elementary of business functions.
What this means for the software development process is that software testing, a process that has hardly changed in almost two decades, is fast on its way to becoming a fully collaborative effort, based in the cloud.
Yaron Sinai is the founder and CEO of Elementool, a developer of Software as a Service project management tools.