Week 1 : Fundamentals of Testing Flashcards
(118 cards)
What is testing?
Identifying the correctness/completeness/quality of software.
What is debugging?
When a developer finds, analyzes, and removes the cause of software failures.
Why do we need testing?
To identify errors, defects, and vulnerabilities that may contradict program requirements and/or cause damage (physical, emotional, financial, reputational, etc.)
Seven Testing Principles
1) Testing shows the presence, NOT ABSENCE, of defects.
2) Exhaustive testing is impossible.
3) Testing activities should start as early as possible.
4) Defect clustering
5) The Pesticide Paradox
6) Testing is context dependent.
7) No failures =/= a useful system.
Principle #1: Testing shows the presence, NOT ABSENCE, of defects.
Testing can show defects are present, but can never guarantee no failures.
Principle #2: Exhaustive testing is impossible.
Exhaustive testing is impossible because you can NEVER guarantee there are ZERO failures/defects.
Principle #3: Testing activities should start as early as possible.
The earlier errors are discovered, the lower the cost of fixing them.
Principle #4: Defect clustering
80% of bugs are caused by 20% of modules.
Principle #5: The Pesticide Paradox
Repeating the same test cases is unlikely to find new bugs.
Principle #6: Testing is context dependent.
How you test depends on what you’re testing. More risk = more testing.
Principle #7: No failures =/= a useful system.
A product being free of errors does not mean it works effectively.
7 Steps: The Testing Process
1) test planning
2) test monitoring and control
3) test analysis
4) test design
5) test implementation
6) test execution
7) test completion
Objectives of Testing
1) evaluate work products
2) verify
3) validate
4) build confidence
5) find failures and defects
6) fix and prevent defects
7) examine quality
8) reduce level of risk
9) comply with contractual, legal, or regulatory requirements
Component testing
Focuses on how the software functions
Acceptance testing
Ensures software is compliant with regulations
Regression testing
Checks stability of software
Software Development Cycle
1) Planning
2) Analyzing
3) Design
4) Implementation
5) Testing & Integration
6) Maintenance
Features of quality software
1) Functionality
2) Reliability
3) Usability
4) Efficiency
5) Maintainability
6) Portability
7) Security
Manual testing
When software is tested by humans
Automated Testing
When software is tested using scripts and automation tools
False negative
When the application fails, but not identified as such b/c the test shows a correct result.
False positive
When there is an apparent “failure” that is actually the software functioning properly.
Completion criteria
How we know testing is completed
Defect
A recorded error