Unit Testing The most ‘micro’ scale of testing that is used for function or code testing. A code walkthrough is to be performed before the unit test. May require developing test driver modules or test harnesses.
Whitebox Testing Based on knowledge of the internal logic of an application’s code. Tests are based on coverage of code statements, branches, paths, conditions. Various types are: Basis Path Testing Loop Testing Input Testing Profiling
Blackbox Testing Done with user perspectives Not based on any knowledge of internal design or code. Tests are based on requirements and functionality The term blackbox refers to ‘Input/Unknown process/Output’ approach to testing (Data or condition driven) Techniques for managing the amount of input data required. Equivalence Partitioning Boundary Analysis Error Guessing
Integration Testing The term refers to orderly progression of testing in which s/w and-or h/w elements are combined and tested until the entire system is tested. This type of testing is especially relevant to client/server or distributed systems. For deciding the order of module integration following approaches may be followed. Top-Level modules Bottom-Level modules Critical modules An so on……..
Incremental Integration Testing The term refers to continuous testing of application as new functionality is added. Requires various aspects of applications functionality to be independent enough to work separately. May require test drivers to be developed.
System Testing It is black box type of testing. It is based on overall requirement specifications; covers all combined parts of a system. It is performed on COTS(Commercial off the shelf) It is based on process description and flow.
Functional Testing This type of testing is geared to functional requirements of an application. It is a black-box type of testing. Should be done by dedicated Testing Team.
End-to-End Testing It is similar to system testing. The ‘macro’ end of the test scale involves testing of a complete application environment in a situation that mimics real-world use. Some of the tests it includes is : Interacting with a database Using network communications Interacting with other hardware, applications, or systems.
Alpha Testing Testing of an application when development is nearing completion; minor design changes may still be made. Typically done by end-users or others, not by programmers. More often this testing is done by the in-house or by an outside testing firm.
Beta Testing Testing of a re-release of a software product. Testing when development and testing are essentially completed Used to find final bugs and problems before final release. Done by end-users or others .
Acceptance Testing It’s the final testing based on specifications of the end-user or customer . Checks that the system delivers what was requested. Done by the customer as he knows what is required from the system.
Regression Testing Retesting after fixes or modifications of the software or its environment . Ensures that system change or new development does not affect unchanged portions of the system. Automated testing tools can be especially useful for this type of testing.
Performance Testing Ideally ‘performance’ testing is defined in requirements documentation or QA or Test Plans. The term performance is often used interchangeably with ’stress’ and ‘load’ testing. It tests the response times and throughput rates under certain workloads and configuration conditions.
Load Testing It is testing an application under heavy loads. Determines at what point the systems response time degrades or fails under a range of loads. Often performed using an automated test tool to simulate large number of users.
Stress Testing The term stress is often used interchangeably with ‘load’ and ‘performance’ testing . Stress testing refers to system functional testing done under heavy load or stresses. The other criteria include Reception of certain actions or input Large complex queries to database system Input of large numerical values, etc
Comparison Testing It is a process of testing that an implementation conforms to the specification and standards. This type of testing includes comparing the software weaknesses and strengths to competing products. Conformance tests should be used by implementers early-on in the development process.
Sanity Testing Sanity Testing is an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or destroying databases, the software may not be in a ’sane’ enough condition to warrant further testing in its current state.
Usability Testing Usability testing is ideally for the ‘user-friendliness’. This kind of testing is clearly subjective and depends on the targeted end-user or the customer. User interviews, surveys, video recording of user sessions, and other techniques can be used.
Install/Uninstall Testing This type of testing is performed to ensure that all install features and options function properly. Tests are based on full, partial, or upgrade install/uninstall processes.
Recovery Testing This type of testing is performed for programs having Recovery objectives Tests are based on how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Exploratory Testing Creative, informal software test that is not based on formal test plans or test cases. Testers may be learning the software as they test it Performed whenever the next test you perform is not obvious, or when you want to go beyond the obvious. Especially useful in Complex Testing situations, when little is known about the product, or as part of preparing a set of scripted tests.
Compatibility Testing Carried out to validate proper inter working of interconnecting network facilities & equipment. Performed prior to cutover to validate functional capabilities and services provided over the interconnections. Testing how well software performs in the following environment: Hardware and Software Operating system Network
Ad-hoc Testing A type of quality control testing that operates on randomization rather than on a fixed technique. An exploratory case expected to run only once unless it happens to uncover a defect. Strengths include: Increase in code coverage Check completeness of Testing Determine priorities for other test activities
Mutation Testing A method whereby errors are purposely inserted into a program under test to verify that the test can detect the error. Also known as error seeding.
Security Testing For Security and maintaining the System & Software Integrity. To test how well the system protects against unauthorized internal or external access or willful damage, etc.