Some of the fundamentals of software testing include
- Software Test Requirements
- Software Test Design
- Software Test Planning
Let us deal each of the above one by one.
Software Test Requirements
Identifying and defining software requirements in general is a difficult job. Requirements Management is seen as the key to success in software development.
A formal approach to specifying test requirements goes a long way toward satisfying the two major complaints cited in the survey above. It formalizes the translation of software requirements to test requirements and makes the process repeatable (Capability Maturity Model level 2).
Even with the availability of the ANSI/IEEE standards, Gerrard holds that the majority of requirements documents are "often badly organized, incomplete, inaccurate and inconsistent." He also believes that the majority of documented requirements are "untestable" as written because they are presented in a form that is difficult for "testers" to understand and test against their expectations. It is up to the test engineers themselves to translate those requirements into testable ones.
There are no standards documents to guide the specification of requirements for software testing (and/or to guide the translation of existing software requirements specifications). Refining existing software requirements into software testing requirements is a very difficult task. The information a test engineer must have in order to properly test a software component is highly detailed and very specific. Granted, there are different levels and approaches to testing and test data specification (Black Box, Gray Box, and White Box views of the software) and the nature of the test requirements depends on the point of view of the test engineer. The stance of the test engineer is also dependent on the level of depth and details the software requirements specification contains. Thus, it is possible to specify test requirements from both Black Box and White Box perspectives.
Before starting test design, we must identify our test objectives, focuses, and test items. The major purpose is to help us understand what are the targets of software testing.
This step can be done based on:
- Requirements specifications
- Inputs from developers
- Feedback from customers Benefits are:
- Identify and rank the major focus of software testing
- Check the requirements to see if they are correct, completed, and testable
- Enhance and update system requirements to make sure they are testable
- Support the decision on selecting or defining test strategy
Software Test Design
Software test design is an important task for software test engineers. A good test engineer always know how to come out quality test cases and perform effective tests to uncover as many as bugs in a very tight schedule.
What do you need to come out an effective test set ? -
- Choose a good test model and an effective testing method
- Apply a well-defined test criteria
- Generate a cost-effective test set based on the selected test criteria
- Write a good test case specification document What is a good test case?
It must have a high probability to discover a software error -
- It is designed to aim at a specific test requirement
- It is generated by following an effective test method
- It must be well documented and easily tracked
- It is easy to be performed and simple to spot the expected results
- It avoids the redundancy of test cases
Software Test Planing
This includes the following activities.
- Testing activities and schedule
- Testing tasks and assignments
- Selected test strategy and test models
- Test methods and criteria
- Required test tools and environment
- Problem tracking and reporting
- Test cost estimation