Continuous Integration Flashcards
What is Continuous Integration (CI)?
Continuous Integration (CI) is the practice of quickly integrating newly developed code with the rest of the application code. This saves time when the application is ready to be released. The process is usually automated and produces a build artifact at the end of the process.
What are the four releases in Traditional Product Delivery?
- Alpha release
- Beta release
- Release candidate
- Release
What are the three environments in Modern Feature Delivery?
- Development environment
- Staging environment
- Production environment
What is the Development Environment?
It is where the work of a single development team is put together and updated throughout a two-week sprint.
What is the Staging Environment?
It looks like the production environment
What is the Production Environment?
It is where the work of multiple development teams becomes available to customers and is updated when the business considers the time is right.
What is Shift Left Testing?
A software testing technique that involves performing tests earlier in the development process
What is the Test Pyramid?
The test pyramid describes the types of tests carried out in development:
1. Unit Tests
2. Service Tests
3. End-to-End Tests.
What are Unit Tests in the Test Pyramid?
In the development environment
What are Service Tests in the Test Pyramid?
In the staging environment
What are End-to-End Tests in the Test Pyramid?
In the staging environment
What is the Test Snow Cone?
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
What are Brittle Tests?
A brittle test is one that fails because another service fails.
What are Flaky Tests?
A flaky test is one that sometimes fails because another service fails — perhaps due to a time-out or race condition.
What is the Normalisation of Deviance?
The idea that over time
What are Build Light Indicators?
A simple visual indicator used in Agile software development to inform a team of software developers about the current status of their project. They benefit accountability but also add pressure on developers.
What is Integration Hell?
An anti-pattern of software development where the integration of pieces of a software system happens far too late
What is the point of Rule 1: run commit tests locally?
The deployment pipeline is a valuable shared resource that should be avoided from being blocked with unnecessary tests.
What is the point of Rule 2: wait for the results?
It allows those who make changes to be present and ready to fix any problems immediately.
What is the point of Rule 3: fix or revert failures within 10 minutes?
This rule avoids blocking useful progress by others.
What is the point of Rule 4: if a teammate breaks the rules, revert their changes?
To avoid others blocking useful progress.
What is the point of Rule 5: if someone else notices you caused a failure before you notice it’s a build sin?
This rule encourages developers to pay more attention to their changes and its impact on the build.
What is the point of Rule 6: once commit passes move on to your next task
Rapid, automated testing frees up time to do new, useful work.
What is the point of Rule 7: if any test fails it is the responsibility of the committer?
Someone takes responsibility for a failure and its fix.