Software Testing

The testing of developed code modules is an essential quality assurance activity at our organization. The testing activity involves unit and integration testing, which is to be conducted by Quality Assurance (QA) departmental personnel or anyone assigned for QA by the Project Manager. Integration testing is necessary for integrating and “building” the program from its various components. Following steps are involved in testing:

  • Developing test cases.
    QA develops one or several units as well as integration test cases to verify the conformance of developed module against the requirement specifications and designs. The test cases must be completed with established input, expected output, entry and exit criteria. Furthermore, test cases must exercise all possible program flows and must account for all error and exception conditions. The test cases must be approved by the QA Manager or by Project Manager in his/her absence.
  • Designing and development of unit.
    Developer constructs a software module according to established designs and specifications. The Developer conducts ad-hoc testing by stepping through every line of code in an interactive debugger, including all exception and error cases during the allocated time. 
  • Code submission.
    Developer submits code to QA for unit testing against the test cases and code review.
  • Conduct unit testing.
    The developed module is tested as per the test cases and actual output is recorded by QA on test cases.
  • Recording of defect/errors.
    The actual output from the tested modules is compared with expected output for each test case and variations are recorded in the form of problem tracking reports in Business Technologies Problem Tracking System by the QA. If the error can only be mitigated with changes to other modules or work products, then a change control request is generated as per Change Control Procedure.
  • Defect/error mitigation.
    Problem tracking reports are assigned to the respective developer of the module for quick correction/removal. 
  • Verify error mitigation.
    Fixes are reviewed and validated by the QA, and recorded on the respective Problem Tracking Reports.
  • Regression Testing.
    On revision and correction of the module, the test cases are re-run and results documented on test cases. On successful regression testing by QA, the developer of the module is intimated through voice or email. Step 5 is repeated for handling any errors identified. 
  • Executing daily build and smoke test.
    Developer integrates final code with the main build as per the Daily Build & Smoke Test instructions.
  • Conduct integration testing.
    At successful smoke and build test, the code is declared to be “complete” and can be checked off the project activity list. The build when completed is tested against one or many integration tests. If the tests fail, the errors are highlighted and steps 6 to 9 are repeated for integration test. The test results are recorded and statistics compiled.
  • Conduct code review.
    At times, for most important pieces of code, a review is conducted in the presence of the developer, team leader, project manager and the QA against the established coding standards. This dry run of the code is mandatory for important/critical code modules to identify and correct errors. The deviations from the standards are highlighted and subsequently corrected by the developer.