Testing and Test Data

Purposes of Testing

  • To enable objective assessments regarding the degree of conformance of the system to the stated requirements and specifications.
  • To verify that the system meets the different requirements.
  • To validate that the system is what the user needs.
  • To improve the quality of product.

Example of Testing in Software Development

  • Product objectives are tested by product use representatives
  • Finished code is tested at module level by each programmer
  • Finished code is tested at component level by all programmers involved
  • Finished code is tested at system level when all components are integrated
  • A product or services may also be tested for usability.

Test Data

Test data is the data used to run the tests on testware or any system.  It has to be accurate and comprehensive to expose the defects.  

Test Data Generation

  • Random Test Data Generator – this is the simplest kind of data generator that can be used to test many programs.  
  • Goal-Oriented Test Data Generator – produces input for any path specified.
  • Pathwise Test Data Generator – assigned a specific path to follow.
  • Intelligent Test Data Generator – depends on deep examination of code to be tested.

Test Data Management

Test Data management is very important during the testing phase.

Test Data Management Process

  • Detect recurrent test data elements
  • Age, encrypt and archive test data
  • Rank and distribute test data
  • Produce metrics reports and dashboard
  • Form and implement business rules
  • Create an automation group for master data planning

Test-Driven Development

Test-Driven Development (TDD) is initiated with the development of test scenarios for each of the functionalities.  The test can possibly fail as the test scenarios are developed even before the development of the system.  The development team then develops and rewrites the code to pass the test.  

TDD Process

  • Add a test
  • Run all tests and see if one scenario fails
  • Write some code
  • Run tests and rewrite code
  • Repeat

Context of Testing

  • Valid inputs
  • Invalid inputs
  • Errors, exceptions and events
  • Boundary conditions
  • Everything that might break

Benefits of TDD

  • Much less debug time
  • Code proven to meet requirements
  • Tests become safety net
  • Near zero defects
  • Shorter development cycles

Test Driver

Test drivers are utilised during bottom-up integration testing to replicate the behavior of the modules that are not yet integrated.  

Test drivers are also utilised when the software will be integrated to an external system.

Test Environment

Test environment supports test execution.  Software, hardware and network are configured in the test environment.  Test environment configuration must be the same as the production environment configuration so that any environment or configuration related issues may be exposed.  

Test Environment Checklist

  • Diagnose if the test environment requires archiving.
  • Confirm the network settings.
  • Establish required components like server operating system and databases.
  • Determine the number of licenses needed by the team.

Test Execution

Test execution is the process of running the test scenarios and comparing the expected and actual results.  

Test Execution Method

  • Choose a portion of the test group to be performed for the cycle.
  • Distribute the test cases in each test group to testers for implementation.
  • Perform tests, account bugs and record test status all throughout the process.
  • Solve delaying issues as they come up.
  • Communicate status, fine-tune assignments and reassess plans and priorities regularly.
  • Communicate test cycle results and status.

Test Management

Test management is the process of managing the tests.  It is performed using tools to manage both automated and manual tests.  

Test management tool has various capabilities like testware management, test scheduling, logging of results, test tracking, incident management and test reporting.