Types of Software Testing
Software Testing is an integral part of Software Development Life Cycle (SDLC), used to identify the correctness, completeness, security, and quality of developed computer software. The objectives of software testing is to validate and verify, whether the software product meets the requirements of the client and works exactly the way it is expected to work.
Software testing can be introduced in the development process, anytime during development, but the type depends on when was it introduced in the development process. The development process involves various types of testing. The most common types of testing involved in the development process are:
• Unit Test.
• System Test
• Integration Test
• Functional Test
• Performance Test
• Beta Test
• Acceptance Test.
Unit testing is also known as component testing, module testing or program testing. The aim of this testing type is to search for defects in and verify the functioning of the individual software component. This is the first test in the development process is the unit test where source code is normally divided into modules, which in turn are divided into smaller units called units. These units have specific behavior. The test done on these units of code is called unit test. Unit test depends upon the language on which the project is developed. Unit tests ensure that each unique path of the project performs accurately to the documented specifications and contains clearly defined inputs and expected results.
This type of software testing involves testing the entire system in accordance with the requirements of the client. System testing is based on overall requirements specifications and covers all combined parts of a system. Several modules constitute a project. If the project is long-term project, several developers write the modules. Once all the modules are integrated, several errors may arise. The testing done at this stage is called system test.
System testing ensures that the entire integrated software system meets requirements. It tests a configuration to ensure known and predictable results. System testing is based on process descriptions and flows, emphasizing pre-driven process links and integration points.
Functional testing is the testing based on an analysis of the specification of the functionality of a particular software or a component of a software. Functional testing is often based on five main points. They are suitability, interoperability, security, accuracy and compliance.
Acceptance testing is a formal testing carried out to determine whether the system satisfies the acceptance criteria and to enable the users or other authorized entity to determine if the system has to be accepted or not. Acceptance testing is carried in respect to needs of the user, requirements of the users and the business processes to be carried out using the software. It is the least formal method implemented for testing a software. It helps in deciding the scope and duration of the various testing, which need to be carried out on the application. It also helps the tester in better understanding of the software.
Alpha testing involves stimulated or actual operational testing by potential users or an independent test team at the developers site, but outside the development arena. It is often performed on off-the-shelf software products, as a form of internal acceptance testing. More often this testing will be performed in-house or by an outside testing firm in close cooperation with the software engineering department.
Software testing that utilizes a variety of tools to automate the testing process and when the importance of having a person manually testing is diminished. Automated testing still requires a skilled quality assurance professional with knowledge of the automation tool and the software being tested to set up the tests.
Beta testing is the last important step that software developers conduct before they launch new software. Software systems at their beta stages are not fully developed. Beta testing is done after the product is code complete. Betas are often widely distributed or even distributed to the public at large in hopes that they will buy the final product when it is released. It is carried out as a form of acceptance testing for off-the-shelf software to acquire feedback from the market.
Black box Testing
Black box as the name suggests gives only the external view of the software. This type of testing involves, testing either functional or non-functional aspects of the software, without any sort of reference to the internal structure of the software. In this kind of testing the tester will not have any prior knowledge or information about the internal mechanisms of the system that will be tested.
In a typical software testing environment the tester will only know what the inputs are and the expected. Black box tests, as most other kinds of tests, must be written from a definitive source document, such as a specification or requirements document.