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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Taxonomy for Fault Handling Techniques

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Continuous Integration Workflow

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly