Continuous Integration with Jenkins

Continuous Integration (CI) is a software development practice at Trigent where members of development teams integrate their work frequently using the agile methodology. Integration testing can range from once to several times daily. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. The main aim of CI is to provide instant feedback when a defect is found in the code so that the defect can be rectified as soon as possible.

The agile development cycle followed by CI is Code>>Build>>Test>>Deploy which helps to have high quality and bug-free code.

CI runs have two major phases:

Step One – ensures code compiles.

Step two – ensures the code works as designed.

For best results, these two phases should be followed by running a series of automated tests that validate all levels of a product.

Advantages of CI

  • Bug fixes are detected immediately
  • Debugging becomes less time consuming
  • There is no integration testing step, which saves time
  • Less expensive bug fixes
  • Since code is committed frequently, roll-back is easier in case of any major issues
  • Makes code robust and speeds up the development in an agile environment

Jenkins

Jenkins is an open-source tool to perform continuous integration. Jenkins is great at finding issues in software early. The main aim of Jenkins is to build when an event has occurred. For example, ‘build after every few minutes’ or ‘build after every commit’. Jenkins also monitors test execution and sends out notifications when a build has passed or failed.  It builds and tests your software continuously and monitors the execution and status of jobs, making life easier for the team and identifies issues at the earliest. Jenkins is a highly configurable system and also supports lots of plug-ins

Jenkins Advantages

  • We can configure build-to-run periodically
  • Once a project is successfully created in Jenkins, all future builds are automatic
  • Jenkins comes with basic reporting features, i.e. keeping track of build status, last success/failure, and so forth.
  • Deploys code instantly, no developer builds
  • Generates test reports
  • Notifies stakeholders of build status
  • A large number of plugins supported on Jenkins

Automated Continuous Regression Testing

Regression Testing becomes a challenge if defects are not found in the initial stages. A major concern when developing new software features is that another part of the code will be affected in unexpected ways. With a typical development process, testers often do not get time to execute a full set of regression tests until late in the release when it is much more costly to fix and retest the product. Continuous integration pairs continuous builds with test automation to ensure that each build also assesses the quality of the codebase. Continuous Regression runs on a daily basis in the background so that we can identify issues caused by new commits.

Author

  • Shashank Hegde works with Trigent Software as Senior Test Engineer. With nearly five year of experience in QA and Test Automation, Shashank has rich experience in selenium WebDriver. Over the years, he has been involved in developing automated test scripts for new features and taking care of regression suites, analyzing results and reports on test results. He has worked on different domains like Insurance, Mortgage and Health Science.