Sunday, November 6, 2011

Software Testing

Software Testing is a process of identifying defects in a software; verifying the functionality of the application against requirement specification.

Types of Software testing:

  1. White Box Testing also known as
    • Unit testing
    • Structural testing
    • Glass Box testing
    • Open box testing
    • Transparent testing

    Developer writes the program and he himself tests every line of the code i.e. each and every unit of the program is tested in White Box Testing.

  2. Black Box Testing also known as
    • Functional Testing
    • Product Testing
    • Behavioral Testing
    • Requirements Testing
    • Closed box Testing
    • Opaque Testing

    Tester opens the application and checks whether the application is working according to the requirement specification. If any bugs are found prepare a report and send it to the developer. Here the tester does not open the source code and check for bugs.

  3. Grey Box Testing – is a combination of White Box Testing and Black Box Testing. In Grey Box Testing the tester has some knowledge about the internal working of the software. Here the tester applies limited number of tests on the internal workings of the software and in the remaining part of Grey Box testing, one takes a black box approach (applying inputs and observing outputs).

V-MODEL

V model is an extension of Waterfall model. Instead of moving down in a linear way, it follows both a 'top-down' as well as a 'bottom-up' approach.

As the development team goes about its requirement analysis activities, the testing team simultaneously begins with its acceptance testing activities. By following this approach, time delays are minimized and optimum utilization of resources is assured.

Once the CRS is ready the customer sends a copy to both DT and Testing Team.

  1. Development Team goes ahead with preparing SRS for the CRS. Testing Team begins with Acceptance testing i.e. Reviews the CRS which means Testing Team checks for contradictory requirements, missing requirements and wrong requirements. Once the mistakes are identified the Testing Team discusses them with Development Team. Together they go the customer, here the customer resolves the issues and gives a new CRS. Testing Team goes ahead with writing Test Plan and Test Case for this CRS. Development Team at the meantime updates the prepared SRS or if the SRS is not already created then they begin the preparing of the SRS wrt the new CRS.
  2. Once the SRS is ready the Development Team sends the copy to Testing Team and begin with HLD. Testing Team now starts the System testing i.e. Reviews the SRS against CRS ( checks whether every CRS is converted to SRS; validates the converted SRS and checks for missing SRS). Once the mistakes are identified the Testing Team discusses them with Development Team. Development Team rectifies them and sends the new SRS to Testing Team. Testing Team now writes Test Plan and Test Case for them. Development Team meanwhile updates the HLD as per the new SRS.
  3. Once the HLD is ready, Development Team sends it to Testing Team and begins with LLD. Testing Team now starts the Integration testing i.e. Reviews the HLD, writes Test Plan and Test Case. If the Test Engineer is new to the domain the Developer explains the design to Test Engineer. Test Engineer now understands the design and comes up with his own strategies.
  4. Once the LLD is ready, Development Team sends it to Testing Team and begins with Coding. Testing Team now starts the Functional testing Reviews the LLD, writes Test Plan and Test Case.
  5. Once the developer starts coding he also tests them. Testing every line of code is called Unit testing. This is done by the Development Team itself, as they have written the code it’s easier for them to fix it.
  6. Once the Development Team finishes with Unit testing they send the product to Testing Team for Functional testing. Here every feature/component is tested thoroughly wrt the Test Case written earlier by Testing Team. When Testing Team is doing Functional testing and comes across bugs they send them to Development Team. Development Team fixes the bug and sends the product to Testing Team for Integration testing.
  7. Now Integration testing is done. If Testing Team comes across bugs they send them to Development Team. Development Team fixes them and sends the product for System Testing.
  8. Once Integration testing is complete, Acceptance testing is done.
  9. Once Acceptance testing is complete the product is sent to the customer.

Depending on the bug you repeat the testing process. In some projects Functional testing, Integration testing, System Testing should be done and is some just Integration testing, System Testing or just System Testing.