Class 5 - Continuous Integration & TDD Flashcards
Stinky Fish Exercise
An exercise where team members share their individual concerns & worries about the future of the project as a way to start a conversation and begin to confront or overcome concerns
Continuous Integration (CI)
Developers regularly save, commit, pull, and push their code. An automated build occurs after which automated tests are run to assert code correctness before integration.
What is accomplished by saving, committing, pulling, and pushing often?
You are less likely to lose work or have to spend time merging two developer’s code
What is accomplished by running an automated build after every push?
You can quickly catch bugs that cause your code to not compile
What is accomplished by running automated tests after every push?
Automated tests give developers a better idea of the state of the codebase. They tell developers what functionalities are not working properly and what functionalities need to be worked on.
Continuous Delivery
Deploy app to staging environment after every push to ensure the app can be reliably released at any time. It is more comprehensive than continuous integration and it provides a more accurate picture of the current state of the codebase
Continuous Deployment
Same procedure as continuous delivery (push, build, run tests, deploy) with the caveat that the codebase is only deployed to production if all tests pass. Otherwise, a rollback occurs.
What is a potential benefit of continuous deployment
The development team is forced to write tests everyone REALLY believes in
Quality Assurance (QA)
Essentially, making sure your code works before something terrible happens
What are the different branches of QA?
- Fault Avoidance (verification, reviews, configuration management)
- Fault Detection (testing, debugging)
- Fault Tolerance
- Usability Testing (scenario testing, prototype testing, product testing)
True or False: Testing is a proof of correctness
False. Testing can never completely identify all defects within a piece of software
Testing
The process of validating and verifying that a software program meets business and technical requirements. Testing is used to determine if software works as expected.
What are the five dimensions of testing?
- Testers
- Coverage
- Potential Problems
- Activities
- Evaluation
Testers (Dimension of Testing)
Who does the testing. This includes developers and independent testers.
Coverage (Dimension of Testing)
What gets tested