Continuous Integration Flashcards
(28 cards)
What is Continuous Integration (CI)?
Benefit?
- 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.
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?
- 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
What is the Production Environment?
- Where the work of multiple development teams becomes available to customers
- It 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?
- Tests run in the development environment to ensure functions work correctly
- There may be thousands of unit tests run in seconds
What are Service Tests in the Test Pyramid?
- Run in the staging environment to ensure services are working correctly
- Sometimes hundreds of service tests run in minutes
What are End-to-End Tests in the Test Pyramid?
- 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
What is the Test Snow Cone? Is it a good idea?
- 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
What are Brittle Tests?
A brittle test is one that fails because another service fails.
What are Flaky Tests?
(Why?)
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? What does it imply for testing?
- 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)
What are Build Light Indicators?
Pro and Con?
- 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
What is Integration Hell?
An anti-pattern of software development that brings together the pieces of a software system (far too) late.
What is the point of Rule 1: run commit tests locally?
The deployment pipeline is a valuable shared resource that one should avoid blocking with unnecessary test failures
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?
To avoid 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?
It encourages developers to pay more attention to their changes and its impact on the build.
What is the point of Rule 6: once a 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.