Test Driven Development. René Barto SES Agile Development - Test Driven Development

Similar documents
Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Software Development Methodologies

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Software Quality in a Modern Development Team. Presented by Timothy Bauguess and Marty Lewis

An Intro to Scrum. Agile (Iterative) Project Development. Written in 2001 Can be read in its entirety at:

LESSONS LEARNED: BEING AGILE IN THE WATERFALL SANDBOX

The Scaled Agile Framework

Testing in Agile Software Development

Requirements and User-Centered Design in an Agile Context

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

Scrums effects on software maintainability and usability

XP Evolution Rachel Davies

Testing in the Agile World

Software Development Process Models

Agile Development

Optimize tomorrow today.

Introduction to Extreme Programming

Collaboration at Scale: Prioritizing a Backlog. 13-Dec-2017

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

Extreme programming XP 6

Agile Software Development Agile UX Work. Kati Kuusinen TUT / Pervasive / IHTE

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

Development Processes Agile Adaptive Planning. Stefan Sobek

Story Refinement How to write and refine your stories so that your team can reach DONE by the end of your sprint!

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

Agile Software Development The Cooperative Game 2nd Edition

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

Best Practices for Final Year Projects

Chapter 5. The Database Life Cycle. Class 04: Topic 3.1: The Database Life Cycle

Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time!

Introduction to. and. Scott W. Ambler Source Documents

defined. defined. defined. defined. defined. defined. defined. defined. defined.

The Process of Software Architecting

Shift Left, Automation, and Other Smart Strategies for Getting Ahead in QA

Best Practices for Collecting User Requirements

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

Software Engineering I (02161)

The Need for Agile Project Management

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

A Proposal to Develop a Testing Framework for Agile Software Process

I am Stephen LeTourneau from Sandia National Laboratories Sandia s National Security Missions include: Nuclear Weapons Defense Systems & Assessments

Agile Tester Foundation E-learning Course Outline

SOFTWARE LIFE-CYCLE MODELS 2.1

Experience-based Refactoring for Goal- oriented Software Quality Improvement

CREATING EFFECTIVE USER STORIES

Founda'ons of So,ware Engineering. Process: Agile Prac.ces Claire Le Goues

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

Adopting Agile Practices

Product Backlog Document Template and Example

SAFe Atlassian Style (Updated version with SAFe 4.5) Whitepapers & Handouts

Agile Israel Feature Driven Development

Practical Objects: Test Driven Software Development using JUnit

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Kanban One-Day Workshop

Agile Project Management For Dummies Download Free (EPUB, PDF)

MTAT Software Engineering Management

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

SE420 - Software Quality Assurance

DESIGN. (Chapter 04)

Evolutionary Architecture and Design

Architecture and Design Evolution

Development with Scrum

THE BENEFITS OF MODEL-BASED ENGINEERING IN PRODUCT DEVELOPMENT FROM PCB TO SYSTEMS MENTOR GRAPHICS

Advanced Data Modeling: Be Happier, Add More Value and Be More Valued

Dilbert Scott Adams. CSc 233 Spring 2012

Samples of Features and Feature Stories CSc 190

COMP6471 WINTER User-Centered Design

Story Writing Basics

Testing Agile Projects Stuart Reid

SEMANTIC NETWORK AND SEARCH IN VEHICLE ENGINEERING

Chapter 12 INTERACTION DESIGN IN PRACTICE

[PDF] Agile Project Management & Scrum QuickStart Guides

Ready for Scrum? Steve Hutchison DISA T&E

Introduction. Chapter 1. What Is Visual Modeling? The Triangle for Success. The Role of Notation. History of the UML. The Role of Process

Topic 01. Software Engineering, Web Engineering, agile methodologies.

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

Agile Methodologies via Kanban and GitHub

CertifiedAT - Version: 1. ISTQB Certified Agile Tester Foundation Level Extension

Agile Certification Options. Presented by Tom McGraw, PMI- ACP, ICP, CSM

3 Days Classroom Training Exam and Certification Included

02291: System Integration

Agile where are we at?

Project Plan. SISCalendar. for. Prepared by Zach Masiello. Ethan Mick Michael Caputo Shawn Thompson Organization: SIS.io

SAFe AGILE TRAINING COURSES

A CONFUSED TESTER IN AGILE WORLD

Lecture 7: Software Processes. Refresher: Software Always Evolves

Analysis of the Test Driven Development by Example

AmI Design Process. 01QZP - Ambient intelligence. Fulvio Corno. Politecnico di Torino, 2017/2018

