Software testing is a process of calculating or judging the system quality or components quality of the application and find out whether it satisfies the requirements. Generally it is said that software testing is a process of analysing the software item to detect the differences between the existing and required conditions and evaluate the features of the software.
The required professionals for software testing are:
- Software tester
- Software developer
- Project lead
- End user
Many different companies will be having various designations for the people who test the software on the basis of their experiences and knowledge such as software tester, software quality assurance engineer, QA analyst, test engineer.
Applications of software testing:
There are many applications of software testing. They are:
- Cost effective development
- Product improvement
- Test automation
- Quality check
Software testing Types:
There are various levels in this process of testing. Levels of testing include different methodologies which can be used while conducting software testing. There are two main types of software testing. They are:
- Functional testing
- Non-functional testing
1. Functional testing:
The question “what system does?” is to be answered in functional testing. It is to verify the behaviour of each function of the software application, as specified in the requirement document. The application is tested by providing input and then results which have to be confirmed to the functionality it was meant for.
2. Non-Functional testing:
Nonfunctional testing refers to various requirements of software other than functionality like performance, load. Stress, scalability, security and compatibility etc. The importance is given to improve the user experience on how quickly the system responds to the request. There are different types of nonfunctional testing. Few are listed below:
- Performance testing
- Load testing
- Stress testing
- Usability testing
- Security testing
- Portability testing
Software testing Levels:
The software testing is done in four different levels, each level has specific objective of testing. The software testing levels- unit testing, integration testing, system testing, acceptance testing are explained below:
1. Unit testing:
Unit testing is a testing level which is done to check on the individual modules of a source code are working properly or not. It tests each and every unit of the application separately by the developer in the developer’s environment.
2. Integration testing
Integration testing is a process of testing the data transfer or connectivity between program units or tested modules. It is also called as string testing and is sub divided into top-up approach, bottom approach and big bang approach.
3. System testing:
System Testing is done on a fully integrated application. This is also called as an end to end scenario testing. It verifies software in detail. It involves testing of every input in the application to check for the desired outputs.
4. Acceptance testing:
Acceptance testing is done by quality assurance team who will verify whether the application meets the required specifications and satisfies the client’s requirements. By doing the acceptance testing on an application testing team will reduce how the application will show its performance in production. It is having many legal and contractual requirements for acceptance of the system.
Testing and quality:
The main objectives of testing a software are:
- Detecting whatever software defects that may be created by the programmer while being developed.
- For gaining the confidence in software application and providing the information about level of quality.
- By preventing defects.
- By verifying the end results meet the business requirements and also user requirements.
- Making sure that it satisfies the business requirements and system requirements specifications.
Many people get confused when it comes to pin down the differences among Quality Assurance, Quality control and Testing. At some extent they are interrelated and look as same activities but there many distinguishing aspects to set them apart. There are some following differences:
QA involves activities that make sure the implementation of processes, procedures, standards in context of verification of software which is developed as per intended requirements. It always gives importance to process oriented activities. It always focuses on processes and procedures rather than conducting actual testing on the system.
It involves all the activities that make sure the identification of bugs in software. It focuses on actual testing. It has product oriented activities. It is considered as the subset of quality control.