Software testing

beta testingtestingbetasoftware testertestprivate betabeta testsoftware testtestedtesters
Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.wikipedia
675 Related Articles

Test oracle

oracle
Instead, it furnishes a criticism or comparison that compares the state and behavior of the product against test oracles—principles or mechanisms by which someone might recognize a problem.
In computing, software engineering and software testing a test oracle, or just oracle, is a mechanism for determining whether a test has passed or failed.

Debugger

debuggersdebuggingDebugger front-end
Typical techniques for these are either using stubs/drivers or execution from a debugger environment.
A debugger or debugging tool is a computer program that is used to test and debug other programs (the "target" program).

Test case

test casestest-caseTest-case management software
Reviews, walkthroughs, or inspections are referred to as static testing, whereas executing programmed code with a given set of test cases is referred to as dynamic testing.
In software engineering, a test case is a specification of the inputs, execution conditions, testing procedure, and expected results that define a single test to be executed to achieve a particular software testing objective, such as to exercise a particular program path or to verify compliance with a specific requirement.

Exploratory testing

Exploratory test
Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing. Ad hoc testing and exploratory testing are important methodologies for checking software integrity, because they require less preparation time to implement, while the important bugs can be found quickly.
Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution.

Software verification

verificationverification technologiesdynamic verification
Static testing involves verification, whereas dynamic testing also involves validation.

Code review

code reviewspeer code reviewReviews
Reviews, walkthroughs, or inspections are referred to as static testing, whereas executing programmed code with a given set of test cases is referred to as dynamic testing.
The above-mentioned definition of code review delimits it against neighboring but separate software quality assurance techniques: In static code analysis the main checking is performed by an automated program, in self checks only the author checks the code, in testing the execution of the code is an integral part, and pair programming is performed continuously during implementation and not as a separate step.

API testing

APIAPI driven testing
API testing is a type of software testing that involves testing application programming interfaces (APIs) directly and as part of integration testing to determine if they meet expectations for functionality, reliability, performance, and security.

Integration testing

integrationintegration testintegration tests
While white-box testing can be applied at the unit, integration, and system levels of the software testing process, it is usually done at the unit level.
Integration testing (sometimes called integration and testing, abbreviated I&T) is the phase in software testing in which individual software modules are combined and tested as a group.

Fault injection

Software fault injection, in the form of fuzzing, is an example of failure testing.
In software testing, fault injection is a technique for improving the coverage of a test by introducing faults to test code paths, in particular error handling code paths, that might otherwise rarely be followed.

Method stub

stubstubsStub (computer science)
Typical techniques for these are either using stubs/drivers or execution from a debugger environment.
Stubs are therefore most useful in porting, distributed computing as well as general software development and testing.

Fuzzing

fuzz testingfuzzerautomated memory corruption exploitation
Software fault injection, in the form of fuzzing, is an example of failure testing. Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing.
Fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program.

Equivalence partitioning

Equivalence class partitioningequivalence partition
Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing.
Equivalence partitioning or equivalence class partitioning (ECP) is a software testing technique that divides the input data of a software unit into partitions of equivalent data from which test cases can be derived.

Boundary-value analysis

boundary value analysis
Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing.
Boundary value analysis is a software testing technique in which tests are designed to include representatives of boundary values in a range.

Model-based testing

Model-driven testingPath testingtool
Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing.
Model-based testing is an application of model-based design for designing and optionally also executing artifacts to perform software testing or system testing.

Black-box testing

black box testingblack-boxBlack Box
Component interface testing is a variation of black-box testing, with the focus on the data values beyond just the related actions of a subsystem component.
Black-box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings.

Software bug

bugsbugsoftware bugs
Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use.
Software testers are people whose primary task is to find bugs, or write code to support testing.

Cem Kaner

Cem Kaner, who coined the term in 1984, defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project."
He is perhaps best known outside academia as an advocate of software usability and software testing.

Software development

developmentdevelopedapplication development
OAT is a common type of non-functional software testing, used mainly in software development and software maintenance projects.
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components.

Code coverage

coveragebranch coveragecode coverage analysis
Depending on the organization's expectations for software development, unit testing might include static code analysis, data-flow analysis, metrics analysis, peer code reviews, code coverage analysis and other software testing practices.
Test coverage was among the first methods invented for systematic software testing.

Software quality

software reliabilitycode qualityquality
Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.
Although the concepts presented in this section are applicable to both structural and functional software quality, measurement of the latter is essentially performed through testing [see main article: Software testing].

Software testing tactics

Different labels and ways of grouping testing may be testing types, software testing tactics or techniques.
This article discusses a set of tactics useful in software testing.

Software

Computer softwareSoftware & Programmingsoftware technology
Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.
Many bugs are discovered and eliminated (debugged) through software testing.

Test design

designedtest-design
Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution.
In software engineering, test design is the activity of deriving and specifying test cases from test conditions to test software.

Ad hoc testing

ad hoc testad-hoc testing
Ad hoc testing and exploratory testing are important methodologies for checking software integrity, because they require less preparation time to implement, while the important bugs can be found quickly.
Ad hoc testing is a commonly used term for software testing performed without planning and documentation, but can be applied to early scientific experimental studies.

All-pairs testing

Combinatorial Test Design Techniquespair-wise testing
Black-box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, state transition tables, decision table testing, fuzz testing, model-based testing, use case testing, exploratory testing, and specification-based testing.
In computer science, all-pairs testing or pairwise testing is a combinatorial method of software testing that, for each pair of input parameters to a system (typically, a software algorithm), tests all possible discrete combinations of those parameters.