Software Testing - Software Engineering

What is Software Testing?

The software developed is tested for matching with the user requirements and specifications. When software development life cycle is considered, testing is undertaken at the phase level and when program code is considered, testing is undertaken at the module level. Two different components constitute together as Software Testing. They are Software Validation and Software Verification.

Software Validation

The software is validated against the requirements of the user to verify that the requirements of the user are being satisfied by the software. The software is always validated at the end of SDLC. The software is considered for validation, only when it matches with the user requirements.

  • It is assured by validation that the software is in accordance with the requirements of the user.
  • Validation process checks for whether all the needs of the user are attempted by the software product developed.
  • Validation emphasizes on user requirements.

Software Verification

A particular software need to be ensured that it matches with the requirements of the business. The software developed must strictly follow the methods and specification described. This process of ensuring is known as verification.

  • It is assured by verification that the software product developed is in accordance with the specified designs.
  • Verification process checks whether all the design specifications are followed while developing the product.
  • Verifications concentrate on the design and system specifications.

Testing is mainly done to ensure -

  • Errors – Mistakes made by the developers while coding are errors. The amount of mist match between the desired output and the actual software output is treated as error.
  • Fault – The error that has occurred and which may lead to failure of a system is known as a fault or bug. Faults arise from errors.
  • Failure – The performance failure of the system in processing a specific task is considered as a failure. Failure arises from faults.

What are the different types of Software Testing?

Software testing can be of two types – Manual testing or automated testing.


According to the sections and levels of the code, the test cases are generated by the software tester. On the basis of these test cases the tests are carried out and the manager is informed about the results.

It is a known fact that anything done manually takes more time and so the testing that is done manually also takes more time and thus most of the resources are consumed.


Some of the specific automated testing tools are used for software testing. These are developed to overcome the disadvantages and to reduce the consumption of time, effort and the resources.

For instance, manual testing can take up and test the opening of the web page on any web browser. But it cannot take up and test for checking load of i million users by a web-server.

Testing related to load, stress and regression are conducted and checked by using some of the hardware and software tools provided thus simplifying the work of the tester.

What are the different Software Testing approaches?

Two different approaches are used for conducting software testing. They are -

  • Functionality testing
  • Implementation testing

Testing on the functionality aspects of a software program is known as black-box testing. Testing on the functionality as well as implementation aspects of a software program is referred as white-box testing.

A testing is considered as perfect when it uses exhaustive methods of testing. Exhaustive tests include all the input and output values for testing. But for the cases of large range of values it is not possible to undertake exhaustive methods of testing.

Black-box testing

The program functions are testes by black-box testing. The input values along with the desired results are made available to the tester. For a specific input, if the output is in accordance with the expected result, then the program is considered to pass the tests. If not the program is considered to fail the test.

Black Box Testing

This test is conducted by the test engineers and users and hence they are not known with the code and the structure of the program.

Different techniques of Black-box testing are as follows:

  • Equivalence class – The input is split into sub classes having different elements. The complete class is considered to pass the test when any one element of the class passes the test.
  • Boundary values – Higher and lower end values of the input are identified. All the values are considered to pass the test when both of these values pass the test.
  • Cause-effect graphing – A combination of input values are tested at a time under cause-effect graphing unlike the other two methods of testing.
  • Pair-wise Testing – Different parameters are considered and are paired and tested. This pair is again tested for different values under pair-wise testing.
  • State-based testing – On the basis of the input state, the software is tested.

White-box testing

The implementation of the program is tested in order to improve the structure efficiency. As it is meant for improving the structure efficiency, it is also termed as Structural testing.

White Box Testing

Here, the tester is made available with the code and the design. This test is conducted directly on the code by the programmer.

Some of the techniques of White-box testing are as follows -

  • Control-flow testing – Considering all the statements and conditions, test cases are set up for incorporating control-flow testing. By covering all the statements, the conditions are tested for true and false.
  • Data-flow testing – The program data variables are considered for testing. The variables are tested for their declaration and definition and their usage.

What are the different levels of Software Testing?

The process of testing the software is done in parallel to the development of the software at each level of SDLC. Each stage of SDLC is tested, validated and verified.

To identify the errors or issues and to remove the hidden errors, testing is performed at each level. The different levels of software testing are as follows -

Unit Testing

When the program is coded, that particular part of the program for which is coding is done, is tested by the programmer. For unit testing, white-box testing approach is followed as testing is done on the coding. The main aim of the unit testing is to ensure that the program is error free and is being developed in accordance with the requirements of the user.

Integration Testing

Sometimes, even after the unit testing is performed for different units and all the units pass the test, the combination of all the units also need to be testes. As the process of combination of the units may invite some errors. The example of such combination of units might be data updation, passing of the argument.

System Testing

After complete development of the software product, the software as a whole is tested. Testing at this level may be one by one or more of the following tests.

  • Functionality testing – the functions of the software are tested with respect to the requirements of the user.
  • Performance testing – The performance efficiency of the software is tested by the performance testing. The time consumed for performing a specific task and the effectiveness of the software is tested. The testing levels that best suits the performance testing are load testing and stress testing.
  • Security & Portability – The software is made to access by different users and made to work on different platforms and then the software is tested.

Acceptance Testing

Just before the release of the software, the final testing is done to the software, for measuring the effectiveness of the software with respect to the interaction with the users and response. Even after matching all the requirements of the user by the software, if the user is not sati fifed with the appearance of the software, the software may be rejected and hence acceptance testing needs to be performed.

  • Alpha testing -The software is made to appear as it appears to the user and the software is tested by the developers themselves. This testing helps in identifying the reactions and experience of the user when the software is being used and how the software is responding and reacting to the inputs provided by the user.
  • Beta testing -Once Alpha testing is done, there is one more level of testing, which is done by involving the users. The software is handed over to the user and is tested but still under the control of the developers and under the production environment. This testing enables to identify and figure out the problems that are very minute and hence are being missed out at previous levels of testing.

Regression Testing

Regression testing is done at each time the software is being updated with a new code, added with a new feature or function. Regression testing is done to identify if there is any negative impact of the software by the addition of the code.

When is the software testing documents prepared?

Testing documents are prepared at different stages -

Before Testing

After the test cases are prepared, the process of testing is done. The test cases are prepared on the basis of following documents.

  • SRS document - Functional Requirements document
  • Test Policy document – The intensity of testing prior to the release of the product is defined by this document.
  • Test Strategy document – The details about the members of the test team, rights and responsibilities of the test manager and the test engineer is provided by this document.
  • Traceability Matrix document – The document that is linked with the user requirements is known as traceability matrix document. The information about the sources of the requirement is made available to the developer and testers as the document id updated with all the requirements as they come along with their source details.

While Being Tested

The process of testing is done based on the following documents -

  • Test Case document – The complete list of all the tests that are conducted is described in this test case document. The test case document consists of Unit test plan, Integration test plan, System test plan and Acceptance test plan.
  • Test description – The test cases along with the detailed process of executing the tests is provided by the test description document.
  • Test case report – All the test results are documented in this test case report.
  • Test logs - This document contains test logs for every test case report.

After Testing

The documents that are prepared after the process of testing are -

  • Test summary – The tests results, reports and logs are combined together and are analyzed and summarized in test summary. The summary provides the information about the readiness on the launching of the software product.

How software testing is differentiated from Quality Control, Quality Assurance and Audit?

There is a significant difference between software testing and software quality assurance, software auditing and software quality control.

Software quality assurance

The software quality assurance is concerned with the aspect that the measures taken by the process of software development are in accordance with the set standards. The methods adopted for software development are ensured to be the best by this quality assurance.

Software quality control

The software product quality is maintained by the software quality control measure. By improving the software product quality, the goodwill of the organization can be developed. The main aim of the software quality control is to ensure that the best quality product is developed for the customer.

Software audit

The organization methods that are implemented for developing the software are being reviewed by the software audit. The process of the software, the software procedures and all other components of SDLC are reviewed by a team of auditors who are no way related to the development team. Software audit is done to ensure that the process of the software development is in accordance with the set standards, rules and regulations.

All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd Protection Status

Software Engineering Topics