Software testing
Software testing evaluates software by exercising or analyzing it to find defects and assess whether it meets specified requirements.
Test case: A specification of inputs, conditions, and expected outcomes used to check software behavior. Test cases turn requirements into concrete checks with observable outcomes.
Software requirement: A documented capability, constraint, or condition that a software system is expected to satisfy. Requirements provide the stated criteria against which testing assesses conformance.
Unit testing: Testing individual functions, classes, or other small units of software, usually in isolation. It checks local behavior before components are combined.
Software debugging: The process of locating, diagnosing, and correcting the causes of software failures. Testing reveals failures; debugging investigates and repairs their underlying causes.
Test-driven development: A development practice in which programmers write a failing test before implementing the behavior that makes it pass. It makes tests guide design and implementation rather than merely check completed work.
Test oracle: A method or source of information for deciding whether a program's output is correct. An oracle determines whether an observed result counts as a failure.
Software defect: A flaw in software that can cause incorrect behavior or failure to meet a requirement. Finding defects is a central purpose of testing, though tests cannot expose every flaw.
Integration testing: Testing interactions and interfaces between combined software components or systems. It targets failures that arise when individually tested parts work together.
Static program analysis: Automated analysis of program properties without executing the program. It can detect certain defects without the runtime exercise used in dynamic testing.
Continuous integration: A development practice of frequently integrating changes and automatically checking the resulting software. Automated tests provide rapid feedback on each integration.