Improving Software Quality with Continuous Integration

Slides:



Advertisements
Similar presentations
An open source QA stack testing tools for agile teams Presented by Aaron Evans
Advertisements

Continuous Integration (CI) By Jim Rush Version Control Build Test Report.
Integrated Development Environments, Source Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting.
Eralp Erat Senior Software Developer MCP,MCAD.NET,MCSD.NET.
Tools for Agile Development: A Developer’s Perspective Mike Linnen Blog:
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
03 | Application Lifecycle Management Susan Ibach| Technical Evangelist Christopher Harrison | Head Geek.
USING CI & CD WITH MICROSOFT SQL SERVER Tim Giorgi Senior Software Developer Northwest Evaluation
BizTalk Deployment using Visual Studio Release Management
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
© copyright 2014 BMC Software, Inc. DevOps consultant Niek Bartholomeus Going DevOps with BMC.
| Basel Verwalten von Deployments und Release Management – mit dem TFS 2013 ganz einfach! Hansjörg Scherer ALM Spezialist Microsoft
Continuous Integration for Databases Learn how to automate your build and test Steve Jones Red Gate Software Part II of the Continuous Delivery for Databases.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Team System Adoption Martin Woodward Teamprise. Visual Studio Editions Easy to use, easy to learn, easy to acquire tools for hobbyists, enthusiasts, and.
Introduction to Continuous Integration Mike Roberts.
Continuous Integration Demonstration. Agenda 1.Continuous Integration Basics 2.Live Demonstration 3.Bamboo Concepts 4.Advantages 5.Version 2.0 Features.
DNN LOVES JENKINS FOR CONTINUOUS INTEGRATION
By John Boal  Continuous Integration [CI] ◦ Automating the build process ◦ Build the entire system each time any new.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Development Best Practices Concepts & Microsoft’s Approach.
Continuous Integration with TeamCity Adrian Ritchie BSc, MBCS Guernsey Software Developer Forum
Continuous Integration and Testing
tinyurl.com/ProTFS2012.
@benday #vslive Automated Build, Test & Deploy with TFS, ASP.NET, and SQL Server Benjamin
Craig Berntson
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Kako razvijate PL/SQL pakete? File based PL/SQL development Mitja Golouh SIOUG 2006,
Anubha Gupta | Software Engineer Visual Studio Online Microsoft Corp. Visual Studio Enterprise Leveraging modern tools to streamline Build and Release.
Sofia Event Center May 2014 Branimir Giurov C# MVP Solution Architect BulPros Consulting Continuous Integration of Sharepoint 2013 Solutions with.
Isolated Database Environments Kevin Howell February 2014.
Sean Chambers.  Senior Developer at Flagler County Schools for 5 years  Owner Hybrid Software, Educational Software  Contributor to various open source.
Continuous Integration CruiseControl.Net. Best Practices Use version control; Automate the build; Build should be self tested; Developers must commit.
Build automation. Prerequisites for Continuous Integration (CI)  Version Control System  Build automation  Notification on build result sent to related.
Lecture XIII: Continuous Integration CS 4593 Cloud-Oriented Big Data and Software Engineering.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Neil Kidd Developer Tools Technical Specialist Microsoft UK.
Microsoft Corporation. Announcement Visual Studio® Team System 2008 Enables you to Build Quality Code Be More Productive Collaborate at the Next Level.
Cruise Training Introduction of Continuous Integration.
Connect with life Tejasvi Kumar Developer Technology Specialist | Microsoft India
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
Continuous Deployments using SSDT
Release Management for Visual Studio 2013 Ana Roje Ivančić Ognjen Bajić Ekobit.
Continuous Delivery and Team Foundation Server 2013 Ognjen Bajić Ana Roje Ivančić Ekobit.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
PRODUCT - ORGANIZATION - AGILE - LEAN CD - Agile on Steroids - (and what Jenkins got to do with it) Paul Bakker linkedin.com/paulgbakker github.com/p-bakker.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
Automated Build and Test
Continuous Integration (CI)
Trends like agile development and continuous integration speak to the modern enterprise’s need to build software hyper-efficiently Jenkins:  a highly.
Introduction to Team Foundation Server 2010
Build /21/2018 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Source Code Management
Continuous Integration For Databases
X in [Integration, Delivery, Deployment]
Automated Testing and Integration with CI Tool
Team Foundation Server for everyone
DAT381 Team Development with SQL Server 2005
Continuous Integration
Presented by : Chirag Dani & Dhaval Shah
Continuous Integration Tool
Introduction to VSTS Database Professional
Jamie Cool Program Manager Microsoft
Presentation transcript:

Improving Software Quality with Continuous Integration Chris Farrell Quick Solutions

Questions Anytime Ask questions whenever you want

What is CI? NOT a software program you install NOT something you buy or pay for NOT a new idea NOT specific to .Net or Java Is a set of process best practices applied during development to Reduce defects by doing QA during development Improve productivity by automating manual tasks Facilitate collaboration and teamwork

Who Created Continuous Integration

Why Do CI? Source: http://www.riceconsulting.com/public_pdf/STBC-WM.pdf

Problems solved with CI Integration Hell Difficult, Stressful deployments Human Error in Deployments Late feedback from QA

Benefits of CI Reduced Cost Improved Quality Stable velocity Easy, more accurate/consistent deployments Can demo at any time Can deploy at any time Improved Transparency Improved QA

