Types of Software Testing (2)

This is a continuation from my previous post on types of software testing.

Fault-Injection Testing

Is a test type involving injection of faults (compile or runtime) to test the error handling abilities of the system and its robustness.

Functional Testing

Is a test type used to verify that the software has all the required functionality specified in the requirements. Conformance to functional requirements is tested.

Fuzz Testing

Is a test technique used to discover security issues and errors in software by inputting large amounts of unexpected, invalid, random data. The aim is to make the system crash and reveal bugs. It is often executed in an automated manner.

Gray Box Testing

Is a test type involving use of white and black box techniques. Here, the tester has some knowledge of the internals of the system under test unlike in black box testing where the tester has no knowledge of internals.

Guerilla Testing

Is a type of usability testing involving quick capture of user feedback about specific areas of the product. Users are approached and asked to help quickly test/use the product and give feedback.

Install & Configuration Testing

Used to test the various installation scenarios and configurations.

Integration Testing

Involves integration of the different software modules and testing them as a group.

System Integration Testing

Tests the system's integration point with other systems. It could also mean the testing performed on a system in an environment where all the required hardware and software components are integrated.

Top-down Integration Testing

Testing is carried out from top down/from the main module to the sub. If the bottom level/sub modules are not yet developed, stubs are created to simulate them.

Bottom-up Integration Testing

Testing is carried out from bottom up/from the sub module to the main one. If the top level/main modules are not yet developed, Drivers are created to simulate the top level module.

Bi-directional Testing / Sandwich Testing

Involves simultaneously performing Top down and Bottom up integration tests.

Interface Testing

Testing of interfaces & communication between systems and components.

Internationalization Testing

Testing the product's capabilities to be localized. Testing is done across language settings.

Interoperability Testing

Testing the ability of a system to inter-operate & interact with other system(s).

Load Testing

Is a non-functional test type used to test the product under real life load conditions. It can be used to determine the maximum capacity of the system without suffering performance degradation.

Localization (l10n) Testing

l10n testing is performed to verify a product's localization/translation for a specific locale/language and is executed on the localized version of the product.

Logic Testing

Is a type of testing performed to validate the correctness of the software's processing logic. Also includes testing of predicates.

Manual Testing

Is a process of executing tests manually by a tester as opposed to an automated test which is scripted and executed by a tool/program.

Walk-through Testing

Is a type of testing involving peer reviews of software.

Performance Testing

Is a type of testing used to determine how a system will perform under a specific workload. Metrics such as responsiveness, throughput, etc. are collected and analyzed.

Pilot Testing

Normally involves a group of users trying out/testing the product prior to deploying it for wider user/customer access. E.g. pre-Beta

Protocol Testing

Involves testing of various protocols such as LDAP, XMPP, IMAP, SIP, etc.

Recovery Testing

Involves testing the ability of the system to recover post failure and the time taken to recover. Integrity checks are also run post recovery.

Regression Testing

Is a type of testing to verify existing functionality is not broken due to new enhancements/fixes.

Reliability Testing

Is performed to verify the software's ability to perform consistently in a fault-free manner within a specified environment for a specific time duration.

Requirements Testing

Is an approach to designing tests (functional & non-functional) based on objectives and conditions that are derived from requirements.

Risk-based Testing

Is a type of software testing wherein prioritization of tests is done based on risk assessment.

Sanity Testing

Is a subset of regression tests and designed to run quickly while performing a sanity check of the application to verify any bug fixes, run a set of prioritized regression tests and check any new feature changes at a high level. Any failure would result in the drop/build not proceeding forward to more extensive tests.

Scalability Testing

Is a type of testing done to measure the application's ability to scale up based on varying load profiles.


Related posts