AGILE. Getting Started on Your Team. Davisbase. Copyright 2011 Davisbase LLC. Licensed for Classroom Use to ASPE for Webinar Use Only

ICAgile Learning Roadmap Agile Testing Track

כללי Extreme Programming

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process?

Working in Harmony: Integrating the efforts of usability engineers and agile software developers

CS/ISE 5714 Usability Engineering. Topics. Introduction to Rapid Prototyping. Rapid Prototyping in User Interaction Development & Evaluation

App Development. Mobile Media Innovation Module 6

Plymouth Rd, Suite 212, Plymouth Meeting, PA

Bringing QA Into the Agile Process

Agile to User Experience

The Kanban Applied Guide

Transcription:

Test Driven Development René Barto SES Agile Development - Test Driven Development 27-09-2006

Contents About Myself About SES Agile Development A Typical Developer s Day Test Driven Development Questions 2

About Myself Born 1966 Graduated from TU Eindhoven (Information Technology) Around 20 years of experience in software development Joined Philips CFT in 1995 Joined Philips Research in 2001 Moved to SES in end 2002 3

About SES Founded in 2000 with three permanent staff, to support Philips Research in software prototype development In 2002, SES moved to the Prototyping and Instrumentation sector, to facilitate combined hardware / software prototyping Since 2003, many start-up companies (incubators) have been served as well, moving the focus more to product development Now (September 2006), SES consists of 11 permanent staff and some 70 temporary staff 4

Agile Development An Introduction Agile development is based on a lightweight process. The concepts are formulated by the Agile Alliance in The manifesto for Agile Software Development The Agile Alliance Values: Value Individuals and interactions over process and tools, Value Working software over comprehensive documents, Value Customer collaboration over contract negotiation, Value Responding to change over following a plan. http://www.agilealliance.org 5

Agile Development - What Is It? Lightweight (lean and mean) process for development, originated in the SW development community Iterative, close co-operation way of working Based on small, effective teams of skilled developers (4-8) Based on best practices which are as old as software engineering itself (evolution, not revolution) Very disciplined (do what you promise, fixed deadlines) Responding to changing requirements Have fun AND be productive 6

Agile Development - What Is It Not? Hacking Chaotic Silver bullet 7

Agile Development Methodologies Some agile methodologies: extreme Programming (XP) Scrum Dynamic System Development Method (DSDM) Feature Driven Development (FDD) Crystal Clear Agile Modeling (AM) 8

Agile Development Some Key Issues Iterative process User stories Tasks Stand-up meeting On-site customer Simplest solutions Refactoring Pair programming Continuous integration 9

Agile Development Process Life Cycle Daily stand-up meetings Retrospective meeting User stories (backlog) Planning meeting User stories User stories expanded by team Tasks Iteration No changes allowed during iteration Potentially shippable product Release 10

Agile Development Iterative Process A development project is made up of small (1-4 weeks) time frames, called iterations In every iteration, a number of steps is performed Requirements inventory Estimation Planning Realization & testing Review meeting (retrospective) Every iteration delivers working software A number of iterations together form a release of the product Iterations are fixed, their deadline never slips! 11

Agile Development User Stories Planning with the customer is done based on user stories User stories are descriptions of features of the system to be built User stories are broken down in size, such that they can fit well into an iteration (normally 1-5 user stories / iteration) User stories are prioritized (priorities can change over time!) Prioritization determines which user stories to take up first The development team and customer agree on the user stories to work on depending on priority set by the customer, and effort estimations by the team Effort estimations are not discussed, the team has to be able to take responsibility to finish the chosen user stories 12

Agile Development Tasks When user stories to be worked on in an iteration are defined, the team creates a work breakdown into tasks Tasks are pieces of work that can be finished in 1-2 days, they are estimated All work by team members is done based on tasks Team members are free to choose the tasks they will work on, however all tasks have to be finished before the end of the iteration A task is finished when the functionality defined for the task is created, and this can also be proven (testing!) 13

Agile Development Stand-up Meeting Every day (preferably first thing in the morning), have a short meeting of all the developers Aimed at two goals: status reporting and problem recognition Every member will answer three questions: What did you do yesterday What are you planning to do today What is getting in your way, how can team members help you (no one is perfect) Not meant for finding solutions Customers may attend, but not interfere 14

Agile Development On-site Customer During development, questions are bound to come up that are related to the customer s business Make sure the customer is always near to answer questions When questions are left unanswered this can cause problems When answers are delayed, so is the progress Sometimes, the customer is part of the team (i.e. pair programming) 15

