Foundation Level Flashcards
Testing vs Debugging
Executing tests can show failures that are caused by defects in the software.
Debugging is the development activity that finds, analyzes, and fixes such defects
Test Activities and Tasks
- Test planning
- Test monitoring and control
- Test analysis
- Test design
- Test implementation
- Test execution
- Test completion
Confirmation Testing
After a defect is fixed, the software may be tested with all test cases that failed due to the defect, which should be re-executed on the new software version. The software may also be tested with new tests to cover changes needed to fix the defect. At the very least, the steps to reproduce the failure(s) caused by the defect must be re-executed on the new software version. The purpose of a confirmation test is to confirm whether the original defect has been successfully fixed.
Regression testing
Looking for unintended changes in behavior resulting from software or environment changes
It is possible that a change made in one part of the code, whether a fix or another type of change, may accidentally affect the behavior of other parts of the code, whether within the same component, in other components of the same system, or even in other systems. Changes may include changes to the environment, such as a new version of an operating system or database management system. Such unintended side-effects are called regressions. Regression testing involves running tests to detect such unintended side-effects.
Test type
a group of test activities aimed at testing specific characteristics of a software system, or a part of a system, based on specific test objectives
Functional quality characteristics
completeness, correctness, and appropriateness
Non-functional quality characteristics
- reliability
- performance
- efficiency
- security
- compatibility
- usability
Functional coverage
the extent to which some functionality has been exercised by tests
Non-functional testing
evaluates characteristics of systems and software such as usability, performance efficiency or security
Non-functional testing
evaluates characteristics of systems and software such as usability, performance efficiency or security
Non-functional testing: details
- can and often should be performed at all test levels, and done as early as possible
- boundary value analysis can be used to define the stress conditions for performance tests.
Non-functional coverage
Non- functional coverage is the extent to which some type of non-functional element has been exercised by tests
expressed as a percentage of the type(s) of element being covered
White-box Testing
derives tests based on the system’s internal structure or implementation (code, architecture, work flows, and/or data flows within the system)
Structural coverage
Structural coverage is the extent to which some type of structural element has been exercised by tests, and is expressed as a percentage of the type of element being covered.
Change-related Testing
- Confirmation testing
2. Regression testing
Test Levels
Def: groups of test activities that are organized and managed together
Misc
1. For every test level, a suitable test environment is required
Test Levels Attributes
- Specific objectives
- Test basis, referenced to derive test cases
- Test object (i.e., what is being tested)
- Typical defects and failures
- Specific approaches and responsibilities
Test Levels List
- Component testing
- Integration testing
- System testing
- Acceptance testing
Black Box Techniques (List)
- equivalence partitioning to derive test cases from given requirements
- boundary value analysis to derive test cases from given requirements
- decision table testing to derive test cases from given requirements
- state transition testing to derive test cases from given requirements
White-box Test Techniques (List)
- Statement coverage
2. Decision coverage
Experience-based Test Techniques (List)
- Error guessing
- Exploratory testing
- Checklist-based testing
The purpose of a test technique
help in identifying test conditions, test cases, and test data.
The choice of which test techniques to use depends on
- Component or system complexity
- Regulatory standards
- Customer or contractual requirements
- Risk levels and types
- Available documentation
- Tester knowledge and skills
- Available tools
- Time and budget
- Software development lifecycle model
- The types of defects expected in the component or system
Seven Testing Principles
- Testing shows the presence of defects, not their absence
- Exhaustive testing is impossible
- Early testing saves time and money
- Defects cluster together
- Beware of the pesticide paradox
- Testing is context dependent
- Absence-of-errors is a fallacy
Root cause of a defect
The earliest actions or conditions that contributed to creating the defects
Software testing
is a way to assess the quality of the software and to reduce the risk of software failure in operation.
Dynamic testing
testing does involve the execution of the component or system being tested
Static testing
Does not involve the execution of the component or system being tested
Misperceptions about software testing
- it only consists of running tests, i.e., executing the software and checking the results
- it focuses entirely on verification of requirements, user stories, or other specifications => it also includes validation: i.e. checking whether the system will meet user and other stakeholder needs in its operational environment(s)
Quality management
- includes all activities that direct and control an organization with regard to quality.
- includes both quality assurance and quality control
Quality assurance
- typically focused on adherence to proper processes, in order to provide confidence that the appropriate levels of quality will be achieved
- quality assurance supports proper testing
Quality control
involves various activities, including test activities, that support the achievement of appropriate levels of quality.
Test planning
involves activities that define the objectives of testing and the approach for meeting test objectives within constraints imposed by the context (e.g., specifying suitable test techniques and tasks, and formulating a test schedule for meeting a deadline).
Test monitoring and control
- on-going comparison of actual progress against planned progress using any test monitoring metrics defined in the test plan
- supported by the evaluation of exit criteria