Levels of Software Testing
Software Testing is the process of running a program in order to find the errors and mistake of the program at the time of execution. The main intention of Software Testing is to evaluate an attribute and to check the potentiality of the program whether it gives the required output. Testing is not just giving data’s and obtaining the output, it is entirely different – it works at the time if the software fails to function or if it never gives the required output.
Tests are frequently grouped by where they are added in the software development process, or by the level of specificity of the test. Each completed level represents a milestone on the project plan and each stage represents a known level of physical integration and quality. These stages of integration are known as test levels.
The following are the levels of Software testing:
Unit testing is a procedure used to validate that a particular module of source code is working properly. The procedure is to write test cases for all functions and methods so that whenever a change causes a regression, it can be quickly identified and fixed.
The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. Unit testing provides a strict, written contract that the piece of code must satisfy.
After completing the unit testing and dependent modules development, programmers connect the modules with respect to HLD for Integration Testing. Integrated System Testing (IST) is a systematic technique for validating the construction of the overall Software structure while at the same time conducting tests to uncover errors associated with interfacing.
The objective is to take unit tested modules and test the overall Software structure that has been dictated by design.
The purpose of this test is to evaluate the systems compliance with the specified requirements. System testing is performed throughout the system as part of a functional specification (s) (FRS) and / or a System Requirement Specification (SRS). System testing is a phase of inquiry, where the emphasis is to have almost a destructive attitude and test not only the design but also the behavior and believed the same expectations.
System testing includes load testing and stress testing. Once the load testing and stress tests are completed successfully, the next level of Alpha or Beta Testing will proceed.
This section includes different concepts and definitions of Usability testing from Software point of view. It is a black box technique and is used to identify any error(s) and improvements in the Software by observing the users through their usage and operation.
During this test, testing team concentrates on the user friendliness of build interface. It consists of following sub tests.
User Interface Test: Ease of use (screens should be understandable to operate by End User.
Speed in interface: – Less number of task to complete task
Manual Support Test: – Context sensitiveness of user manual.
Functional Testing of the software is conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements.
Performance testing measures the efficiency with respect to time and hardware resources of the test item under typical usage. This assumes that a set of non-functional requirements regarding performance exist in the item’s specification. Performance testing is considered as one of the important and mandatory testing type in terms of following aspects:
Speed (i.e. Response Time, data rendering and accessing)
Also Known as Scalability Testing. This type of testing identifies the maximum capacity of Software and its behavior at peak time.
During this test, test engineers execute application build under customer expected configuration and load to estimate performance.
Most of the time, Load testing is performed with the help of automated tools such as Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test etc.
Stress testing evaluates the performance of the test item during extreme usage patterns. Typical examples of “extreme usage patterns” are large data sets, complex calculations, extended operation, limited system resources, etc.
During this test, Test engineers estimates the peak load. To find out the maximum number of users for execution of out application user customer expected configuration to estimate peak load.
Security testing involves the testing of Software in order to identify any flaws ad gaps from security and vulnerability point of view.
Security testing should ensure:
Software data is secure
Software is according to all security regulations.
Input checking and validation etc.
Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details.
Smoke testing determines whether the system is sufficiently stable and functional to warrant the cost of further, more rigorous testing. Smoke testing may also communicate the general disposition of the current code base to the project team. Specific standards for the scope or format of smoke test cases and for their success criteria may vary widely among projects.
The application is tested by the users who doesn’t know about the application. Done at developer’s site under controlled conditions
Under the supervision of the developers.
Acceptance Testing is a level of the software testing process where a system is tested for acceptability. The purpose of this test is to evaluate the systems compliance with the business requirements and assess whether it is acceptable for delivery.
It is the final test action before deploying the software. The goal of acceptance testing is to verify that the software is ready and can be used by the end user to perform the functions for which the software was built.
This test is performed after Alpha testing has been successfully performed. In beta testing a sample of the intended audience tests the application. Beta testing is also known as pre-release testing.
Before the final release of the software is released to users for testing where there will be no controlled conditions and the user here is free enough to do what ever he wants to do on the system to find errors.
Testing with the intent of determining if bug fixes have been successful and have not created any new problems whenever a change in a software application is made. This type of testing is done to ensure that no degradation of baseline functionality has occurred.
The intent of Regression testing is to ensure that a change, such as a bug fix did not result in another fault being uncovered in the application.
Testing the application randomly like hitting keys irregularly and try to breakdown the system there is no specific test cases and scenarios for monkey testing.