Asset Management Software Header Gif

 

The Software Testing Cycle: A Valuable Process

 

One of the important stages in the software development life cycle is software testing. There are a number of testing types used for testing the software starting from the development of the application until it reaches the marketing phase. Before it is released for production any software has to undergo a series of testing such as black box/ white box/ gray box testing, unit/ integration/ system testing and alpha testing/ beta/ acceptance testing, functional/ non-functional testing and verification and validation.. These tests are carried out during the entire period of software testing cycle.

 

There are a number of different testing cycle models that are in vogue. Different companies use different models; however the concepts are more or less same. Typical software testing cycle model is given below.

Requirements Analysis – The testing begins in the requirements phase of the software life cycle (SDLC).
Design Analysis - During the design phase, testers work in conjunction with developers to determine the areas of design that are testable and under what parameter those tests work.
Test Planning - During this phase test strategy, test plans and test bed creation are decided
Test Development – Finalization of test procedures, test scenarios, test Cases, test scripts to use in testing software.
Test Execution - Testers execute the software based on the plans and tests and report any errors found to the development team.
Test Reporting - Once testing is completed, testers generate metrics and make final reports on their test effort and whether or not the software tested is ready for release.
Retesting the Defects

During the testing the software is tested for the security, performance, functionality, usability, reliability, efficiency, portability and maintainability etc.

Before the software is released for production any software has to undergo series of testing as per the requirement of software testing cycle. Brief details of these tests are given below.

Black box testing - As the name "black box" suggests, this type of testing requires no knowledge of internal logic or code structure. The types of testing under this strategy are totally focused on the testing for requirements and functionality of the product/ software application. In this the software tester will input the data and see the correctness of the output data. He is not concerned with the internal operations which make the data do what it does.
White box testing - This testing strategy deals with the internal logic and structure of the code. The tests written based on the white box testing strategy incorporate coverage of the code written, branches, paths, statements and internal logic of the code etc. This aspect of testing is done by the white box testing which is normally done by capable software professional.
Gray box testing - This involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level. Gray box testing can be considered as the combination of black box and white box testing. The objective of this testing is to find out defects related to bad design or bad implementation of the system.
Unit testing – This is the method of making sure that the smallest unit of your software is working properly in isolation. In this, testing is carried out on the minimal software component or module. They get integrated once the module testing is completed.
Integration testing – The objective of Integration testing is to make sure that the interaction of two or more components produces results that satisfy functional requirement. This test checks for any defects in the interfaces and interaction between integrated modules. The integrated software should function as a group in the same way as its components.
System testing - System testing is the most important phase of complete testing cycle. This phase is started after the completion of other phases like Unit, Component and Integration testing. During the System Testing phase performance testing, load testing, stress testing, scalability etc. are also performed. Non functional testing is normally carried out during the System Testing phase only.
Alpha testing - simulated or actual operational testing by potential users/customers or an independent test team at the developers' site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing.
Beta testing – This comes after alpha testing. In this, the software is exposed to a limited number of people who are not a part of the programming team
Acceptance testing – In this the testing is done by the customer to decide on the product acceptance; this is the formal testing conducted to determine whether a software system satisfies its acceptance criteria and to enable buyer to determine whether to accept the system or not.
Functional testing - In this, an application or Web site is validated for conformation to its specifications and correctly performs all its required functions. This involves conducting a series of tests which perform a feature by feature validation of behavior, using a wide range of normal and erroneous input data.

Regression testing is one type of functional testing and plays an important role in testing software. The existing software requires changes due to fixing defects, enhancements etc. Regression testing is done to ensure that enhancement, defect fixes or any other changes made to the software have not broken any existing functionality. Regression testing is very important wherever there is iterative development of software. In iterative development, the developer adds another module with some functionality to the existing running module and one should make sure that addition of this module does not break the existing functionality. Regression testing is performed with the goal of discovering regression bugs.

Non-functional testing – In this the focus of the testing activities is on non functional aspects of the system. The focus of non functional testing is on the behavior and user experience of the system.
Performance testing - This is carried out to check whether the system meets performance requirements and is done after the completion of functional testing. Objective of performance testing is not to find functional defect in the system and it is assumed that functional defects have been identified and removed from the system during functional testing.
Verification and Validation (V&V) is one of the most important steps in the software testing cycle. This is the process of checking that a software system meets specifications and that it fulfils its intended purpose. Validation is the process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirement. Verification is the process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase.