Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Unit Testing & Continuous Integration

Similar documents
Continuous Integration

Software Construction

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

In depth study - Dev teams tooling

Getting Started. UC Santa Barbara Setup public repository (GitHub, Bitbucket) Identify workflow:

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Continuous Integration

Introduction to Agile Software Development Process. Software Development Life Cycles

Group Assignment Agile Development Processes 2012

Introduction to Programming Tools. Anjana & Shankar September,2010

Educational Collaborative Develops Big Data Solution with MongoDB

Continuous Integration Multi-Stage Builds for Quality Assurance

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Implementing Continuous Integration Testing Prepared by:

SOFTWARE DEVELOPMENT BASICS SED

Understanding Code Management in a Multi-Vendor Environment. Examples of code management in a multi-team environment

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Modern practices TIE-21100/

Content. Development Tools 2(63)

Git Branching for Continuous Delivery

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Software Configuration Management and Continuous Integration

The care of open source creatures. Vincent Sanders

Kevin Lee Technical Consultant As part of a normal software build and release process

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Software Continuous Integration & Delivery

About Me Developer Workspaces Enable Agile Teams

Software configuration management

Software Engineering I (02161)

Build management & Continuous integration. with Maven & Hudson

Mobile Development with Git, Gerrit & Jenkins

How Silk Central brings flexibility to agile development

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

Continuous integration End of the big bang integration era

Continuous Integration and Delivery. manage development build deploy / release

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Continuous Integration (CI)

[Handout for L6P2] How to Avoid a Big Bang: Integrating Software Components

Smarter Balanced Assessment Consortium. Recommendation

DevOps Stack. Reid Holmes. Chris Parnin:

Title: Continuous Delivery and Continuous Integration. Conference: 13 th Annual Software Testing Conference 2013

Agile Power Tools. Author: Damon Poole, Chief Technology Officer

Continuous Integration

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Jenkins on Windows with StreamBase

Bridging the Gap Between Acceptance Criteria and Definition of Done

Version Control. Version Control

Software Configuration Management

Upping the game. Improving your software development process

Continuous Integration: A case study

Continuous integration for databases using Redgate tools

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Java course - IAG0040. Unit testing & Agile Software Development

Hudson Continous Integration Server. Stefan Saasen,

Fear and loathing in software development.

Best Practices for Java Projects Horst Rechner

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

Win at Life. with Unit Testing. by Mark Story

Solution Spotlight KEY OPPORTUNITIES AND PITFALLS ON THE ROAD TO CONTINUOUS DELIVERY

Software Configuration Management Best Practices

Software Configuration Management Best Practices for Continuous Integration

SCREAM (SCRUM TEAM MANAGEMENT TOOL)

Continuous Integration. Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

jenkins, drupal & testing automating every phing! miggle

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

Continuous Integration Processes and SCM To Support Test Automation

CHAPTER 3 : AGILE METHODOLOGIES. 3.3 Various Agile Software development methodologies. 3.4 Advantage and Disadvantage of Agile Methodology

Source Control Systems

Java Software Quality Tools and techniques

Atomate Development Process. Quick Guide

Continuous Integration For Fusion Middleware

AB Suite in the Application Lifecycle

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Software Development In the Cloud Cloud management and ALM

How To Do Continuous Integration

MDSplus Automated Build and Distribution System

Version control tracks multiple versions. Configuration Management. Version Control. V Software Engineering Lecture 12, Spring 2008

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

IBM Rational Software

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Eclipse Help

Optimizing Your Software Process

Waterfall to Agile. DFI Case Study By Nick Van, PMP

A little about me: I m a Computer Science Engineer I m Spanish but living in Finland. I ve been working and contributing to Drupal for more than 3

A central continuous integration platform

Hudson configuration manual

DevOps. Jesse Pai Robert Monical 8/14/2015

The Importance of Continuous Integration for Quality Assurance Teams

Chapter 13 Configuration Management

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

Transcription:

Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Wintersemester 16/17 Unit Testing & Continuous Integration Patrick Schäfer patrick.schaefer@hu-berlin.de Marc Bux buxmarcn@informatik.hu-berlin.de

How Software Used to Be Developed software developed in teams software is divided in modules modules are assigned to teams modules have to be integrated at some point integration is done manually at release time human player AI player bug fixes? new features? game logic start of development release candidate Unit-Tests & Continuous Integration 2

