As you know, there are many different types of software testing techniques, and it is important to understand the variations. In fact, this knowledge is important no matter which level of ISEB or ISTQB certification you are pursuing – ISEB Foundation, ISEB Intermediate, ISEB Practitioner, ISTQB Foundation (CTFL) or ISTQB Advanced. Therefore, for this week’s post I thought it would be helpful to provide the following list of software testing types, in alphabetical order:
Acceptance testing – Validates that a product meets the client’s requirements. This is often done when the product’s development is outsourced to an external company.
Alpha testing – Testing that involves the use of an in-house virtual user environment. It is usually done after development, but still in time to make minor design changes if needed based upon tester feedback.
Beta testing – Tests executed by end-users that are typically the final check prior to releasing the product or application into the market.
Black box testing – Testing that focuses on validating requirements and functionality, as opposed to validating internal system design.
Comparison testing – Compares an updated product’s strengths, weaknesses and attributes with previous versions of the product.
Compatibility testing – Verifies that a specific application or website is compatible with different browsers, operating systems, hardware configurations, etc. It can be done either manually or via an automated functional or regression testing suite.
Conformance testing – Verifies that a product or application conforms to industry standards (such as portability, interoperability & compatibility).
End-to-end testing – Similar to system testing in that it aims to test an application in a real world environment, for example, testing the performance of it interfacing with a database, utilizing network communications, or interacting with other applications or systems.
Functional testing – Validates that an application or website conforms to specs and properly executes all its required functions. This entails a series of tests which perform a feature-by-feature validation of behavior, and can be done using either a manual or automated process.
Integration testing – Verifies the combined functionality of integrated modules after integration. Modules are usually code modules, individual apps, or client and server network apps. Integration testing follows unit testing but precedes system testing.
Install/uninstall testing – Measures the upgrade & install/uninstall processes on different operating systems under different hardware & software configurations.
Load testing – A generic term for performance testing and stress testing. It checks a system’s behavior under various load conditions, for example, to see how much load the system can handle before response times slow down or fail altogether.
Performance testing – Often used interchangeably with ‘stress’ and ‘load’ testing, its purpose is to test a system to make sure it meets performance requirements under peak loads.
Recovery testing – Measures how well a system recovers from a crash, hardware failure, or some other catastrophe.
Regression testing – Similar to a functional test, a regression test uses a consistent, repeatable validation of each new release of a product or application to ensure that subsequent releases are free from prior or new defects. Automation tools are usually used here.
Sanity testing – Determines if a new software version is performing well enough to move it into a more formal level of testing. For example, if the system crashes when it is powered-up, then it is not yet stable enough for further testing.
Security testing – Tests to make sure a system cannot be hacked by making sure adequate controls are in place to prevent unauthorized system access.
Stress testing – Determines the load under which an application or system fails, and how. Often stress testing is performed using the same process as performance testing but employs a very high level of simulated load.
System testing – This is where an entire system is tested to check its compliance with the requirements. This type of software testing falls within the realm of black-box testing and therefore requires no knowledge of the internal design or code logic of the system.
Unit testing – Focuses on individual software components or modules and hence is usually executed by the programmer as it requires detailed knowledge of the internal program design and code.
Usability testing – A user-friendliness check that tests an application flow to determine if a new user can easily understand, navigate, and complete some process or application.
White box testing – Testing based on an analysis of the internal workings and structure of a piece of software. It includes techniques such as branch testing and path testing, and is also known as structural testing or glass box testing.
I hope you have enjoyed this list of ISEB & ISTQB software testing techniques. Whether you want to earn your ISEB Foundation, ISEB Intermediate, ISEB Practitioner, ISTQB Foundation (CTFL) or ISTQB Advanced certification, you would be well served to thoroughly learn and understand all the various types of software testing tactics available.