Continuous Integration Flashcards

(28 cards)

1
Q

What is Continuous Integration (CI)?

Benefit?

A
  • The practice of quickly integrating newly developed code with the rest of the application code.
  • The process is usually automated to produce a build artifact at the end of the process.
  • This saves time when the application is ready to be released.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the four releases in Traditional Product Delivery?

A
  1. Alpha release
  2. Beta release
  3. Release candidate
  4. Release
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the three environments in Modern Feature Delivery?

A
  1. Development environment
  2. Staging environment
  3. Production environment
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is the Development Environment?

A

It is where the work of a single development team is put together and updated throughout a two-week sprint.

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

What is the Staging Environment?

A
  • Where the work of multiple development teams is put together
  • Updated at the end of every two week sprint

It looks like the production environment

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

What is the Production Environment?

A
  • Where the work of multiple development teams becomes available to customers
  • It is updated when the business considers the time is right.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is Shift Left Testing?

A

A software testing technique that involves performing tests earlier in the development process

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

What is the Test Pyramid?

A

The test pyramid describes the types of tests carried out in development:
1. Unit Tests
2. Service Tests
3. End-to-End Tests.

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

What are Unit Tests in the Test Pyramid?

A
  • Tests run in the development environment to ensure functions work correctly
  • There may be thousands of unit tests run in seconds
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are Service Tests in the Test Pyramid?

A
  • Run in the staging environment to ensure services are working correctly
  • Sometimes hundreds of service tests run in minutes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are End-to-End Tests in the Test Pyramid?

A
  • Run in the staging environment to ensure that the application works properly
  • Tens of end-to-end tests run in several minutes by mimicking human interaction
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is the Test Snow Cone? Is it a good idea?

A
  • An antipattern where there are many more end-to-end tests than service tests than unit tests.
  • This is a bad idea because if a test fails, you have to continually delve deeper to diagnose the issue
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are Brittle Tests?

A

A brittle test is one that fails because another service fails.

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

What are Flaky Tests?

(Why?)

A

A flaky test is one that sometimes fails because another service fails — perhaps due to a time-out or race condition.

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

What is the Normalisation of Deviance? What does it imply for testing?

A
  • The idea that over time, we become so accustomed to things being wrong that we start to accept them as being normal and not a problem
  • We should find and eliminate flaky tests (“it always fails like that” is unacceptable)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are Build Light Indicators?

Pro and Con?

A
  • A visual indicator to inform a developers about the current status of the project.
  • Pro: Benefits accountability as everyone is aware if a build goes red
  • Con adds pressure on developers, potentially preventing them from commiting changes
17
Q

What is Integration Hell?

A

An anti-pattern of software development that brings together the pieces of a software system (far too) late.

18
Q

What is the point of Rule 1: run commit tests locally?

A

The deployment pipeline is a valuable shared resource that one should avoid blocking with unnecessary test failures

19
Q

What is the point of Rule 2: wait for the results?

A

It allows those who make changes to be present and ready to fix any problems immediately.

20
Q

What is the point of Rule 3: fix or revert failures within 10 minutes?

A

To avoid blocking useful progress by others.

21
Q

What is the point of Rule 4: if a teammate breaks the rules, revert their changes?

A

To avoid others blocking useful progress.

22
Q

What is the point of Rule 5: if someone else notices you caused a failure before you notice it’s a build sin?

A

It encourages developers to pay more attention to their changes and its impact on the build.

23
Q

What is the point of Rule 6: once a commit passes move on to your next task

A

Rapid, automated testing frees up time to do new, useful work.

24
Q

What is the point of Rule 7: if any test fails it is the responsibility of the committer?

A

Someone takes responsibility for a failure and its fix.

25
What is the point of Rule 8: it is the responsibility of everyone who may be responsible to agree who will fix a failure?
This ensures that someone (or many people) takes responsibility for fixing failures
26
What is the point of Rule 9: monitor the progress of your change?
It ensures that software can be rejected as soon as it is shown not to be in a releasable state.
27
What is the point of Rule 10: address any pipeline failure immediately?
It ensures the pipeline stays clear for other changes and avoids delays in progress
28
What are Farley's 10 rules for continuous integration?
1. Run commit tests locally 2. Wait for results 3. Fix or revert failures within 10 minutes 4. If a teammate breaks the rules, revert their changes 5. If someone else notices you caused a build failure, before you do, its a build sin 6. Once commit passes, move on to your next task 7. If any test fails, it's the responsibility of the committer 8. It is the responsibility of everyone who may be responsible to agree who will fix a failure 9. Monitor the progress of your change 10. Address any pipeline failure immediately