Software testing

Software testing is the process of verifying whether the developed software is a defect free and meets the client’s requirements.

 

Phases of Software Life Cycle (STLC)


It contains following phases (steps):

Requirement Analysis

The following activities were involved:

·        Analyzing the given requirements

·        Studying both functional and non-functional requirements

·        Identifying the type of testing to be performed.

Test Planning

The following activities were involved:

·        Preparation of test plan or strategy document

·        Analyzing the risks involved

·        Planning of resources

·        Selection of testing tool

·        Effort estimation.

Test case preparation

The following activities were involved:

·        Creating manual/automated test scripts

·        Reviewing the test scripts

·        Creating test data (if applicable)

Test Environment setup

The following activities were involved:

·        Understanding the minimum requirement

·        Setting up the test environment

·        Performing smoke testing to make sure whether the environment is ready for testing.

Test Execution

The following activities were involved:

·        Execute the test cases as per the test scripts.

·        Documenting the test results

·        Logging the defects in a test management tool

·        Retesting the defect fixes.

Test closure

The following activities were involved:

·        Evaluating the testing cycle completion based on the time taken, test coverage, business objectives/requirements.

·        Preparing the test metrics.

·        Discussing the learning got from the project and find out the testing process can be improved.

·        Preparing test closure report

 

Types of Software Testing

·        Manual Testing

It is the testing process in which the test cases were executed manually without using any automated testing tools. Manual Testing is the most fundamental testing technique to find critical defects in the software application.

Any new software application should be manually tested before automation.  

·        Automated Testing

Some specific testing tools requires to execute the test scripts for automation testing. This testing technique is most useful for stable application(s) and is widely used for Regression Testing.

·        Black box testing

In this black box testing, the tester will verify the functionality of the application & make sure whether the application meets client’s requirement. For this type of testing, coding knowledge is NOT required.

·        White box testing

In the white box testing, the developer will verify each line of the code and then give it to the testers. For this type of testing, coding knowledge is required.

·        Functional Testing

It is a type of testing to make sure whether the functionality meets the client’s requirements. Here the testers will verify the primary functionality, the flow of the screens, the error messages.

·        Non-Functional Testing

The testers make sure the non-functional parameters such as the reliability, load test, and the performance of the application. The main purpose of the non-functional testing is to verify the speed of the software system or application.

·        Unit Testing

It involves the testing of each unit or component of the application. When an application is given for testing, the testers will verify each component or module of the application independently.

·        Integration Testing

Integration testing is the next level after the unit testing. In this testing, the integrated units or components are tested in a group. Here the testers will make sure the data flow between the modules or components.

·        System Testing

It includes testing of fully integrated software application. Here the testers verify the full working of the integrated software application against the requirements. It is an end-end testing.

·        Performance Testing

This testing defines how quickly the server responds when multiple user’s requests given to the software application.

·        Compatibility Testing

Checking the functionality of a software application on different browsers, hardware platforms & network is called compatibility testing.

·        Regression testing

It is a type of black box technique. This type of testing is to make sure that the product or the software application works fine with new enhancements/changes or any defect fixes. Automated test scripts are often used as same test cases needs to be executed multiple times.

·        Smoke testing

The purpose of this testing is to make sure whether the build given by the developers, or the testing environment is ready for testing or NOT.

·