Software Testing

What Is Software Testing ?

  Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that software product is Defect free.

  It involves execution of software components using manual or automated tools to evaluate one or more properties of interest.

  The purpose of software testing is to identify errors, gaps or missing requirements in contrast to actual requirements.

Software Testing Life Cycle Phases

Activities in Requirement Phase Testing
  • Identify types of tests to be performed.
  • Gather details about testing priorities and focus.
  • Prepare Requirement Traceability Matrix (RTM).
  • Identify test environment details where testing is supposed to be carried out.
  • Automation feasibility analysis
Test Planning Activities
  • Preparation of test plan/strategy document for various types of testing
  • Test tool selection
  • Test effort estimation
  • Resource planning and determining roles and responsibilities.
  • Training requirement
Test Case Development Activities
  • Create test cases, automation scripts
  • Review and baseline test cases and scripts
  • Create test data
Test Environment Setup Activities
  • Understand the required architecture, environment set-up and prepare hardware and software requirement list for the Test Environment.
  • Setup test Environment and test data
  • Perform smoke test on the build
Test Execution Activities
  • Execute tests as per plan
  • Document test results, and log defects for failed cases
  • Map defects to test cases in RTM
  • Retest the Defect fixes
  • Track the defects to closure
Test Cycle Closure Activities
  • Evaluate cycle completion criteria based on Time, Test coverage, Cost,Software, Critical Business Objectives, Quality
  • Prepare Test closure report
  • Qualitative and quantitative reporting of quality of the work product to the customer.
  • Test result analysis to find out the defect distribution by type and severity.

Static Testing Technique

Static Testing is a type of software testing in which software application is tested without code execution. Manual or automated reviews of code, requirement documents and document design are done in order to find the errors. The main objective of static testing is to improve the quality of software applications by finding errors in early stages of software development process.

Informal Reviews
Technical Reviews
Static Code Review

Dynamic Testing Techniques

The main objective of this testing is to confirm that the software product works in conformance with the business requirements. This testing is also called an Execution technique or validation testing. Dynamic testing executes the software and validates the output with the expected outcome. Dynamic testing is performed at all levels of testing and it can be either black or white box testing. Under Dynamic Testing, a code is executed. It checks for functional behavior of software system, memory/cpu usage and overall performance of the system. Hence the name "Dynamic".

Unit Testing
Integration Testing
System Testing
White Box Testing
Black Box Testing