Waste Not, Want Not: Preventing IT Waste, Cutting Costs and Reducing Risk with Software Testing

Today, we operate in a global economy at internet speed. Globalization of our workforce has shifted the way work gets done. The explosion of wireless and edge technology has raised the expectations of consumers, who are more informed, educated, and knowledgeable about products and services. This changing landscape places immense pressure on business applications in organizations worldwide. Critical application outages caused by software defects can cost the business millions of dollars in revenue for every hour of downtime.

Software defects are often introduced at the very early stages of development of the application and typically go undiscovered until testing and in some cases all the way through to production. The later a company detects a defect in the development cycle, the higher the associated cost. Excessive rework of application design and code causes delays, high costs and wastes valuable IT resources. However, high costs caused by undetected defects can be minimized and the savings better spent on business initiatives for innovation and competitive advantage.

To combat this IT waste, companies can implement quality management solutions and managed testing services that focus on identifying defects earlier in the process and increasing visibility to the quality, performance, security and readiness of their software under development.  This greatly reduces the risk that a software defect will cause a critical system outage in production - a desirable business outcome above all others.

Testing services should be risk-based and requirements driven with a good understanding of business impact.  Most defects originate in the requirements, so applying ambiguity analysis and risk analysis tools at the forefront of every project cycle helps ensure that requirements are well defined and unambiguous. Business impact analysis of requirements identifies business risk and value that determines the testing strategy. "High risk" business functions require a high degree of systematic, automated testing using a business component strategy with root-cause analysis.  "Low risk" functions require only simple ad-hoc manual testing. A correct strategy will ensure that high risk, high value requirements receive the optimum number of test cases and test coverage. Conversely, we do not want to over test and over spend on low risk, low value requirements.

Functional modeling is another technique that allows users to view their requirements as a prototype model before any code is produced. This form of cause-effect graphing enables business users to view the functionality of the application which quickly identifies gaps in the requirements where more detailed specification is required in order to complete the model. Functional models are then used to automatically generate test cases with maximum test coverage for the minimum number of test cases. Functional models drive accuracy into functional business requirements, and reduce project rework by exposing deficiencies in the requirements definition.

As we seek to implement application changes at the speed of today's business, we are challenged to do an adequate level of testing while still achieving our goals of speed to market.  However, companies must not compromise the quality of the application as any defect that escapes into production could severely impact business operations. Companies can mitigate risk with accelerated testing using test automation. Under test automation, companies can execute hundreds and even thousands of test cases in a matter of hours as opposed to days. While a simple code change does not justify extensive manual testing, a simple change can cause enormous delays, costs and downtime if it contains a defect that is not caught. If the service automates the test cases, then the company can run a full regression test over night and be comfortable that even a simple change has not impacted other parts of the system.

Consider how powerful it would be to be able to run a full set of regression tests overnight, to assure that a bug has been successfully corrected and that no other errors were introduced in the process of fixing the original problem. This would have a huge impact in the context of your next development project, especially a project that uses short iteration cycles. When investigating testing options, companies should look for a framework that delivers a pre-completed solution that considerably reduces the amount of effort required to automate test scripts, and more importantly, reduces the ongoing maintenance of those scripts.

Testing services must include a quality methodology, testing software tools, enterprise testing methods, quality assurance processes and testing professionals.  The approach to testing and quality assurance should give clients the visibility they need into the status of the quality and readiness of their application software, highlighting areas of risk that they need to focus on. Regardless of what it is called or who supplies it, the service must ensure that the functional quality, performance and security of a client's application software meets the functional needs and expectations of their business.

A well designed, fully managed testing strategy is a critical asset for distributed organizations, providing centralized processes, infrastructure, and reporting. By implementing testing best practices organizations can enjoy reduced regression test cycle time and a reduction in the cost of application quality.  Additionally, projects will be delivered on time, within budget, by eliminating the waste associated with defects that go undiscovered until too late in the process.

Most importantly, the right quality and testing strategy will help you eliminate application software failures before they cause major system outages. Under a well-organized, risk-based testing strategy, no application makes it to production without going through consistent quality and performance processes that identify the areas of risk. Testing should be a routine part of application development, deployment, and operation - contributing to an organizational culture focused on application excellence.