10. Continuous Integration Flashcards

1
Q

problems/ risks in integration

A
  1. spend more time integrating than creating new features
  2. problems occur as software evolves due to concurrent development
  3. problems worsen when develop tries to:
    - integrate large change to code base
    - infrequent new feature integration

However, continuous integration is not without its risks and challenges:
 Continuous integration tools have to be introduced and maintained

 The continuous integration process must be defined and established

 Test automation requires additional resources and can be complex to establish

 Thorough test coverage is essential to achieve automated testing advantages

 Teams sometimes over-rely on unit tests and perform too little system and acceptance testing

Continuous integration requires the use of tools, including tools for testing, tools for automating the
build process, and tools for version control.

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

continuous-integration practices

A
  1. change management
    - maintain single source repository
    - everyone commit to main line everyday
    - every commit builds mainline
    - everyone can see what is happening
  2. quality assurance
    - automate the build
    - make build self testing
    - test in a clone of the repository
    - keep the build fast
  3. deployment
    - make it easy for anyone to get latest executable
    - automate deployment
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

late integration

A
  1. working on separate copy of source code for implementation
  2. considerable amount of conflict for merging
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

what is continuous integration

A
  1. split work into small changes
  2. integrate frequently
  3. limit effect of exponential rate of divergence of the trunk
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

feature branching option

A
  1. implement new feature on trunk with frequent small commit
  2. implement new feature on branch and merge frequently
  3. implement feature as a prototype branch, then re-implement feature on the trunk in small changes
  4. implement features as permanent branch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

maintain multiple continuous integration processes

A
  1. main line trunk development
  2. forked development for specified customer/purpose
  3. latest stable release only receive defect fixes
  4. significant feature branch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

monitoring and maintaining software quality

A
  1. detecting broken builds
    - system should be compiled from source in clone repository
    - automated regression test executed on complete system
    - static analysis checks performed to compare with benchmarks
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

preventing broken public builds (trunk)

A

flow…

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

preventing broken public builds (branches)

A

flow…

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

staging environment

A
  1. environment configured to replicate conditions that software will be used in
  2. configured with current hardware software dependencies
  3. changes need to be checked before release
  4. more than 1 staging environment may be needed.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

limitation of staging environment

A
  1. system distributed on too many computing nodes to test realistic scenarios
  2. system has too many simultaneous users
  3. too many diverse user types
  4. only one platform for software is available
  5. software dependencies cannot be accessed outside of production
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

monitoring and visibility

A

push notifications and broadcast mechanism

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

monitoring metrics

A
  1. unsuccessful builds
  2. average unsuccessful test
  3. time to build
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

why are fast build essential

A
  1. delays in completing also delays discovery of problems
  2. developers deterred from making frequent commits as waiting for build to complete reduce productivity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

continuous deployment

A
  1. automate deploying of software
  2. advantages:
    - ensures that deployment process is used regularly
    - different features can be deployed to differentiate users
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Q
What is Continuous Integration?

A

Delivery of a product increment requires reliable, working, integrated software at the end of every sprint. Continuous integration addresses this challenge by merging all changes made to the software and integrating all changed components regularly, at least once a day. Configuration management, compilation, software build, deployment, and testing are wrapped into a single, automated, repeatable process. Since developers integrate their work constantly, build constantly, and test constantly, defects in code are detected more quickly.

17
Q

What does the continuous integration process consists of?

A

 Static code analysis: executing static code analysis and reporting results

 Compile: compiling and linking the code, generating the executable files

 Unit test: executing the unit tests, checking code coverage and reporting test results

 Deploy: installing the build into a test environment

 Integration test: executing the integration tests and reporting results

 Report (dashboard): posting the status of all these activities to a publicly visible location or e-
mailing status to the team

18
Q

How does continuous integration allows Agile testers to run automated tests regularly?

A

An automated build and test process takes place on a daily basis and detects integration errors early and quickly.

Continuous integration allows Agile testers to run automated tests regularly, in some cases as part of the continuous integration process itself, and send quick feedback to the team on the quality of the code. These test results are visible to all team members, especially when automated reports are integrated into the process.

Automated regression testing can be continuous throughout the iteration.

Good automated regression tests cover as much functionality as possible, including user stories delivered in the previous iterations.

Good coverage in the automated regression tests helps support building (and testing) large integrated systems. When the regression testing is automated, the Agile testers are freed to concentrate their manual testing on new features, implemented changes, and confirmation testing of defect fixes.

19
Q

In addition to automated tests, organizations using continuous integration typically use?

A

In addition to automated tests, organizations using continuous integration typically use build tools to implement continuous quality control.

In addition to running unit and integration tests, such tools can run additional static and dynamic tests, measure and profile performance, extract and format documentation from the source code, and facilitate manual quality assurance processes.

This continuous application of quality control aims to improve the quality of the product as well as reduce the time taken to deliver it by replacing the traditional practice of applying quality control after completing all development.

20
Q

What can build tools be used for?

A

uild tools can be linked to automatic deployment tools, which can fetch the appropriate build from the continuous integration or build server and deploy it into one or more development, test, staging, or even production environments.

This reduces the errors and delays associated with relying on specialized staff or programmers to install releases in these environments.

21
Q

Continuous integration can provide the following benefits:

A

Continuous integration can provide the following benefits:
 Allows earlier detection and easier root cause analysis of integration problems and conflicting
changes

 Gives the development team regular feedback on whether the code is working

 Keeps the version of the software being tested within a day of the version being developed

 Reduces regression risk associated with developer code refactoring due to rapid re-testing of
the code base after each small set of changes

 Provides confidence that each day’s development work is based on a solid foundation

 Makes progress toward the completion of the product increment visible, encouraging
developers and testers

 Eliminates the schedule risks associated with big-bang integration

 Provides constant availability of executable software throughout the sprint for testing,
demonstration, or education purposes

 Reduces repetitive manual testing activities

 Provides quick feedback on decisions made to
improve quality and tests