In a software project, the requirements are gathered from clients and they are made into the finished product by developers and testers. Thus, the development of software takes place through Software Development Life Cycle (SDLC).


The role of a developer/programmer is to build software within deadlines. Thus, unit testing is conducted by the developers after each sprint.



The role of tester/QA is to identify bugs/defects in the product through various testing and enhance the quality of the build made by the developer.



 In V-model there are two main phases namely,

  • Verification phase
  • Validation phase

Thus, the process in the verification phase is

  • Requirement design
  • System design
  • Architecture design
  • Module design
  • Coding

The process in the validation phase is

  • Acceptance test
  • System test
  • Integration test
  • Unit test
  • Coding

Types of testing

Testing can be mainly classified into two types namely,

  • Static testing
  • Dynamic testing

Static testing

Static testing includes checking the requirements with documentation and finding deviations from the actual requirement.

Dynamic testing

Dynamic testing can be categorized into the following types,

  • Unit testing
  • Integration testing
  • System testing


A review can be broadly classified into the following types,

  • Requirement review
  • Design review
  • Code review
  • Test plan review
  • Test case review

Software Development Life Cycle(SDLC)

The phases in the software development life cycle are:

  • Boundary value analysis(BVA)
  • Equivalence class partitioning
  • Decision table based testing
  • State transition
  • Error Guessing
  • Decision table

Waterfall model


 The phases in the life cycle of the waterfall model are:

  • Requirement analysis
  • Design
  • Coding
  • Integration
  • Testing
  • Deployment

State transition


Other testing

Some of the other testing methods used in software development are,

  • Sanity testing
  • Smoke testing
  • Retesting
  • Regression testing
  • Adhoc testing
  • Sanity testing is used to find minor bugs in the build after the complete development of software is done by the developer. It is helpful to confirm that the bugs have been fixed and no further issues will arise.
  • Smoke testing is used to check the most important functions of the software using non-exhaustive testing by test cases. Build verification is done in this testing. It helps to decide whether the build is stable enough to proceed further testings.
  • Re-testing is used to test the software again that fails in the final test case. Thus the software quality is improved by testing functionalities. Thus the defects are repaired using re-testing
  • Regression Testing is used to check whether the code is changed unfavorably which affects major functionality of the software. Defect verification is not part of this testing.  
  • Adhoc testing is used to test the software randomly that aims to break the software and identify the bugs in it. This testing is used to conduct unplanned activities. It does not follow any test design techniques.

Defect Reporting Tools

Some of the defect reporting tools used in software development are

  • Clear quest
  • DevTrack
  • Jira
  • Quality center
  • Bug Zilla