Continuous Integration

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Test Automation Framework Ashesh Jain 2007EE50403 Manager Amit Maheshwari.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of The Java Development Tools project.
Stimulating reuse with an automated active code search tool Júlio Lins – André Santos (Advisor) –
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Automating the Build Process using ANT SE-2030 Dr. Mark L. Hornick 1.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Unit Testing & Defensive Programming. F-22 Raptor Fighter.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Selenium automated testing in Openbravo ERP Quality Assurance Webinar April 8th, 2010.
Automating the Build Process using Ant SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Agile Development Infrastructure MUUG – June 13, 2006 Steve Moffat.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary June, 2011 Made available under the Eclipse Public License v Mobile.
Unit Testing with JUnit and Clover Based on material from: Daniel Amyot JUnit Web site.
SEE-GRID-SCI The SEE-GRID-SCI initiative is co-funded by the European Commission under the FP7 Research Infrastructures contract no.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
EMBEDDED REAL-TIME, INC. December 8, 2015 Java Unit Mark Mosher Rochester Java Users Group.
1 Software Engineering and Security DJPS April 12, 2005 Professor Richard Sinn CMPE 297: Software Security Technologies.
A brief introduction to javadoc and doxygen. What’s in a program file? 1. Comments 2. Code.
Software Design 1.1 CPS 108, Spring 2006 l Object oriented programming and design, we'll use Java and C++  Language independent concepts including design.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
May08-21 Model-Based Software Development Kevin Korslund Daniel De Graaf Cory Kleinheksel Benjamin Miller Client – Rockwell Collins Faculty Advisor – Dr.
Build automation. Prerequisites for Continuous Integration (CI)  Version Control System  Build automation  Notification on build result sent to related.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Software Deployment & Release 26/03/2015 1EN-ICE.
ITP 109 Week 2 Trina Gregory Introduction to Java.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
A S P. Outline  The introduction of ASP  Why we choose ASP  How ASP works  Basic syntax rule of ASP  ASP’S object model  Limitations of ASP  Summary.
Software Engineering Lecture 11 Software Testing Presenter: Josef Hallberg 1.
Maven and Jelly James Strachan. Introduction Maven and Jelly are both Apache projects at Jakarta Ultimately both will be top.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
See Build, See Build Run Run Build Run Hudson - Continuous Integration Vincent Batts SELF 2010.
Tool Support for Testing
Build and Test system for FairRoot
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Unit Testing.
Maven 04 March
Advanced Programing practices
Continuous Integration (CI)
Plan What is Maven ? Links : mvn command line tool
Introduction to Visual Basic 2008 Programming
Test Driven Development 1 November Agenda  What is TDD ?  Steps to start  Refactoring  TDD terminology  Benefits  JUnit  Mocktio  Continuous.
Why should we test? How should we test?
Quality Control in the dCache team.
Design and Implementation
Skill Based Assessment
Skill Based Assessment
Applied Software Implementation & Testing
Class Commenting Doxygen for Classes.
Module 01 ETICS Overview ETICS Online Tutorials
Chapter 7 –Implementation Issues
Continuous Integration Tool
CONTINUOUS INTEGRATION –WHY WE DO IT?
Advanced Programing practices
CS 240 – Advanced Programming Concepts
Execute your Processes
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Software Engineering and Architecture
Plug-In Architecture Pattern
Presentation transcript:

Continuous Integration Peter Rautek Institute of Computer Graphics and Algorithms Vienna University of Technology

History Daily Build and Smoke Test [McConnell 1996] Daily (automated) build Test Present results Motivation Quality Pinpointing problem Social aspect Example - Windows NT  5.6 million lines of code 40000 source files 19 hours builds (on several machines) Daily! -> otherwise e.g. weekly -> it gets hard to fix Peter Rautek

History Benefit(s) Disadvantage(s) Continuous Integration [Kent1999][Fowler2000] Continuous quality control Small pieces of effort applied frequently Opposite of quality control after development Benefit(s) Early detection of bugs Disadvantage(s) Higher costs Peter Rautek

