Exercise 7: Testing and Continuous Integration Flashcards
1
Q
Terminology for failure
A
-
Failure: Any deviation of the observed behavior from the specified behavior
- A crash is the informal term for some kind of failures
- Error (Erroneous state): The system is in a state such that further processing by the system can lead to a failure
-
Fault: The mechanical or algorithmic cause of an error
- Informally also called bug
- Validation: Activity of checking for deviations between the observed behavior of a system and its specified behavior
2
Q
How to deal with faults
A
-
Fault avoidance
- Use methodology to reduce complexity
- Use configuration management to prevent inconsistency
- Apply verification to prevent algorithmic faults
- Use reviews to identify faults already in the design
-
Fault detection
- Testing: Provoke failures in a planned way
- Debugging: Find and remove faults
- Monitoring: Deliver information about state and unusual behavior => Used during debugging
- Fault tolerance
- • Exception handling, modular redundancy.
3
Q
Taxonomy for Fault Handling Techniques
A
4
Q
Types of testing
A
-
Integration Testing:
- Groups of subsystems (collection of subsystems) and eventually the entire system are tested
- Carried out by developers
- Goal: Test the interfaces of the subsystems
-
Acceptance Testing:
- Evaluates the system delivered by developers
- Carried out by the client. May involve executing typical transactions on site on a trial basis
- Goal: Demonstrate that the system meets the requirements and is ready to use
-
Unit Testing
- Individual components (class or subsystem) are tested
- Carried out by developers
- Goal: Confirm that the component or subsystem is correct and carries out the intended functionality
-
System Testing
- The entire system is tested
- Carried out by developers
- Goal: Determine if the system meets the requirements (functional and nonfunctional)
5
Q
Acceptance Testing
A
-
Goal: Demonstrate that the system is ready for operational use
- Many tests can be taken from integration and system testing
- Choice of tests is made by the client
- Acceptance test is performed by the client, not by the developer
-
Alpha test:
- Client uses the software at the developer’s environment
- Software used in a controlled setting, with the developer always ready to fix bugs
-
Beta test:
- Conducted at client’s environment (developer is not present)
- Software gets a realistic workout in target environment.
6
Q
Motivation for Continuous Integration and Continuous Delivery
A
- Risk #1: The later acceptance testing occurs in a project, the bigger is the risk that unexpected faults occur
- Risk #2: The higher the complexity of the software system, the more difficult it is to integrate its components
- Continuous Integration addresses these risks by building software systems as early as possible and frequently
- Continuous Delivery addresses these risks by delivering software systems as early as possible and frequently
7
Q
Definition: Continuous Integration
A
- Continuous Integration: A software development technique where members of a team integrate their work frequently. Usually each person integrates at least daily, leading to multiple integrations per day.
- Each integration is verified by an automated build which includes the execution of tests – regression tests – to detect integration errors as quickly as possible.
- Continuous Delivery: topic of next week’s exercise
8
Q
Additional advantages
A
- There is always an executable version of the system
- Developers and managers have a good overview of the project status
- Automatic regression testing
- Definition: Regression testing is a type of software testing that seeks to uncover new software bugs, that might have been introduced to the system after change has been made
9
Q
Continuous Integration Workflow
A
10
Q
A