Testing
Testing refers to a defect detection mechanism and its purpose is to find errors. Testing is a process of executing a program with intent of finding an error.
Verification
It is a process of determining whether or not the product of a given phase of software development fulfill the requirements established during the previous data. Verification is all about; are we building the product right
Verification means software product should meet user expectations. checking that users expectations are satisfied. We can do this with the help of below
- Functional testing
- Intergration and interface testing
- System testing
- Acceptance criteria
- Regression testing
Key Points
A good test case is one that has a high probability of finding a yet undiscovered error.
* A successful test is one that uncovers a yet undiscovered error.
Validation
Validation is a process of evaluating a system or component during or at the end of development process to determine whether it satisfies the specified requirements. Validation is all about; are we building the right product. Validation ensures whether the software product is behaving according to its specification. We can do this with the help of below
- Technical reviews and inspections
- Buddy checks, peer reviews
- Root cause analysis
- Metric definition
- Certification demonstrations
Testing Techniques
Testing is the process of execution of a program with the intent of finding errors.
There are two types of testing techniques which are given below
White Box Testing (Structural Testing) Testing based on the internal specification with knowledge of how system is constructed. In this testing approach, we have to analyse the code and use the knowledge about the program structure to derive test data.
White box testing techniques are as given below
Basic path testing
- Flow graph notation
- Cyclomatic complexity
- Graph matrices
Control structure testing
- Loop testing
Black Box Testing (Functional Testing)
Testing based on the external specification without the knowledge of how system is constructed. In this approach, testers need not to have explicit knowledge of internal workings of the item being tested.
Black box testing techniques are given below
(1) Equivalence partition (ii) Boundary value analysis
(iii) Robustness testing
Here, some instances are given below, where white box testing is better than black box testing
- Logical error
(iii) Topological error
Some instances, where black box testing is better than white box testing,
(1) Functional requirements not met
- Integration errors
- Incorrect parameters passed between functions
Types of Testing / Level of Testing
There are mainly three levels at testing. A software product goes through these levels of testing.
- Unit testing 2. Integration testing 3. System testing
Unit Testing
Unit testing is the process of taking a module (the smallest unit of software design) and running it in isolation from the rest of the software product by using prepared test cases and comparing the actual results with the results predicted by the specification and design of the module.
There are number of reasons in support of unit testing than testing the entire product.
- The size of a single module is small enough that we can locate an error fairly easily.
- Confusing interactions of multiple errors in widely different parts of the software are eliminated.
Unit Testing is white box oriented.
Integration Testing
This integration testing is used to test the integration and consistency of an integrated subsystem. Integration testing is applied incremently as modules are assembled into larger subsystems. It is done using a combination of both black box and white box testing techniques.
Testing Applied to Integrated Part of the System
Testing is applied to subsystems, which are assembled in either
- Top-down Assembles down from the highest level modules replacing the lower
level modules test stubs.
- Bottom-up Assembles from the lowest level modules replacing the higher level
by test drives.
A stub is a simplified program or dummy module designed to provide the response that would be provided by the real sub-element.
System Testing
If focuses on complete integrated system to evaluate compliance with specified requirements. It is basically used for performance, stress and security testing. System testing includes the following testing techniques
Aicceptance Testing
This is testing is performed before to handover the system to the customer Here, the customer may write the test criteria and request the develop to execute them or the developer can write the criteria and take the customer’s approval.
Acceptance testing focuses on complete integrated system to evaluate fitness of use. R is done from the users perspective.
Alpha and Beta Testing
Alpha testing is done at developer’s site by customer. In alpha testing, developers are present and environment is site environments. Beta testing is done at one or more customer’s site by end users/customers in beta testing, we face live situation and here developer may or may not be present. Beta testing usually comes in picture when the number of users are millions. –
Performance Testing
This testing is concerned with assessing the time and memory aspects of the system. Performance testing may be concerned with checking that the operation completes within the fixed deadline and only a fixed size of memory is allocated.
Regression Testing
Regression testing is applied after changes have been made to the system. The operation of the new version is compared with the previous version to see, if there are any unexpected results.