Continuous Integration

Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.


By integrating regularly, you can detect errors quickly, and locate them more easily.


    Solve problems quickly

       Because you’re integrating so frequently, there is significantly less back-tracking to discover where things went wrong, so you can spend more time building features.

Cheap


           Continuous Integration is cheap. Not continuously integrating is costly. If you don’t follow a continuous approach, you’ll have longer periods between integrations. This makes it exponentially more difficult to find and fix problems. Such integration problems can easily knock a project off-schedule, or cause it to fail altogether.

    Benefits

      • Say goodbye to long and tense integrations
      • Increase visibility which enables greater communication
      • Catch issues fast and nip them in the bud
      • Spend less time debugging and more time adding features
      • Proceed in the confidence you’re building on a solid foundation
      • Stop waiting to find out if your code’s going to work
      • Reduce integration problems allowing you to deliver software more rapidly

Best Practises:

      • Maintain a single source repository
      • Make your build self-testing 
      • Every commit should build on an integration machine
      • Keep the build fast
      • Test in a clone of the production environment
      • Make it easy for anyone to get the latest executable
      • Everyone should see what’s happening
      • Automate deployments

 

Team Responsibilities


  • Developers check out code into their private workspaces.
  • When done, the commit changes to the repository.
  • The CI server monitors the repository and checks out changes when they occur.
  • The CI server builds the system and runs unit and integration tests.
  • The CI server releases deployable artefacts for testing.
  • The CI server assigns a build label to the version of the code it just built.
  • The CI server informs the team of the successful build.
  • If the build or tests fail, the CI server alerts the team.
  • The team fix the issue at the earliest opportunity.
  • Continue to continually integrate and test throughout the project.

Continuous Deployment


  • Check in frequently
  • Don’t check in broken code
  • Don’t check in untested code
  • Don’t check in when the build is broken
  • Don’t go home after checking in until the system builds


Many teams develop rituals around these policies, meaning the teams effectively manage themselves, removing the need to enforce policies from on high.


Continuous Deployment is closely related to Continuous Integration and refers to the release into production of software that passes the automated tests.

Essentially, “it is the practice of releasing every good build to users,” explains Jez Humble, author of Continuous Delivery.

By adopting both Continuous Integration and Continuous Deployment, you not only reduce risks and catch bugs quickly, but also move rapidly to working software.

With low-risk releases, you can quickly adapt to business requirements and user needs. This allows for greater collaboration between ops and delivery, fuelling real change in your organisation, and turning your release process into a business advantage.


Below is the pictorial view of the JIRA , Stash and Bamboo (CI) with required tasks to implement continuous integration for the enterprise software development.


CI Setup

   Is your  Continuous Integration  (CI) Setup Complete for Test Automation?

There are several continuous integration tools such as Hudson, Jenkins, Teamcity and Bamboo. We specialise in Bamboo , so we will talk more about bamboo. Bamboo needs plugins to support different frameworks and tools. Most of them are provided by atlassian or  vendors supporting Bamboo.
Please have a closer look at the tasks required in Bamboo to support multiple frameworks or tool-sets. We support many automation tools in Bamboo by providing required plugins.
   Rows show tasks to be included in build for CI plan. For example, to create plan for JUnit, you need source checkout , Test        runner, Test Parser and JIRA integrator (TestLink for Bamboo Plugin) tasks. 

There are several plugins which provides tasks, parser to support tool-set.

ALM Task for Bamboo provide ALM Task and Parser as well as mechanism to integrate test results with JIRA Issues.
 Similarly UFT Task for Bamboo provides Task and Parser as well as mechanism to integrate test results with JIRA Issues. You can check our plugins for various test automation tools. Most of our plugins support integration test results with JIRA issues. For few tools, you will need to install TestLink for Bamboo to integrate test results with JIRA issues. e.g. TestComplete for Bamboo plugins parses test results in Bamboo and needs TestLink for Bamboo to integrate results with JIRA issues.

Continous Integration (CI)


    Tools mentioned in above CI setup:

  •     Stash : Source Code Repository
  •     Maven :  Repository and build automation tool
  •     JIRA : Software development management tool
  •     Bamboo : Build automation tool
  •     UFT Task : HP UFT / QTP Task plugin for Bamboo
  •     ALM Task : HP ALM Task plugin for Bamboo
  •     TestLink : JIRA integration plugin for Bamboo
  •     Ant :  Build automation tool
  •     Gradle :  Build automation tool
  •     Cucumber : Behaviour driven development tool
  •     JBehave : Behaviour driven development tool
  •     TestNG : Testing framework

    Continuous Integration for automated testing:
    
    Continuous integration should have following tasks
  1.  Source Checkout Task : Checkout latest source code from your favorite source code repository
  2. Build your code and execute automated test
  3. Parse generated results. Use appropriate result parsers
  4. Integrate with JIRA using TestLink ( Inbuilt in ALM and UFT Task for Bamboo)
  5. Set appropriate triggers. e.g. Based on time , based on development code deployment to test environments etc.
  6. Generate test execution reports in JIRA (Coming soon)
Comments