Agile Development Simple Solutions Try to solve a problem in the simplest way possible Do not do up-front architecture / design of frameworks, they will evolve with the system (no one knows what the framework / architecture will be like on beforehand) Provide bullet-through solutions: Involve all layers of the system Build something that the customer can actually see / work with 16

Agile Development Refactoring As the system / product / prototype evolves, the architecture becomes more clear In course of time, code duplication will arise Refactoring is meant to change the structure of the code, in order to: Remove duplication Restructure the whole Build the architecture / framework as it evolves In case the changes don t work out, fall back to the previous version Always use tests to make sure everything still works! 17

Agile Development Pair Programming Two programmers working on the same code together The keyboard is used by one developer (driver), the other (passenger) checks what is happening and thinks ahead The keyboard is switched whenever the driver gets tired, or feels less confident Slightly decreased development time (around 80%) Highly improved quality (50-70% less bugs) Sharing of knowledge between team members When pairs switch regularly, everyone knows about everything (no critical resources) (important when turnover is relatively high) Very focussed co-operation between two people, also very exhausting 18

Agile Development Continuous integration For every task that is done, code is Tested in isolation Integrated Tested in the complete system Automatic build / test / deployment systems help in ensuring that the complete system still works well, and can be shipped 19

A Typical Developer s Day Stand Up Meeting at 9:00 Dynamic Pairing All tests shall succeed Sign off Task Refactoring All tests shall succeed Integration Development Unit Test Go Home When Tired Added test shall succeed Implementation Added test shall fail 21

Test Driven Development Why tests How do you know when you are ready without tests? Well-written tests provide documentation on expected and unexpected use Enables refactoring (when the tests succeed, you did well) Knowledge spread throughout the whole team (no islands / ivory towers) Code quality - only code that is tested is checked into versioning system! Helps ensure you made a shippable product 22

Test Driven Development What kinds of tests Unit Tests - tests to ensure that a module / component / subsystem works Acceptance Tests - tests to ensure that the system as a whole does what the customer expects Management tests - tests to ensure that business goals will be made Issues: You can t learn it out of a book Anything can be tested! Is as much about design as it is about testing Automated and isolated tests are always possible but this requires a mentality shift 23

Test Driven Development Why tests first Testing a module in isolation means that it must be decoupled from other modules If you don t start with writing the tests, you probably will not have/get the time to write them after the code is there Creating a test for a module enforces you to think about its interface (functional / testability) Forces design to be done from user s point of view (the test is a user) 24

Test Driven Development How test Make tests run automatically as much as possible Numerous xunit frameworks available Run automated tests with simple feedback (red / green) Tests are written as code, so they are part of deliverables of the team Many teams use web-servers to show the status of builds / tests, or use coloured lights to warn the team in case of any problems 25

Some projects 26

ExperienceLab 27

ExperienceLab 27

DreamScreen/DreamAudio/SmartFloor 28

WetLab 29

Interactive Mirror in Bathroom LivingTomorrow (Amsterdam) 30

Entertaible (Entertaining Table) or Multiple Touch Screen 31

Polymer Vision (Rollable Display) 32

Content Identification 33

ambx 34

The SPC900NC PC Camera Specifications and features: Top of the SPC range; best in class CCD sensor in stead of CMOS VGA resolution (640 x 480) Advanced image processing: Pixel Plus Digital Natural Motion 1.3 megapixel (1280x960) snapshots Frame rate: up to 90 fps Automatic face tracking Motion detection 35

Questions? 36

Agile Development Review Meeting At the end of every iteration a review meeting (retrospective) is held The review meeting is meant to Discuss the results (acceptance tests) Discuss any changes / updates needed Discuss the process What went well What could be improved What still puzzles us The customer and complete team is present

Agile Development Metaphor A metaphor is a conceptual analogy (preferably taken from real world) to make it easier to communicate the concept of the system to build Naming of subsystems could be extracted from the metaphor Architecture of the system could also be in analogy to the metaphor The metaphor is a good way to test whether the team understands the requirements / concepts the customer is trying to communicate

Agile Development Relevant Documentation Create documentation only when needed do not create documentation for the purpose of writing it Documentation has a goal: communication; create / use it for that reason! User stories and tasks form the planning and requirements of the project, they should be well organized and archived In the beginning of a project, documentation could consist of pictures and some description of the concept, and possible designs As the team becomes more confident / experienced, the amount of documentation will decrease in size Code and test also form documentation

Agile Development 40 Hour Week When you get tired, go home Most of the bugs are introduced because developers are tired / not focused Agile development requires a lot of discipline, and demands considerable effort This still means, however, that iteration dates have to be met, and the agreed functionality (user stories) has to be delivered! (time-boxing)