Software Testing Continuous Integration

Software Testing Continuous Integration

Software Testing Continuous Integration Beat Fluri University of Zurich Department of Informatics software evolution & architecture lab Continuous Integration - What ... is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Martin Fowler, Article Source: http://martinfowler.com/articles/continuousIntegration.html Dr. Beat Fluri © 2011 2 Continuous Integration - How commit multi-stage changes builds commit changes unit tests commit triggers changes build integration tests quality assurance deployment Dr. Beat Fluri © 2011 3 Continuous Integration - How Version control repository: CVS, Subversion, Git, Mercurial, etc. Build tools: Ant, Maven, Make, Gant, Grails, Rake, etc. Continuous integration environment (server): CruiseControl, Continuum, Hudson/Jenkins Our experience Subversion (http://subversion.tigris.org/) Apache Maven (http://maven.apache.org/), Apache Ant (http://ant.apache.org/) Hudson/Jenkins (https://http://jenkins-ci.org/) Dr. Beat Fluri © 2011 4 Continuous Integration - Why Reduce risks Defects are detected when they are introduced Measure the health of a software Environment always the same and build starts clean => no assumptions Reduce repetitive manual processes (safe time and costs) Process runs the same every time Ordered process: compile, unit tests, integration tests, qa, etc. Generate deployable software at any time and at any place Going back in the build history to deploy older, maybe stable, builds Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 Dr. Beat Fluri © 2011 5 Continuous Integration - Why Enable better project visibility Decisions on quality improvements and tests are shown immediately Ability to notice trends in various quality metrics (# bugs; # checkstyle, findbugs, pmd violations; code coverage of test cases) Establish greater confidence in the software product from the development team Making progress is visible and encourages developers Confidence increases if the increase of overall product quality is visible Same code basis for every developer: reduces communication overhead Go to build #x, do you see... Source: Paul M. Duval. Continuous Integration. Pearson Education, Inc., 2007 Dr. Beat Fluri © 2011 6 Build Automation - Maven Maven is a build tool (Maven: The Definitive Guide) Maven is a software project management and comprehension tool (http://maven.apache.org) Comprehension is probably a bit enthusiastic Maven works with Project Object Models (POM files) to specify project settings (see uDoo) Plugin architecture to include tools into the build cycle Dr. Beat Fluri © 2011 7 Build Automation - Maven Works with the principle: Convention over configuration ./src/main/java ./src/main/resources ./src/test/java ./src/test/resources ./target/classes ./target/* (.jar, reports, etc.) Dr. Beat Fluri © 2011 8 Maven - Build Lifecycle Default (only main phases) compile test package integration-test verify install deploy Site (Generates web page with project infos and reports) Clean Execute: mvn <phase> Dr. Beat Fluri © 2011 9 Maven - Build Lifecycle Maven plugin can be hooked into a certain lifecycle phase Coverage measure into verify <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <executions> <execution> <phase>verify</phase> <goals> <goal>cobertura</goal> </goals> </execution> </executions> </plugin> Dr. Beat Fluri © 2011 10 Maven - Dependency Management Maven works with repositories where a huge number of jars are stored Specify a dependency in the POM file maven downloads the necessary jar file <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8</version> <scope>test</scope> </dependency> </dependencies> Dr. Beat Fluri © 2011 11 Continuous Integration with uDoo Dr. Beat Fluri © 2011 12.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    12 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us