Software Testing is the process carried out during software development, so as to ensure and verify that the product, be it a simple program or an entire Drupal site, developed has all the desired features, performs as expected by the customers and meets all their requirements. It also the ensures the robustness of the product. Here is the Levels of Testing in a Drupal Development Workflow.
The system is tested in steps, in line with the planned build and release strategies, from individual units of code through integrated subsystems to the deployed releases and to the final system. Testing proceeds through various physical levels of the application development lifecycle. Each completed level represents a milestone in the project plan and each stage represents a known level of physical integration and quality.
These stages of integration are known as test levels. Levels of testing include the following:
1. Unit Testing:
A unit is most fundamental part of an application. When the source code is developed, individual units have to be tested to decide if they are fit to be used. And this activity comprises unit testing. In unit testing, each unit is examined for defects. Unit testing holds as its principal goal, the isolation of individual units to ensure that they work independently as expected. The tested units are then integrated into modules to test the interfacing between modules. Its lesser expensive to conduct unit testing of individual units in the early stages and then integrating all units than testing all units put together, since this could throw numerous errors in diverse areas of the code.
Since unit testing is done to separate modules, all the errors present in the program such as integration errors, cannot be dealt with at this stage. Unit testing should be done in concurrence with other software testing activities.
2. Integration Testing:
In this phase of testing all the individual modules are combined and subjected to testing as a group. After unit testing of each module, the groups of units are put together through either black box or white box testing, where with proper inputs, success and error cases are conjured. The primary goal of integration testing remains to be identifying defects while the units are combined together.
In short, integration testing can be put across as the combining of smaller units into components, and testing of the interfacing between such components. These components are later combined into larger parts of the program. In the SDLC cycle, this phase comes before system testing and after unit testing. Had the units before being combined into components, been properly tested and constructive measures been taken to correct them, the analysis of defects during integration testing can be carried out effortlessly, since it would be from the interfacing of the units.
3. System Testing:
System testing is carried out after integration testing, where all the components that have been integrated in the previous phase, are put to test by a dedicated testing team in an environment that is closely similar to real life environment where it has to be deployed. In this stage, the whole system is examined for defects, where all the functionalities and technical requirements are verified and quality is ensured. Its main focus is to verify that the customer requirements are fulfilled.
During system testing, the design, the behavior and also the drafter expectations of the end user are tested for. Both business requirements and application architecture are tested in this phase. It is also designed to test ahead of the limits identified in the SRS.
4. Acceptance Testing:
Procedurally, Acceptance testing is the responsibility of the end users or the customers of a system; other stakeholders may be involved as well. This method is testing is done just before the application is delivered and deployed at the customer location. Conventionally, the software is checked if it meets all the customer requirements and specifications. Since they can be done at two levels namely system provider level and customer level, they are also called as end-user testing, user acceptance testing or field acceptance testing.
Acceptance testing (also known as factory acceptance testing, final testing, QA testing, validation testing, application testing etc) can be grouped under Black-box testing where the internal code is not checked for functionality, but what holds importance is the overall functioning of the whole system. A set of stringent constraints are set, which the system is subjected to and the outcome can be determined as a success or a failure after the final assessment by the end user.
It brings about a sense of assurance and reliability in the new product when it is tested and confirmed to deliver the expected behavior. An indenture can be signed off stating the product as satisfactory, only once it has gone through this stage of testing successfully.
Conventional forms of acceptance testing include the following: User acceptance testing:
Normally verifies the aptness for use of the system by business users.
Operational (acceptance) testing:
The acceptance of the system by the system administrators, including:
- Testing of backup/store
- Disaster recovery
- User management
- Maintenance tasks
- Data load and migration tasks
- Periodic checks of security vulnerabilities
Contract and regulation acceptance testing:
This testing process is designed to ensure that the customized software conforms to client requirements defined in the contract. Certain acceptance norms are to be complied with which are decided upon when the contract is signed.Regulation acceptance testing is performed against any regulations that must be adhered to, such as government, legal or safety regulations.
Alpha and Beta (or field) testing:
Developers of market, or COTS, software prefer to get response from prospective or existing customers in their market before launching the software product for sale. Alpha testing is performed at the developing organization but not by the developing team. Beta testing, also known as Field Testing, is performed by the customers (or prospective customers) at their own site.