Testing is the name given to the process of discovering if something works, and if so, if it works well. Testing is used in computer hardware and software development to determine whether objectives are being met. It is done at significant checkpoints in the development process.
Purposes of Testing
- To be able to assess objectively how a system conforms to the agreed requirements and conditions.
- To verify that the system meets the various
- 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 the module level by each programmer
- Finished code is tested at the component level by all programmers involved
- Finished code is tested at system level when all components are integrated
- A product or service may also be tested for usability
Test data is the data used to run the tests on testware, or any other system. It has to be accurate and comprehensive so it can expose any defects.
Test Data Generation
- Random Test Data Generator – this is the simplest kind of data generator, and can be used to test many programs.
- Goal-Oriented Test Data Generator – this produces input for any path specified.
- Pathwise Test Data Generator – this assigns a specific path to follow.
- Intelligent Test Data Generator – this fundamentally depends on the deep examination of the code which needs 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 dashboards
- Form and implement business rules
- Create an automation group for master data planning
Test-Driven Development (TDD) is initiated with the development of test scenarios for each of the various functionalities involved. The test can possibly fail, as the test scenarios are developed even before the development of the system itself. The development team then tweaks and rewrites the code to pass the test.
- Add a test
- Run all tests and see if one scenario fails
- Write some code
- Run tests and rewrite code
Context of Testing
- Valid inputs
- Invalid inputs
- Errors, exceptions, and events
- Boundary conditions
- Anything and everything that could conceivably break
Benefits of TDD
- Much lower debug time
- The code has been proven to meet requirements
- The tests become the program’s safety net
- Almost zero defects by the end of the process
- Shorter development cycles are required
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 is planned to be integrated into an external system.
The test environment supports test execution. Software, hardware, and network features are configured in the test environment. The 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 systems and databases.
- Determine the number of licenses needed by the team.
Test execution is simply executing the test scenarios and then comparing the actual results with the expected results that had been identified prior to running the test scenarios.
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, take note of bugs, and record test status throughout the process.
- Solve delaying issues as they arise.
- Communicate status, fine-tune assignments, and reassess plans and priorities regularly.
- Communicate the test cycle results and status in order to keep everybody on the same page.
Test management is the process of managing the tests. It is performed using tools to manage both automated and manual tests.
Test management tools have various capabilities, among them testware management, test scheduling, logging of results, test tracking, incident management, and test reporting.