#1 – Single Source Repository Everyone works from the same codebase *during* development Repository contains *all* needed files including SQL Scripts, Reports, Code, Dependencies, etc Tools: VSS, CVS, SVN, GIT, TFS,etc Client with multiple copies of the code!!!!! Have code but can’t find dependencies(or right versions) Not putting reports or db scripts in VCS

#2 Automate the Build Make it so that anyone can build with a single command Build could involve multiple projects and dependencies Multiple project build Automated Build should be able to build pieces AND the whole

Build Triggers Manual Build Build on Check-In Scheduled Build CI server detects check-ins and triggers build Scheduled Build Nightly Builds

#3 Make the Build Self Testing Does the latest version compile? Quality Metrics – Performance, Test Coverage Automated Tests FX Cop Style Guidelines UI/Functional Tests Integration Tests Unit Tests

#3 Tooling Build Tools Unit Testing Functional Testing UI Testing MS Build, Nant, Rake, Maven Unit Testing Resharper, Nunit, MS Test, Gallio/MBUnit, etc Functional Testing SpecFlow, Cuke4Nuke UI Testing Microsoft Test Manager, WATIN, Selenium

#4 – Everyone Commits to the mainline every day “Mainline” does not mean prod Typically you commit multiple times per day Commit at least at end of day in case someone is sick, a hard drive dies, workload shifts, etc Anyone can get the latest code at any time Provides support for versioning

#5 – Every Commit Should Build on an Integration Machine Ensures that all code to build the project has been checked in to source control Doesn’t need to be a high end PC. Can be a VM or an obsolete dev machine

#6 – Keep the Build Fast The entire point of CI is to provide fast and frequent feedback If the build is broken, you want to find out before someone else checks out broken code Short feedback cycles For slow builds..prestage when needed

#7 – Test in a Clone of the Production Environment Should be a close as possible. Every difference is a risk that what works in QA will not work in Production Might involve testing on multiple targets Should have similar Database size Quality of Test Data Network Security Configuration Server and Client Software

Database Deploy to Production Backup Database from Prod Copy Database to CI Server Restore DB each build Apply Migrations

#8 – Make it Easy for Anyone to Get the Latest Executable Business Analyst should be able to do Show & Tell at any time QA should be able to test at any time QA can trigger builds Sales should be able to see current version

#9 – Everyone can see what is happening CI is about feedback and transparency CI should provide visibility towards Is the Build broken Who checked in code, when, for what feature Code Quality Metrics Automated Test Results Code Coverage Performance Metrics

#10 Automate Deployment When you have to deploy at 5pm on Friday or 6am on Monday So your QA testers can test without asking you if the latest version is out

#10 – Automate Deployment CRITICAL Deployment is a deliverable that needs to be tested before deploying to production Speed of Deployment Labor Cost of Deployment Accuracy of manual deployments non-tech users must be able to deploy to test target multiple environments for testing Greatly reduces deployment stress

#10 – Automate Deployment Automate *all* of deployment Backup of Production Database updates Data Migrations Code Deployment Report Deployment Practice makes perfect!!!

Other Uses/Benefits Can use CI to automate almost anything Data Migration Jobs Backup local or remote data/files Send Reports Reset environments Sync environments(ex move AD from Prod to Dev)

Selling CI Issue – Time/Cost to Setup Issue – No access for automated deploy due to politics/firewall Issue – Sensitive data Issue – Limited access to dev environment Time/Cost -use old pc -use free software -start small, improve incrementally -measure cost of defect and ROI from decreased defects Permissions -restrict prod move permissions to approved persons -deliver a zip file that can be x-copied -multiple CI environments. -compare risks/benefits – error prone, expensive deployments with less QA vs restricted build without qa and higher defects Sensitive Data -have scripts to scrub and obfuscate data Limited access to dev(ex, only the dba can update DB or only network admins can change AD even in dev) -make it their problem -promote visibility -find compromises. Make them a part of the solution instead of a part of the problem -share credit -escalate!

Free VCS www.unfuddled.com www.gitHub.com www.assembla.com 200 mb free SVN & GIT www.gitHub.com Free for public repositories/OSS www.assembla.com Free private GIT repos(?2gb limit?) www.CodePlex.com free TFS for OSS http://code.google.com/projecthosting/ 2gb GIT, Mercurial, SVN www.sourceforge.com

Popular CI Servers Hudson (Free) Jenkins (Free) http://hudson-ci.org Jenkins (Free) http://jenkins-ci.org TeamCity (sort of free) www.jetbrains.com/teamcity/ Free up to 20 build configurations/3 agents CruiseControl.Net (free) http://cruisecontrol.sourceforge.net Team Foundation Server Included with MSDN Pro and higher

Build Automation Tools MS Build C:\ Nant (port of Ant) http://nant.sourceforge.net Rake(Ruby Make) http://rake.rubyforge.org

Other Tooling SSRS Report Deployment DB Comparision FluentMigrator https://github.com/chrispfarrell/RsDeploy DB Comparision Visual Studio 2010 Database Projects RedGate SQL Compare($395) FluentMigrator

TFS Demo Work Item Tracking Source Control Project Mgmt Charts CI Build Unit Tests Integration Tests Automated Deployment

Jenkins Demo

QSI is Hiring

Chris Farrell Website: www.chrispfarrell.com Twitter: @chrispfarrell Email: chrispfarrell@gmail.com