Week 1 : Fundamentals of Testing Flashcards
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
Dynamic testing
Exercising a program with test data
Error
A defect or flaw which can be observed
Exhaustive testing
A test approach in which all possible data combinations are used
Failure
When a component or system does not perform a required function
Fuzz testing
A software testing technique. Inputting mass amounts of random data (fuzz) to locate software vulnerabilities.
Good test
A test that locates a defect
Pareto Principle
80% of problems stem from 20% of modules
Quality assurance
Making sure processes are undertaken correctly
Regression testing
Rerunning tests after software changes to ensure no errors have occured
Root cause
Why the defect happened
Sprint
With agile development, the goal is to have frequent deliveries of software that will build on previously made availability
Static testing
Testing a product without the code being executed. Used for testing scenarios where the code is not executed.
Test analysis
Identifies what to test
Test basis
The knowledge used as a foundation for testing
Test case
A set of inputs/actions/etc. developed based on test conditions
Test conditions
An aspect of the test that is relevant in order to achieve specific test results
Test completion
How we know testing is complete
Test control
Taking action to meet the objectives of the test plan
Test design
Explains “ how to test”
Test environment
The setup of software and hardware used in testing
Test execution
The visible part of testing. Running 1+ tests.
Test implementation
The link between test design and execution. Asks “do we have everything we need to run this test?”
Test monitoring
Observing whether the expected outcome is achieved