What Are the Issues? effects of changes (bugfixes, new features) are hard to predict Unit Tests no feedback (by the product owner) possible before release Continuous Integration unnecessarily complicated integration process bad software quality stress and frustration ( integration hell ) towards the end of a project Unit-Tests & Continuous Integration 3

Unit Tests unit test: systematic, automated test of a software component unit: smallest testable part of an application in object-oriented programming, this is usually a method (or a class) the unit is tested in isolation (of other units) usually written in the same language as the tested software tests should be written by the developer (of the unit) can be written prior or concurrent to unit development tests can be successful or fail Unit-Tests & Continuous Integration 4

Advantages of Unit Testing unit tests facilitate the design of robust code (bugs make it through only if the unit and its test are poorly designed) provide immediate feedback on the effect of changes in the code base serve as a to-do list subsequent to changes in the code base help define what a piece of code is (and isn t) supposed to do Unit-Tests & Continuous Integration 5

Best Practices 1. test the complete intended behavior of the unit, including a) expected cases (e.g., sort an unsorted array) b) special cases (e.g., sort already sorted array) c) boundary conditions (e.g., sort empty array) 2. test every behavior only once (no redundant test) 3. test only one unit at a time 4. design tests independent of the application s state 5. design tests independent of external resources 6. name unit tests clearly and consistently 7. whoever breaks a working unit is responsible for fixing it Unit-Tests & Continuous Integration 6

Demo: Unit Tests Repository: https://github.com/hu-berlin-semesterprojekte/cidemo Unit-Tests & Continuous Integration 7

Continuous Integration (CI) continuous integration: automatically test and merge all units into an integrated software (multiple times a day) every change (e.g., git push) in the software triggers a new build unit tests are executed to determine the success of a build gives feedback in form of reports requires version control and build automation for downloading dependencies, compiling code, and running tests build automation tools for Java: Maven, Ant, Gradle builds can be successful or fail Unit-Tests & Continuous Integration 8

CI in Practice Version Control System Developer Fetch HEAD CI Server Create build Unit-Tests & Continuous Integration 9

Advantages of Continuous Integreation with continuous integration, we prevent integration hell early always know the latest stable version of our software instant feedback if a developer s work in progress breaks the stable version can automatically test different setups different databases multiple versions of 3rd party libraries different configurations Unit-Tests & Continuous Integration 10

Best Practices 1. design meaningful unit tests for your software modules 2. commit frequently; keep iterations small 3. keep your tests fast; keep the build fast 4. don t (ever) commit into a stable branch when the build is broken Unit-Tests & Continuous Integration 11

Travis CI open-source continuous integration service / server website: https://travis-ci.org coupled to GitHub easy to set up: 1. sign in using your GitHub account 2. select repositories that Travis should build build is configurable via.travis.yml file YAML is a popular data serialization file format, similar to XML or JSON Unit-Tests & Continuous Integration 12

Demo: Continuous Integration Repository: https://github.com/hu-berlin-semesterprojekte/cidemo Unit-Tests & Continuous Integration 13

Further Reading unit tests in Java using JUnit: http://www.frankwestphal.de/unittestingmitjunit.html build automation in Java using Maven: https://maven.apache.org/guides/getting-started/maven-infive-minutes.html unit tests in Unity using Unity Test Tools: https://unity3d.com/learn/tutorials/topics/production/unitytest-tools continuous integration in Unity using GitHub and Travis CI: https://jonathan.porta.codes/2015/04/17/automaticallybuild-your-unity3d-project-in-the-cloud-using-travisci-forfree/ Unit-Tests & Continuous Integration 14

Next steps familiarize yourself with unit tests & continuous integration further reading ( last slide) start testing and integrating ( user story Continuous Integration ) this week (w/o POs) finalize tasks in your sprint backlog (incl. tests, code review) twice: Daily Scrum mid-week: technical refinement for new user stories before Monday, 14:00 (w/o POs): Sprint #2 Planning next Monday (w/ POs), 14:00 Sprint #1 Review Meeting; bring a laptop & presentable prototype Sprint #2 kickoff; present your Sprint Backlog short talk on coding guidelines? Questions? Unit-Tests & Continuous Integration 15