Chapter 1: Fundamentals of Testing Flashcards
Why is Testing Necessary?
- Human Error (mistake) -> Defect (fault, bug) -> Failure.
- Measures the quality of the software.
- Gives confidence in the quality.
- Reduces the overall level of risk.
- How much testing? It depends on risk, safety & project constraints.
Testing Objectives
- Finding Defects.
- Preventing defects.
- Providing information for decision-making.
- Gaining confidence about the level of quality.
7 Testing Principles (TEED PTA)
(TEED PTA)
- Testing shows the presence of defects, not the absence of defects.
- Exhaustive testing is impossible.
- Early testing.
- Defect clustering.
- Pesticide paradox (Tests wear out)
- Testing is context-dependent.
- Absence-of-error fallacy.
The Psychology of Testing
- The mindset of Developer & Tester.
- Communication in a constructive manner.
- Test Independence.
Why we make mistakes
(TTCL)
- time pressure
- tired
- complexity of work products or processes
- lack adequate training
Test Activities and Tasks
(PMA I ET)
- Test planning
- Test Monitoring and control
- Test analysis and design
- Test implementation and execution – Creation of test suites (logical collection of cases)
- Evaluating exit criteria and reporting
- Test closure activities
Best practices while reporting defects
- Communicate findings in a neutral, fact focused way. Don’t criticize.
- Be pessimistic and start with collaborations rather than battles
Failures are caused by ___
- Defects
- Environment conditions
- Malicious damage
How much testing is enough depends on ___
- Technical and business risks
- Project constraints (time & budget)
Why we do testing
- Product satisfy requirements
- Fit for purpose
- Detect defects
What is Testing?
Software testing is a set of activities to discover defects and evaluate the quality of software artifacts.
These artifacts, when being tested, are known as test objects.
Testing vs QA
Testing is a form of quality control (QC)
QC is a product-oriented, corrective approach that focuses on those activities supporting the achievement of levels of quality.
QA is a process-oriented, preventive approach that focuses on the implementation and improvement of processes.
Failures
Errors and defects are not the only cause of failures.
Failures can also be caused by environmental conditions
Root cause
A root cause is a fundamental reason for the occurrence of a problem
Testing shows the presence, not the absence of defects.
Testing can show that defects are present in the test object, but cannot prove that there are no defects.
Testing reduces the probability of defects remaining undiscovered in the test object, but even if no defects are found, testing cannot prove test object correctness.
Defects cluster together
A small number of system components usually contain most of the defects discovered or are responsible for most of the operational failures.
This phenomenon is an illustration of the Pareto principle. Predicted defect clusters, and actual defect clusters observed during testing or in operation, are an important input for risk-based testing
Tests wear out
If the same tests are repeated many times, they become increasingly ineffective in detecting new defects.
Absence-of-defects fallacy
It is a fallacy (i.e., a misconception) to expect that software verification will ensure the success of a system.
Test process
There are common sets of test activities without which testing is less likely to achieve test objectives.
These sets of test activities form a test process.
Traceability between the Test Basis and Test
- Traceability of test cases to requirements can verify that the requirements are covered by test cases.
- Traceability of test results to riskscan be used to evaluate the level of residual risk in a test object
Roles in Testing
a test management role and
a testing role
Test management role
A test management role takes overall responsibility for the test process, test team and leadership of the test activities.
The test management role is mainly focused on the activities of test planning, test monitoring and control and test completion.
Testing role
The testing role takes overall responsibility for the engineering (technical) aspect of testing.
The testing role is mainly focused on the activities of test analysis, test design, test implementation and test execution.
Generic Skills Required for Testing
While being generic, the following skills are particularly relevant for testers:
- Testing knowledge (to increase effectiveness of testing, e.g., by using test techniques)
- Thoroughness, carefulness, curiosity, attention to details, being methodical (to identify defects, especially the ones that are difficult to find)
- Good communication skills, active listening, being a team player (to interact effectively with all stakeholders, to convey information to others, to be understood, and to report and discuss defects)
- Analytical thinking, critical thinking, creativity (to increase effectiveness of testing)
- Technical knowledge (to increase efficiency of testing, e.g., by using appropriate test tools)
- Domain knowledge (to be able to understand and to communicate with end users/business representatives)
Confirmation bias
Confirmation bias can make it difficult to accept information that
disagrees with currently held beliefs.
Whole Team Approach
In the whole-team approach any team member with the necessary knowledge and skills can perform any task, and everyone is responsible for quality.
Independence of Testing
The main benefit of independence of testing is that independent testers are likely to recognize different kinds of failures and defects compared to developers because of their different backgrounds, technical perspectives, and biases.