

How do you know that the software product released into production is virtually defect-free? The one-word answer is simple, but definitely not easy: “testing”. Testing is often the single most overlooked aspect of a project. One of the most well known facts about software defects is that the longer they go undiscovered, the more expensive they are to fix when discovered. Testing allows for the identification of issues and defects before implementation.
The preceding diagram describes in more detail the relative cost of a defect at different times in the life cycle of a software project, based on historic data. Initially, the cost of fixing a defect at the Requirements stage, when everything is on paper only is somewhat irrelevant. However, as the project moves along in its life cycle the cost of fixing a defect increases exponentially. At the initial Requirements stage, when a defect is no more than a change in thought, the relative cost is times 1. During Design phase, the relative cost is times 5 what it was when compared to the Requirements phase, and then times 10 what it was when it becomes code and on this goes until the relative cost of a bug fix is 150 times what it was originally. Measure twice and cut once.
This is the final set of tests to ensure that the solution meets the business objectives and requirements. The business customers are typically responsible for this testing, as it requires their active participation to work with the solution, as they will when it moves to production status.
Compatibility testing can be performed manually or can be driven by an automated functional or regression test suite. It ensures compatibility of an application or Web site with different browsers, OSs, and hardware platforms.
Producing tests for the behavior of an implementation to be sure it provides the portability, interoperability, and/or compatibility a standard defines. It also allows for verifying that the implementation conforms to industry standards.
Validating an application or web site conforms to its specifications and correctly performs all its required functions. This entails a series of tests which perform a feature by feature validation of behavior, using a wide range of normal and erroneous input data. This can involve testing of the product's user interface, APIs, database management, security, installation, networking, etc. Functional testing can be performed on an automated or manual basis using black box or white box methodologies.
After the components have been unit tested, they are executed together. This testing verifies that the interfaces work correctly and that data is processed in its entirety as expected. Integration Testing follows unit testing and precedes system testing.
Load testing is a generic term covering Performance Testing and Stress Testing.
Regression testing ensures that there is no impact to existing functionality, prior to implementing the new functionality. Commonly considered one of the most important testing types for new implementations onto existing systems.
A quick-and-dirty test which verifies that the major functions of a piece of software are working without attention to finer details.
System testing is where the most rigorous testing takes place, to ensure that the solution meets the technical and environmental needs of the customer and that the solution behaves as it should. Many individual tests can be performed under the system test umbrella. System testing falls within the scope of black box testing, and as such, should require no knowledge of the inner design of the code.
The first testing which occurs is to ensure that the component meets expectations in terms of features and functionality. In almost all cases, the person that develops the component also does unit testing. Unit testing is typically conducted in a local or development environment.
Be sure to check out my next blog in the Project Leadership Series, including how to write effective and efficient test plans!Lorem ipsum dolor sit amet, consectetur adipiscing elit
For the past two decades, we've made it our business to help you work smarter. From commerce challenges to ERP customizations, we support the power of your big ideas by helping you work more strategically, more intuitively, and more efficiently.
2658 Scranton Road, Suite 3
Cleveland, Ohio 44113
216.369.3600
No Comments Yet
Let us know what you think