Software testing is a critical element of software quality assurance and represents the ultimate review of speciﬁcation, design, and code generation. It is not unusual for a software development organization to pay between 30 and 40 percent of total project effort on testing.The engineer creates a series of test cases that are intended to “defeat” the software that has been built.In fact, testing is the one step in the software process that could be viewed (psychologically, at least) as destructive rather than constructive.
Type of Testing Approach
Verification and Validation approach: Verification is the process of determining whether the output of one phase of software development conforms to that of its previous phase, whereas validation is the process of determining whether a fully developed system conforms to its requirements specification. Thus while verification is concerned with phase containment of errors, the aim of validation is that the final product be error free.
Unit Testing: unit is the smallest part of a software system which is testable it may include code files, classes and methods which can be tested individual for correctness.Unit is a process of validating such small building block of a complex system, much before testing an integrated large module or the system as a whole. Unit testing (or module testing) is the testing of different units (or modules) of a system in isolation.In order to test a single module, a complete environment is needed to provide all that is necessary for execution of the module.
That is, besides the module under test itself, the following steps are needed in order to be able to test the module:
• The procedures belonging to other modules that the module under test calls.
• Nonlocal data structures that the module accesses.
• A procedure to call the functions of the module under test with appropriate parameters.
- Integration is defined as a set of integration among component.
- Testing the interactions between the module and interactions with other system externally is called Integration Testing
- Testing of integrated modules to verify combined functionality after integration
- Integration testing addresses the issues associated with the dual problems of verification and program construction
- Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems
- Types of integration testing are:
- Top-down integration
- Bottom-up integration
- Regression testing
- smoke testing
- The process of evaluating software during the development process or at the end of the development process to determine whether it satisfies specified business requirements
- Validation Testing ensures that the product actually meets the client’s needs. It can also be defined as to demonstrate that the product fulfills its intended use when deployed on appropriate environment
- Validation testing provides final assurance that software meets all informational, functional, behavioral, and performance requirements
- The alpha test is conducted at the developer’s site by a representative group of end users
- The software is used in a natural setting with the developer “looking over the shoulder” of the users and recording errors and usage problems
- Alpha tests are conducted in a controlled environment
- The beta test is conducted at one or more end-user sites
- The beta test is a “live” application of the software in an environment that cannot be controlled by the developer
- In system testing the software and other system elements are tested as a whole
- To test computer software, you spiral out in a clockwise direction along streamlines that increase the scope of testing with each turn
- System testing verifies that all elements mesh properly and that overall system function/performance is achieved
- Recovery testing is a system test that forces the software to fail in a variety of ways and verifies that recovery is properly performed.
- If recovery is automatic (performed by the system itself), re initialization, check pointing mechanisms, data recovery, and restart are evaluated for correctness. If recovery requires human intervention, the mean-time-to-repair (MTTR) is evaluated to determine whether it is within acceptable limits
- Security testing attempts to verify that protection mechanisms built into a system will, in fact, protect it from improper penetration.
- Stress testing executes a system in a manner that demands resources in abnormal quantity, frequency, or volume
- Performance testing is designed to test the run-time performance of software within the context of an integrated system
- Deployment testing, sometimes called configuration testing, exercises the software in each environment in which it is to operate
- Acceptance Testing is a level of the software testing where a system is tested for acceptability
- The purpose of this test is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery
- It is a formal testing with respect to user needs, requirements, and business processes conducted to determine whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system
- Acceptance Testing is performed after System Testing and before making the system available for actual use