INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute to the deliver of higher quality software products more satisfied users, and lower maintenance costs, more accurate and reliable results. The goals of testing is to uncover as may errors as possible. The software testing is important activity to improve to quality of the software.
Types of Testing Functionality testing: to verify the proper functionality of the software. Forced error testing: to break and fix the software during testing. compatibility testing: to ensure that software is compatible with various hardware platforms, operating systems and software packages. Performance testing: to saw how well software performs in terms of the speed of computations to the end-users.
Scalability testing: to ensure that the software will function well as the number of users and size of databases increase. Stress testing: to see how the system performs under extreme conditions, such as a very large number of simultaneous users. Usability testing: to ensure that the software is easy to use. Application testing: to ensure security of data.
Taxonomy of software testing There are few general approached for the software testing black box testing white box testing Unit testing Top-down testing Bottom-up testing Acceptance testing debugging
Black box testing The black box testing is used to demonstrate that the software functions are operational. Black box, which is also called functional or specification technique. The major objectives of the black box testing is Incorrect or missing functions. Interface errors Errors in data structure Performance errors Initialization and termination errors
White box testing White box testing is also called as clear or glass box testing. In white box testing the procedural details are closely examined. The major objectives of the white box testing is Control flow graph. Cyclomatic complexity and graph matrix. Executing all the loops within their boundaries. Exercising internal data structures to ensure their validity.
Unit testing Unit testing comprises the set of test performed by an individual programmer prior to integration illustrative into a larger system. This situation is illustrated as follows. Coding & unit Testing integration Debugging testing
System testing System testing concentrated on testing the complete systems with varieties of techniques and methods. System testing involves two kinds of activities Integration testing Acceptance testing Integration testing: A group of dependent componets are tested together to ensure their quality of their integration unit.
Acceptance test involves planning and execution of functional tests, performance tests and stress tests to verify that the implemented system satisfies its requirements. Acceptance testes are typically performed by quality assurance and/or customer (end users)depending upon local circumstance, the development group may or may not be involved in acceptance testing.
Top-down Testing Top down testing is an incremental approach in which modules are intergraded by moving down through the control structure. The main control module is used as a test driver, and the stubs are substituted for all modules directly subordinate to the main control module. Subordinate stubs are replaced one at a time with actual modules using either depth-first or breadth first method.
Tests are conducted as each module is integrated. On completion of each set of tests, another stub is replaced with the real module. Regression testing is conducted to prevent the introduction of new errors.
Bottom-up Testing In bottom-up testing is modules at the lowest levels are integrated at a first, and then integration is down by moving upward through the control structure. Low-level modules are combined into clusters that performs a specific software sub-function. A driver program is written to coordinate test case input and output. The whole cluster is tested. Drivers are removed and clusters are combined moving upward in the program structure.
Acceptance Testing The acceptance testing is a kind of testing conducted to ensure that the software works correcting in the user work environment. Alpha testing: is a testing in which the version of complete software is tested by the customer under the supervision of developer. Beta testing: is in which the version of software is tested y the customer without the developer being present.
Debuging Bug is a name given to errors that are found in a software product and debugging is a methodical process of finding and reducing or eliminating the number of bugs or defects in a computer program. Verify the corrections. Prove or disprove each hypothesis. List possible causes for the observed failure. Use the availabe information to eliminate hypothesis.