Levels of testing include different methodologies that can be used while conducting software testing. The main levels of software testing are :-
- Functional Testing
- unit testing
- acceptance testing
- integration testing
- alpha testing
- system testing
- beta testing
- regression testing
- Non- Functional Testing
- performance testing
- usability testing
- security testing
Functional Testing - This is a type of black-box testing that is based on the specifications of the software that is to be tested. The application is tested by providing input and the the results are examined that need to conform to the following it was intended for.
- unit testing - unit testing is performed by the respective developers on the individual units of source code assigned areas. The goal of unit testing is to isolate each part of the program and show that individual parts are correct in terms of requirements and functionality.
- integration testing - it is defined as the testing of combined parts of an application to determine if they function correctly. Integration testing can be done in two ways - bottom up integration and top down integration testing
- system testing - system testing test the system as a whole. once all the components are integrated, the application as a whole is tested rigorously to see that it meets the specified quality standards.
- regression testing - it is performed to verify that a fixed bug hasn't resulted in another functionality. The intent of regression testing is to ensure that a change, such as a bug fix should not result in another fault being uncovered in the application.
- alpha testing - unit testing, integration testing and system testing when combined together is known as alpha testing. The following aspects will be tested in application - spell mistakes, broken links, cloudy directories
- beta testing - This test is performed after completion of Alpha testing. Beta testing is also known as pre-release testing. Beta versions of software are ideally distributed to a wide audience on the web partly to give a real world test.
Non-functional Testing - Non -Functional testing involves testing a software from the requirements which are non functional in nature but important such as performance, security etc.
- performance testing - it is mostly used to identify any bottlenecks or performance issues rather than finding bugs in a software.
- usability testing - it is a black-box technique and is used to identify any error and improvement in the software by observing the users through their usage and operation.
- security testing - security testing involves testing a software in order to identify any flows and gaps from security and vulnerability point of view. Listed below are main aspects that security testing should ensure : confidentiality, integrity, authentication, availability, SQL insertion attacks, cross-site scripting attacks.
- portability testing - it includes a software with the aim to ensure its re-usability and that it can be moved from another software as well.