The Fast and Furious World of Quality Assurance
As a key contributor in the quality assurance team, there’s a clear expectation of us to deliver high-quality weekly releases that ensure quick turnarounds and high accuracy. Our team is committed to develop — deploy — test- integrate — release quality output to the end-user by leveraging the latest operation tools.
In today’s world, clients’ requirements need to be fulfilled on time without any quality compromise.
Continuous Integration (CI) means that when multiple teams are working on the same builds, these teams design codes and conduct unit-tests to prevent integration problems. Development teams spend a week in writing the code and merging with the master branch without reviewing the code (Peer review) then issues might arise. CI allows developers to check-in their code at a more frequent basis into a git hub repository (shared), the code can be verified by plugins like SonarQube, Sonar lint, W3C standards help automated build pipeline to be more accurate which allows DevOps teams to identify problems before it is too late. If the development team delays committing the code for merger into the master branch and there is an issue, it becomes a bottleneck.
Let’s assume that we are sewing a garment — say a t-shirt — and you give the sleeves and the collar to one team and the body of the t-shirt to another team. If you wait until the day of giving the t-shirt to someone, you won’t know if it will fit them properly. CI will help you save on costs in the long run as it is more expensive to fix defects in your high-level architecture when it’s discovered later in the phases.
Continuous Delivery is similar to CI where the development teams develop a new feature that can be released to the production at end of the release cycle. CD requires building, testing, and releasing faster and more regularly in an automated pipeline. Continuous Integration focuses on verifying and validating the integrated code. CD means at the end of each iteration we can release, a new feature to the staging or the pre-production instance.
CI/CD Overview
CI/CD is a standard quality verification process that helps DevOps team to identify code issues at integration and delivery phases in CI/CD pipeline.
Continuous integration
A job will be created automatically to perform the following actions:
· Building the source code to check compilation errors.
· Executing tests automatically when a pull request is created/updated.
Continuous Delivery
The source code will be deployed immediately to the server after all the tests are passed. Developers can check their function quickly and then assign the task to the QA team for review. As the build was executed on the build system, it will not only minimize the deployment downtime but also reduce the load of the server. As a result, the QA activities which are happening on the server will be less impacted.
Key Benefits of CI/CD
· Code quality changes are easier to integrate into the base branch (master).
· Easier for team members in different time zones to track progress and avoid duplication.
· Consistent code compile/build testing.
· Minimal integration issues allowing faster code delivery in the production instance.
· Bugs/issues can be identified early in stage to help early fixing and time and cost-saving.
· Faster bug fixes & feature delivery with lower risk releases.
CI/CD Solution by dentsu World Services
CI/CD Pipeline Use Case
The CI/CD pipeline is triggered as soon as a developer commits the code to the repository.
· Commit — Once a developer merges the feature branch to master branch, Jenkins server will automatically trigger the SVN tools like GIT, Bitbucket etc.
· Build — The new changes in code trigger a Jenkins job that runs the automated unit tests with the help of build tools like Maven or Gradle, the results of these unit tests are validated by code quality plugins. If the build fails then it will send a notification back to the development team to rectify the issue and start the deployment process again.
· Test — After the build is successful in the test phase there are several automation-testing runs before the code is released to the staging instance.
· If all the quality gates are passed the code is released to the production instance.
Why do we recommend CI/CD
It is imperative in today’s fast pace world to ensure that the product reaches faster to the customer. To enable this fast delivery, CI/CD plays a crucial role by supporting successful code integration and the QA checks and verifies the functionality of code is accurate and works as expected. As a QA, we leverage the CI/CD principles to give faster feedback to developers and prevent the bad code to reach the production. Adhering to this process will lead to an error-free release of code to the end customers.
If you have any questions on the above solution please comment below and we will get in touch with you. Author: Venkatesh Belde, Nitin Gupta and Devashish Mathur, dentsu World Services.