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