1/50
Flashcards for Software Testing and TDD Terminology
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Failure
Deviation of the system from the expected outcome.
Fault / Defect
Defect or weakness in a system component that can cause the system to fail.
Error / Mistake
Human action that produces an incorrect result.
Primary Objectives of Software Testing
To detect defects (bugs), quality assurance, verification and validation, and to reduce risks.
Verification
Ensuring the software built matches the technical specifications.
Validation
Ensuring the software meets user needs.
Avoid the “absence of defects” fallacy
Testing reveals bugs but doesn't guarantee 100% bug-free software.
Exhaustive testing is impossible
Testing every possible input for a function is often impractical.
Start testing early
Find bugs early when impact and repair costs are minimal.
Defects are usually clustered (Defect Clustering)
Bugs tend to cluster in complex or frequently changed modules.
The pesticide paradox
Repeated tests become ineffective at finding new bugs.
Testing is context-dependent
Testing approach depends on the type of application.
Verification
Ensuring software matches technical specifications.
Validation
Ensuring software meets user needs.
Unit testing
Focuses on testing small, individual units to ensure proper functionality.
Integration testing
Tests how integrated units interact with each other.
System testing
Tests the entire system from end to end to ensure all components work together.
Acceptance testing
Testing from the user's perspective to ensure software meets their needs.
Functional Testing
Tests whether the software functions according to the specified requirements.
Non-functional Testing
Tests quality attributes of software like performance, security, and reliability.
Regression Testing
Ensures that changes or fixes don't introduce new bugs or break existing functionality.
Performance Testing
Measures software responsiveness and stability under specific conditions.
Usability Testing
Tests how effectively users can navigate and interact with the software.
Black Box
Focuses on the external specifications of the software without looking at internal structure.
Equivalence Partitioning
Divides input data into classes that are assumed to be treated the same way.
Boundary-Value Analysis
Focuses on boundary values (min, max) where bugs often occur.
Pairwise Testing
Tests combinations of two parameters that frequently cause bugs.
Decision Table Testing
Represents conditions and actions in a table format.
State Transition Testing
Tests transitions between states in a system.
Use Case Testing
Uses user scenarios as the basis for test cases.
White Box
Uses knowledge of the internal code to design tests.
Statement Coverage
Ensures that each statement is executed at least once.
Branch Coverage
Ensures that every branch of a condition (true/false) is executed.
Condition Coverage
Ensures that each condition is evaluated to true and false.
Basis Path Testing
Uses cyclomatic complexity to determine independent paths.
Grey Box
Combines black-box and white-box testing with partial knowledge of internal logic.
Test Plan
Document outlines scope, objectives, schedule, risks, resources, and test strategy.
Test Case Development
Creating detailed test cases including ID, description, inputs, expected results and actual results.
Test Execution
Executing test cases according to the plan and documenting the results.
Defect Identification & Tracking
Process includes identification, repair, validation, and closure of defects.
Automated testing
Using scripts or tools to automatically execute pre-designed tests on software.
Test driven development
Developing software through tests by ensuring code is testable from the start; tests are written before code.
RED
Write a failing test.
GREEN
Write the minimum code to pass the initial test.
REFACTOR
Improve the code structure and efficiency while ensuring tests still pass.
Small, incremental changes
Adding code incrementally through small, testable stages.
Focus on requirements
Tests specify behavior to ensure code meets requirements.
Refactoring confidence
Safe refactoring without breaking functionality using tests.
Continuous Integration (CI)
A practice technique where developers frequently integrate code into a shared repository.
CI tools
Tools such as Jenkins, GitHub Actions, GitLab CI.
Benefits of CI & automated testing
Immediate feedback, improved collaboration, reduced risk of integration issues.