Best Practices Source code repository Automated builds Automated testing Everyone commits every day Every commit (to trunk) is built Keep build fast Build in clone of production environment Transparancy of build reports Nightly builds available (to everyone) Automated deployment Peter Rautek

Small independent components for very specific tasks Implementation Small independent components for very specific tasks Testing Documentation Building Deployment etc. Server that coordinates the tasks Custom scripts Automated build server software Peter Rautek

Test driven development Unit Testing Automated Testing Test driven development Unit Testing Write code plus tests Tests specify expected behaviour of functions, classes, modules, etc. preconditions and expected result Execute tests frequently (at least for each checkin) Early detect changes that break expected behaviour Peter Rautek

Library that handles test cases Test case inherits a TestClass Unit Testing Library that handles test cases Test case inherits a TestClass Runs tests on target classes Java: Junit tests Others ~20 C++: CppUnit: port of Junit Google C++ Testing Framework Others ~40 Peter Rautek

CppUnit Example Peter Rautek

Documentation Generation Parses source code Special comment blocks Principles Keep documentation close to code  Easy to maintain Expose project structure  Good overview Link documentation to source code  Exploration tool Peter Rautek

Documentation Generation Tools Peter Rautek

Documentation Generation Cross plattform ~20 C++ ~10 Free ~5 Do not completely suck ~1  For Java ~2  Doxygen, Javadoc Peter Rautek

Example Input /**  * \class [classname]  *  * \brief [brief description]  * \details [detailed description]  *  */ /**  * \brief [brief description]  *  * [detailed description]  *  * \param[in] [name of input parameter] [its description]  * \param[out] [name of output parameter] [its description]  * \return [information about return value]  * \sa [see also section]  * \note [any note about the function you might have]  * \warning [any warning if necessary]  */ Peter Rautek

Example Output ... Peter Rautek

Documentation Best Practice Do document Interfaces of modules Public functions APIs Public Classes (concepts) Don‘t document Private functions and internals Obvious stuff e.g., ./** This method returns the value **/ public void getValue() { return value; } Peter Rautek

Automated Builds Rules: code and dependency organization Framework: extendable by plugins Plugins: compile source code, build javadoc, package classes, deploy files, create reports, run unit tests, ... Project Object Model (POM) XML file with meta-information Best known for dependency management e.g., project depends on jUnit version 3.8.1 Does a lot of other things Peter Rautek

Project Object Model Peter Rautek

Very powerful command line tool IDE integration (e.g., eclipse plugin) Maven Summary Very powerful command line tool IDE integration (e.g., eclipse plugin) Java world (de facto standard?) C++ alternatives ? Native ARchive (NAR) plugin for maven (never tried) (never tried) Peter Rautek

Automated Build Server (Hudson) Continous integration server for Java Open source (MIT-license) Powerful web interface Peter Rautek

and more - see http://hudson-ci.org Hudson Features Build summaries Javadoc Test summaries Junit test details Email notifications Rss feeds and more - see http://hudson-ci.org xUnit plugin for C++ projects (never tried) Peter Rautek

Continuous Integration is best practice in software development Summary Continuous Integration is best practice in software development Development cycles are Quick Tested Transparent Tools Commercial Free Peter Rautek

References [McConnell 1996] Steve McConnell, Daily Build and Smoke Test, Best Practices, IEEE Software, Vol. 13, No. 4, July 1996 [Kent1999]  Beck Kent , Extreme Programming Explained. ISBN 0-201-61641-6, 1999 [Fowler2000] Martin Fowler, Continuous Integration, 2000,  http://martinfowler.com/articles/continuousIntegration.html [Schatten 2010] Alexander Schatten, Stefan Biffl, Markus Demolsky, Erik Gostischa-Franta, Thomas Östreicher, Dietmar Winkler, Best Practice Software-Engineering, Eine praxiserprobte Zusammenstellung von komponentenorientierten Konzepten, Methoden und Werkzeugen, Springer, 2010 Peter Rautek