SlideShare una empresa de Scribd logo
1 de 43
Lean-Agile Development with SharePoint 
BILL AYERS
Bill Ayers 
MCM/MCSM Charter SharePoint 
• MCT, MCTS, MCITP, MCSD, MCAD, 
MCSA, MCDBA, Professional 
Scrum Master (PSM I), etc. 
• Flow Simulation Ltd. 
• www.SPDoctor.net 
• BillA@flosim.com 
• @SPDoctor 
• Consultant specialising in SharePoint 
Development and Architecture for 
Web Content Management and 
Collaboration and Mobile 
Development.
Agenda: 
• Lean 
• Agile 
• Kanban 
• XP 
• Scrum 
• TDD 
• CI 
• Conclusions
Pre-historic Software 
Development 
• FORTRAN/COBOL 
• Wish lists 
• Ad-hoc development 
• No source control! 
• Limited tooling 
• Computers had lots of spinning 
tapes and blinking lights
Waterfail 
• Big design up-front 
• Write-only documentation 
• Analysis paralysis 
• Wrong product 
• Over budget/time 
• Project failure 
Requirements 
Design/Arch 
Coding 
QA 
Deployment 
Maintenance
Time for Agile
Lean 
• Manufacturing in 1940s 
Japan 
• Reduce inventory (work in 
progress - WIP) 
• Just-in-time 
• Counter-intuitive 
• Applies just as well to 
software development
Lean Principles 
• Eliminate waste 
• Build quality in 
• Create knowledge 
• Defer commitment 
• Deliver fast 
• Respect people 
• Optimize the whole 
• Counter-intuitive
Kanban 
• Visualizing work 
• Making policies explicit (like DoD) 
• WIP limits 
• Focus on flow (rather than goals) 
• Commitment to continuous improvement 
• Well suited to reactive processes 
• Software optional 
9 3 
Jeff Lasovski 
Used under Creative Commons
Agile 
• Individuals and interactions over processes and tools 
• Working software over comprehensive documentation 
• Customer collaboration over contract negotiation 
• Responding to change over following a plan
Agile Frameworks 
• Kanban (Scrum-ban) 
• Scrum 
• RUP 
• Feature Driven Development 
• XP 
• Adaptive Software Development 
• Crystal 
• DSDM Atern
Extreme Programming - XP 
• Test-first development 
• Pair programming 
• Refactoring 
• Continuous integration 
• Frequent releases 
• Coding standards 
• Sustainable pace
What is Scrum? 
• Scrum is an agile product development process that allows us to 
focus on delivering the highest business value in the shortest time. 
• Allows us to rapidly and repeatedly inspect actual working 
software (from one to four weeks). 
• Business sets priorities. Teams self-organize to determine the best 
way to deliver the highest priority features. 
• At the end of every sprint, the business can see real working 
software and decide to release it as is or continue to enhance it 
for another sprint.
Scrum 
Roles: 
• Product Owner 
• Scrum Master 
• Development Team 
Daily Scrum Meeting (15 mins max) 
• What I did yesterday 
• What I am going to do today 
• Impediments 
http://www.scrum.org/scrum-guide 
• Transparency 
• Inspection 
• Adaptation 
24 hours 
Sprint 
1-4 weeks 
Shippable 
Product 
Product 
Backlog 
Sprint 
Backlog
Scrum Components 
Roles: 
Product Owner 
Scrum Master 
The Team 
Artefacts: 
Product backlog 
Sprint backlog 
Remaining work 
Working software 
Definition of Done 
Planning board/Charts 
Time-boxed Events: 
Sprint Planning (1-4h) 
Sprint(1-4wk) 
Sprint Review (1-4h) 
Sprint Retrospective (1-3h) 
Daily Scrum (15m)
Technical Implications 
• To support changing requirements we require flexible emergent 
design and architecture 
• To support changing design we need to be able to refactor and 
this requires automated test coverage, ideally TDD. 
• To support demonstration and potential deployment at the end of 
each increment we require Continuous Integration.
SharePoint is Different 
• Need some up-front architecture decisions, certain 
types of artefact very difficult to back out once in 
production (e.g. list schema) 
• Tight integration with the underlying platform can 
make code inherently difficult to test 
• Platform is a driving factor in the solution design
Code Coverage (and other dubious metrics) 
Your Custom 
Code 
SharePoint .NET 
SharePoint Unmanaged 
Code 
ASP.NET 
SQL 
Windows OS
What is TDD? 
• Goes beyond Test-first 
• Tests drive the low-level design 
• Supports refactoring 
• Just a developer tool
Time for TDD
TDD Cycle 
write a 
failing test 
make test 
pass 
refactor 
requirements
TDD rulebook 
• No code unless failing test 
• Write just enough code to pass test 
• No new test until green 
• Refactoring must not add functionality 
• Tests must be fast 
• Tests must be easy to run (i.e. automated) 
• Purpose of test should be clear 
• Tests should be independent (run in any order) 
• Test code is a first-class citizen…
How does TDD work? 
• TDD is counter-intuitive 
• Tests facilitate refactoring 
• Refactoring facilitates incremental design 
• Failing tests pinpoint problems quickly 
• Fast (continuous) tests give immediate feedback 
• Tests should ideally isolate the code you are working on 
• Rapid feedback 
• Less bugs
Refactoring 
• Clean up variable and function names for clarity 
• Make code more concise 
• Remove spaghetti code 
• Remove duplicate code 
• Extract methods to avoid oversize methods 
• Keep re-running the tests as you re-factor 
• If test fails then Ctrl-Z, Ctrl-Z, Ctrl-Z …
Shopping List Story
Shopping List Story 
• As a team site user 
• I want my shopping list visible on the home page 
• So that I don’t forget stuff 
Acceptance Criteria: 
• Does a shopping list panel appear on the home page? 
• Does the panel show all items in the shopping list? 
• Are the items sorted alphabetically
DEMO: TDD – INTRODUCTION
TDD hints and tips 
• Beware excessive use of mocks 
• You don’t have to get everything right from the get-go 
• Don’t write meaningless tests – e.g. testing library functions, 
constructors, language features 
• Think of tests as a design tool 
• Fake it ‘til you make it 
• Tests are like pitons when climbing. You drive in the pitons above 
your head as you go – Kent Beck 
• Like source control and ALM, TDD is a professional developer’s 
tool – don’t dismiss it (Dunning-Kruger effect).
Benefits of TDD 
• Bugs discovered faster 
• Better productivity (once the technique is learned) 
• Safe refactoring results in better code design 
• Cleaner design because enforces KISS and YAGNI 
• Improved code quality and confidence 
• Tests document the design 
• Easier to handle interruptions to “flow” 
• Incremental development 
• Guarantees test coverage 
• Enables future maintenance and further development by ensuring existing 
functionality is maintained (tests) 
• Strangely hypnotic, especially if you are listening to progressive dance 
music ;-)
Drawbacks 
• Can be difficult to maintain discipline under pressure 
• Difficult in brownfield development 
• Difficult without management support 
• Excessive and trivial tests 
• False sense of security 
• Cost of maintaining tests 
• Not all development is equally suited to TDD 
• Not a silver bullet 
• Not appropriate for spikes or other non-production code 
• Note all code is easy to test (e.g. SharePoint!)
Client-side testing 
• The new model – SharePoint-hosted Apps 
• Unit testing JavaScript 
• Faking the _api 
• MVVM data-binding patterns 
• Shallow integration (“unigration”) tests
Options for client-side 
JavaScript testing 
• Ad-hoc tests (e.g. console logging) 
• QUnit (qunitjs.com) 
• TDD style 
• Jasmine 
• BDD style 
• Mocha 
• BDD or TDD style 
• PYO assertion library 
• UI tests (e.g. Selenium, VS UI tests)
Running tests 
• Can run tests in a browser window 
• Chutzpah test runner 
• Command line and Visual Studio integration 
• Only supports Jasmine and Qunit 
• For Continuous Integration use PhantomJS 
• Headless browser 
• Chrome browser engine (WebKit) 
• Phantomjs.org 
• Use a cloud test service for “cross-browser test” 
• Includes device browsers
Using QUnit 
• Create a simple web project in Visual Studio 
• Tests defined in JavaScript test files 
• Test page has div to show results 
• Run on any dev. machine - SharePoint not required 
module("Test the scoring logic"); 
app = window.app || {}; 
test("Score of -100/10 gives appropriate summary", function () { 
app.viewModel.numberQuestions = 10; 
app.viewModel.currentScore = -100; 
equal(app.viewModel.scoreMessage(), "Scoring error..."); 
});
DEMO: CLIENT-SIDE TESTING
Continuous Integration (CI) 
• PowerShell scripting is the key 
• Script everything! 
• Strip back to new site collection on each test 
deployment 
• Rather than building from scratch every time, restore 
a base-lined content database first 
• Once your project goes live, you need to maintain two 
environments – one for test data and one using an 
imported live content database
Deploying into production 
SharePoint 
CMS live 
environment 
Author Approve Publish 
Continuous 
content 
development 
process for 
artefacts 
SharePoint 
development 
environment Release-based 
development process – 
Features/Apps 
Deploy 
Release 
Test 
Build 
Develop
CI Hints and Tips 
• Build a library of PowerShell functions 
• Design your functions so that they can be re-run – detect if data 
already exists or delete it 
• Use xml file to define configuration properties for each 
environment 
• Make sure everything is in source control!
Conclusions 
• Agile continues to gain traction in the development 
community as a whole and brings many benefits 
• Still many misunderstandings about Agile methods 
• Can be a challenge for SharePoint development 
because we are building on an existing framework 
• Need management and team buy-in to make Agile 
work 
• Agile methods look simple, but actually quite difficult 
to implement effectively 
• A good idea to use an Agile coach or get training
Recommended Reading: 
• www.extremeprogramming.org 
• “Clean Code – A Handbook of Agile Software 
Craftsmanship”, Robert C Martin 
• www.scrum.org – Scrum Guide 
• “The Art of Unit Testing”, Roy Osherove 
• “Test-Driven Development by Example”, Kent 
Beck 
• Lean-Agile Acceptance Test-Driven 
Development, Ken Pugh
questions? 
WWW.SPDOCTOR.NET 
@SPDOCTOR
thank you. 
SHAREPOINT AND PROJECT CONFERENCE ADRIATICS 
ZAGREB, 10/15/2014 - 10/16/2014

Más contenido relacionado

La actualidad más candente

Scrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcaseScrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcasejavadch
 
Achieving Balanced Agile Testing
Achieving Balanced Agile Testing Achieving Balanced Agile Testing
Achieving Balanced Agile Testing Cprime
 
Make better share point stuff with an agile methodology
Make better share point stuff with an agile methodologyMake better share point stuff with an agile methodology
Make better share point stuff with an agile methodologyDoug Hemminger
 
Post-agile approaches - agile for the real world and how to avoid agile failure
Post-agile approaches - agile for the real world and how to avoid agile failurePost-agile approaches - agile for the real world and how to avoid agile failure
Post-agile approaches - agile for the real world and how to avoid agile failureYuval Yeret
 
Maturing Agile SDLC & workflow improvements
Maturing Agile SDLC & workflow improvementsMaturing Agile SDLC & workflow improvements
Maturing Agile SDLC & workflow improvementsMichael J Geiser
 
Agile Training March 2015
Agile Training March 2015Agile Training March 2015
Agile Training March 2015David Phipps
 
Introduction to Agile - Scrum, Kanban, and everything in between
Introduction to Agile - Scrum, Kanban, and everything in betweenIntroduction to Agile - Scrum, Kanban, and everything in between
Introduction to Agile - Scrum, Kanban, and everything in betweenPravin Kumar Singh, PMP, PSM
 
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем БыковецAgile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем БыковецSigma Software
 
Agile Scrum Training (+ Kanban), Day 2 (2/2)
Agile Scrum Training (+ Kanban), Day 2 (2/2)Agile Scrum Training (+ Kanban), Day 2 (2/2)
Agile Scrum Training (+ Kanban), Day 2 (2/2)Jens Wilke
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneDashlane
 
Introduction to Agile-Scrum
Introduction to Agile-ScrumIntroduction to Agile-Scrum
Introduction to Agile-ScrumPraveen Nair
 
Agile tools for everyone (slideshare)
Agile tools for everyone (slideshare)Agile tools for everyone (slideshare)
Agile tools for everyone (slideshare)Don Bolen
 
Agile methodology v 4.5 s
Agile methodology   v 4.5 sAgile methodology   v 4.5 s
Agile methodology v 4.5 sJames Sutter
 
Scaling Atlassian for the Enterprise
Scaling Atlassian for the EnterpriseScaling Atlassian for the Enterprise
Scaling Atlassian for the EnterpriseCprime
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Simon Storm
 
Introduction to Agile & Scrum
Introduction to Agile & ScrumIntroduction to Agile & Scrum
Introduction to Agile & ScrumHawkman Academy
 
ALN_Nepal-Agile_for_the_real_world
ALN_Nepal-Agile_for_the_real_worldALN_Nepal-Agile_for_the_real_world
ALN_Nepal-Agile_for_the_real_worldRoland Leibundgut
 

La actualidad más candente (20)

Scrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcaseScrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcase
 
Achieving Balanced Agile Testing
Achieving Balanced Agile Testing Achieving Balanced Agile Testing
Achieving Balanced Agile Testing
 
Make better share point stuff with an agile methodology
Make better share point stuff with an agile methodologyMake better share point stuff with an agile methodology
Make better share point stuff with an agile methodology
 
Post-agile approaches - agile for the real world and how to avoid agile failure
Post-agile approaches - agile for the real world and how to avoid agile failurePost-agile approaches - agile for the real world and how to avoid agile failure
Post-agile approaches - agile for the real world and how to avoid agile failure
 
Maturing Agile SDLC & workflow improvements
Maturing Agile SDLC & workflow improvementsMaturing Agile SDLC & workflow improvements
Maturing Agile SDLC & workflow improvements
 
Agile Training March 2015
Agile Training March 2015Agile Training March 2015
Agile Training March 2015
 
Introduction to Agile - Scrum, Kanban, and everything in between
Introduction to Agile - Scrum, Kanban, and everything in betweenIntroduction to Agile - Scrum, Kanban, and everything in between
Introduction to Agile - Scrum, Kanban, and everything in between
 
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем БыковецAgile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
 
Agile Scrum Training (+ Kanban), Day 2 (2/2)
Agile Scrum Training (+ Kanban), Day 2 (2/2)Agile Scrum Training (+ Kanban), Day 2 (2/2)
Agile Scrum Training (+ Kanban), Day 2 (2/2)
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Introduction to Agile-Scrum
Introduction to Agile-ScrumIntroduction to Agile-Scrum
Introduction to Agile-Scrum
 
Agile tools for everyone (slideshare)
Agile tools for everyone (slideshare)Agile tools for everyone (slideshare)
Agile tools for everyone (slideshare)
 
Agile methodology v 4.5 s
Agile methodology   v 4.5 sAgile methodology   v 4.5 s
Agile methodology v 4.5 s
 
Scaling Atlassian for the Enterprise
Scaling Atlassian for the EnterpriseScaling Atlassian for the Enterprise
Scaling Atlassian for the Enterprise
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
 
PM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan MarkovićPM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan Marković
 
Introduction to Agile & Scrum
Introduction to Agile & ScrumIntroduction to Agile & Scrum
Introduction to Agile & Scrum
 
Scrum and TFS
Scrum and TFSScrum and TFS
Scrum and TFS
 
Codess Prague - Agile vs Traditional Methods - Apr 2014
Codess Prague - Agile vs Traditional Methods - Apr 2014Codess Prague - Agile vs Traditional Methods - Apr 2014
Codess Prague - Agile vs Traditional Methods - Apr 2014
 
ALN_Nepal-Agile_for_the_real_world
ALN_Nepal-Agile_for_the_real_worldALN_Nepal-Agile_for_the_real_world
ALN_Nepal-Agile_for_the_real_world
 

Similar a Lean-Agile Development with SharePoint - Bill Ayers

TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)Peter Kofler
 
Software product development process
Software product development processSoftware product development process
Software product development processSri Kanajan
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & TestQualitest
 
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...Codecamp Romania
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated TestingLars Thorup
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testingBestBrains
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
A Day in the Life: Developer Enhancements with Visual Studio 2012
A Day in the Life: Developer Enhancements with Visual Studio 2012A Day in the Life: Developer Enhancements with Visual Studio 2012
A Day in the Life: Developer Enhancements with Visual Studio 2012Imaginet
 
What is this agile thing anyway
What is this agile thing anywayWhat is this agile thing anyway
What is this agile thing anywayLisa Van Gelder
 
ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudJeremy Likness
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itFarooq Ali
 
Building environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOpsBuilding environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOpsRajnish Chauhan
 
Vs11 overview
Vs11 overviewVs11 overview
Vs11 overviewravclarke
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointJeremy Thake
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...DevConFu
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in StartupsDusan Omercevic
 

Similar a Lean-Agile Development with SharePoint - Bill Ayers (20)

The Agile Mindset
The Agile MindsetThe Agile Mindset
The Agile Mindset
 
Agile engineering practices
Agile engineering practicesAgile engineering practices
Agile engineering practices
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
Software product development process
Software product development processSoftware product development process
Software product development process
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & Test
 
Key alias dev standard final
Key alias   dev standard finalKey alias   dev standard final
Key alias dev standard final
 
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated Testing
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testing
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
A Day in the Life: Developer Enhancements with Visual Studio 2012
A Day in the Life: Developer Enhancements with Visual Studio 2012A Day in the Life: Developer Enhancements with Visual Studio 2012
A Day in the Life: Developer Enhancements with Visual Studio 2012
 
What is this agile thing anyway
What is this agile thing anywayWhat is this agile thing anyway
What is this agile thing anyway
 
ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the Cloud
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating it
 
Building environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOpsBuilding environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOps
 
Vs11 overview
Vs11 overviewVs11 overview
Vs11 overview
 
Kku2011
Kku2011Kku2011
Kku2011
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in Startups
 

Más de SPC Adriatics

How to secure your data in Office 365
How to secure your data in Office 365 How to secure your data in Office 365
How to secure your data in Office 365 SPC Adriatics
 
Do you know, where your sensitive data is?
Do you know, where your sensitive data is?Do you know, where your sensitive data is?
Do you know, where your sensitive data is?SPC Adriatics
 
Securing Intellectual Property using Azure Rights Management Services
Securing Intellectual Property using Azure Rights Management ServicesSecuring Intellectual Property using Azure Rights Management Services
Securing Intellectual Property using Azure Rights Management ServicesSPC Adriatics
 
Creating Workflows in Project Online
Creating Workflows in Project OnlineCreating Workflows in Project Online
Creating Workflows in Project OnlineSPC Adriatics
 
Faster than a flash behind the scenes of patching SharePoint Online
Faster than a flash   behind the scenes of patching SharePoint OnlineFaster than a flash   behind the scenes of patching SharePoint Online
Faster than a flash behind the scenes of patching SharePoint OnlineSPC Adriatics
 
Role based views in Project and Resource Center
Role based views in Project and Resource CenterRole based views in Project and Resource Center
Role based views in Project and Resource CenterSPC Adriatics
 
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)SPC Adriatics
 
SharePoint Governance and Compliance
SharePoint Governance and ComplianceSharePoint Governance and Compliance
SharePoint Governance and ComplianceSPC Adriatics
 
From analyses to successful Implementation
From analyses to successful ImplementationFrom analyses to successful Implementation
From analyses to successful ImplementationSPC Adriatics
 
The key to a successful Office 365 implementation is adoption
The key to a successful Office 365 implementation is adoptionThe key to a successful Office 365 implementation is adoption
The key to a successful Office 365 implementation is adoptionSPC Adriatics
 
10 Steps to be Successful with Enterprise Search
10 Steps to be Successful with Enterprise Search10 Steps to be Successful with Enterprise Search
10 Steps to be Successful with Enterprise SearchSPC Adriatics
 
How the Cloud Changes Business Solution Design and Delivery
How the Cloud Changes Business Solution Design and DeliveryHow the Cloud Changes Business Solution Design and Delivery
How the Cloud Changes Business Solution Design and DeliverySPC Adriatics
 
Scaling SharePoint 2016 Farms with MinRole & Other Tools
Scaling SharePoint 2016 Farms with MinRole & Other ToolsScaling SharePoint 2016 Farms with MinRole & Other Tools
Scaling SharePoint 2016 Farms with MinRole & Other ToolsSPC Adriatics
 
SharePoint 2013 Search Operations
SharePoint 2013 Search OperationsSharePoint 2013 Search Operations
SharePoint 2013 Search OperationsSPC Adriatics
 
Office Online Server 2016 - a must for on-premises installation for SharePoin...
Office Online Server 2016 - a must for on-premises installation for SharePoin...Office Online Server 2016 - a must for on-premises installation for SharePoin...
Office Online Server 2016 - a must for on-premises installation for SharePoin...SPC Adriatics
 
Custom Code-The Missing Piece of the SharePoint Governance Puzzle
Custom Code-The Missing Piece of the SharePoint Governance PuzzleCustom Code-The Missing Piece of the SharePoint Governance Puzzle
Custom Code-The Missing Piece of the SharePoint Governance PuzzleSPC Adriatics
 
SharePoint 2016 Hybrid Sites Inside Out
SharePoint 2016 Hybrid Sites Inside OutSharePoint 2016 Hybrid Sites Inside Out
SharePoint 2016 Hybrid Sites Inside OutSPC Adriatics
 
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?SPC Adriatics
 
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016SPC Adriatics
 

Más de SPC Adriatics (20)

How to secure your data in Office 365
How to secure your data in Office 365 How to secure your data in Office 365
How to secure your data in Office 365
 
Do you know, where your sensitive data is?
Do you know, where your sensitive data is?Do you know, where your sensitive data is?
Do you know, where your sensitive data is?
 
Securing Intellectual Property using Azure Rights Management Services
Securing Intellectual Property using Azure Rights Management ServicesSecuring Intellectual Property using Azure Rights Management Services
Securing Intellectual Property using Azure Rights Management Services
 
Creating Workflows in Project Online
Creating Workflows in Project OnlineCreating Workflows in Project Online
Creating Workflows in Project Online
 
Faster than a flash behind the scenes of patching SharePoint Online
Faster than a flash   behind the scenes of patching SharePoint OnlineFaster than a flash   behind the scenes of patching SharePoint Online
Faster than a flash behind the scenes of patching SharePoint Online
 
Role based views in Project and Resource Center
Role based views in Project and Resource CenterRole based views in Project and Resource Center
Role based views in Project and Resource Center
 
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)
OneDrive, TwoDrive, Whiterive, BlueDrive (hahaha)
 
SharePoint Governance and Compliance
SharePoint Governance and ComplianceSharePoint Governance and Compliance
SharePoint Governance and Compliance
 
From analyses to successful Implementation
From analyses to successful ImplementationFrom analyses to successful Implementation
From analyses to successful Implementation
 
The key to a successful Office 365 implementation is adoption
The key to a successful Office 365 implementation is adoptionThe key to a successful Office 365 implementation is adoption
The key to a successful Office 365 implementation is adoption
 
Office 365 Video
Office 365 VideoOffice 365 Video
Office 365 Video
 
10 Steps to be Successful with Enterprise Search
10 Steps to be Successful with Enterprise Search10 Steps to be Successful with Enterprise Search
10 Steps to be Successful with Enterprise Search
 
How the Cloud Changes Business Solution Design and Delivery
How the Cloud Changes Business Solution Design and DeliveryHow the Cloud Changes Business Solution Design and Delivery
How the Cloud Changes Business Solution Design and Delivery
 
Scaling SharePoint 2016 Farms with MinRole & Other Tools
Scaling SharePoint 2016 Farms with MinRole & Other ToolsScaling SharePoint 2016 Farms with MinRole & Other Tools
Scaling SharePoint 2016 Farms with MinRole & Other Tools
 
SharePoint 2013 Search Operations
SharePoint 2013 Search OperationsSharePoint 2013 Search Operations
SharePoint 2013 Search Operations
 
Office Online Server 2016 - a must for on-premises installation for SharePoin...
Office Online Server 2016 - a must for on-premises installation for SharePoin...Office Online Server 2016 - a must for on-premises installation for SharePoin...
Office Online Server 2016 - a must for on-premises installation for SharePoin...
 
Custom Code-The Missing Piece of the SharePoint Governance Puzzle
Custom Code-The Missing Piece of the SharePoint Governance PuzzleCustom Code-The Missing Piece of the SharePoint Governance Puzzle
Custom Code-The Missing Piece of the SharePoint Governance Puzzle
 
SharePoint 2016 Hybrid Sites Inside Out
SharePoint 2016 Hybrid Sites Inside OutSharePoint 2016 Hybrid Sites Inside Out
SharePoint 2016 Hybrid Sites Inside Out
 
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?
Microsoft BI demystified: SharePoint 2016 BI or for PowerBI v2?
 
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016What's New for the BI workload in SharePoint 2016 and SQL Server 2016
What's New for the BI workload in SharePoint 2016 and SQL Server 2016
 

Último

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Lean-Agile Development with SharePoint - Bill Ayers

  • 1. Lean-Agile Development with SharePoint BILL AYERS
  • 2.
  • 3. Bill Ayers MCM/MCSM Charter SharePoint • MCT, MCTS, MCITP, MCSD, MCAD, MCSA, MCDBA, Professional Scrum Master (PSM I), etc. • Flow Simulation Ltd. • www.SPDoctor.net • BillA@flosim.com • @SPDoctor • Consultant specialising in SharePoint Development and Architecture for Web Content Management and Collaboration and Mobile Development.
  • 4. Agenda: • Lean • Agile • Kanban • XP • Scrum • TDD • CI • Conclusions
  • 5. Pre-historic Software Development • FORTRAN/COBOL • Wish lists • Ad-hoc development • No source control! • Limited tooling • Computers had lots of spinning tapes and blinking lights
  • 6. Waterfail • Big design up-front • Write-only documentation • Analysis paralysis • Wrong product • Over budget/time • Project failure Requirements Design/Arch Coding QA Deployment Maintenance
  • 8. Lean • Manufacturing in 1940s Japan • Reduce inventory (work in progress - WIP) • Just-in-time • Counter-intuitive • Applies just as well to software development
  • 9. Lean Principles • Eliminate waste • Build quality in • Create knowledge • Defer commitment • Deliver fast • Respect people • Optimize the whole • Counter-intuitive
  • 10. Kanban • Visualizing work • Making policies explicit (like DoD) • WIP limits • Focus on flow (rather than goals) • Commitment to continuous improvement • Well suited to reactive processes • Software optional 9 3 Jeff Lasovski Used under Creative Commons
  • 11. Agile • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
  • 12. Agile Frameworks • Kanban (Scrum-ban) • Scrum • RUP • Feature Driven Development • XP • Adaptive Software Development • Crystal • DSDM Atern
  • 13. Extreme Programming - XP • Test-first development • Pair programming • Refactoring • Continuous integration • Frequent releases • Coding standards • Sustainable pace
  • 14. What is Scrum? • Scrum is an agile product development process that allows us to focus on delivering the highest business value in the shortest time. • Allows us to rapidly and repeatedly inspect actual working software (from one to four weeks). • Business sets priorities. Teams self-organize to determine the best way to deliver the highest priority features. • At the end of every sprint, the business can see real working software and decide to release it as is or continue to enhance it for another sprint.
  • 15. Scrum Roles: • Product Owner • Scrum Master • Development Team Daily Scrum Meeting (15 mins max) • What I did yesterday • What I am going to do today • Impediments http://www.scrum.org/scrum-guide • Transparency • Inspection • Adaptation 24 hours Sprint 1-4 weeks Shippable Product Product Backlog Sprint Backlog
  • 16. Scrum Components Roles: Product Owner Scrum Master The Team Artefacts: Product backlog Sprint backlog Remaining work Working software Definition of Done Planning board/Charts Time-boxed Events: Sprint Planning (1-4h) Sprint(1-4wk) Sprint Review (1-4h) Sprint Retrospective (1-3h) Daily Scrum (15m)
  • 17. Technical Implications • To support changing requirements we require flexible emergent design and architecture • To support changing design we need to be able to refactor and this requires automated test coverage, ideally TDD. • To support demonstration and potential deployment at the end of each increment we require Continuous Integration.
  • 18. SharePoint is Different • Need some up-front architecture decisions, certain types of artefact very difficult to back out once in production (e.g. list schema) • Tight integration with the underlying platform can make code inherently difficult to test • Platform is a driving factor in the solution design
  • 19. Code Coverage (and other dubious metrics) Your Custom Code SharePoint .NET SharePoint Unmanaged Code ASP.NET SQL Windows OS
  • 20. What is TDD? • Goes beyond Test-first • Tests drive the low-level design • Supports refactoring • Just a developer tool
  • 22. TDD Cycle write a failing test make test pass refactor requirements
  • 23. TDD rulebook • No code unless failing test • Write just enough code to pass test • No new test until green • Refactoring must not add functionality • Tests must be fast • Tests must be easy to run (i.e. automated) • Purpose of test should be clear • Tests should be independent (run in any order) • Test code is a first-class citizen…
  • 24. How does TDD work? • TDD is counter-intuitive • Tests facilitate refactoring • Refactoring facilitates incremental design • Failing tests pinpoint problems quickly • Fast (continuous) tests give immediate feedback • Tests should ideally isolate the code you are working on • Rapid feedback • Less bugs
  • 25. Refactoring • Clean up variable and function names for clarity • Make code more concise • Remove spaghetti code • Remove duplicate code • Extract methods to avoid oversize methods • Keep re-running the tests as you re-factor • If test fails then Ctrl-Z, Ctrl-Z, Ctrl-Z …
  • 27. Shopping List Story • As a team site user • I want my shopping list visible on the home page • So that I don’t forget stuff Acceptance Criteria: • Does a shopping list panel appear on the home page? • Does the panel show all items in the shopping list? • Are the items sorted alphabetically
  • 28. DEMO: TDD – INTRODUCTION
  • 29. TDD hints and tips • Beware excessive use of mocks • You don’t have to get everything right from the get-go • Don’t write meaningless tests – e.g. testing library functions, constructors, language features • Think of tests as a design tool • Fake it ‘til you make it • Tests are like pitons when climbing. You drive in the pitons above your head as you go – Kent Beck • Like source control and ALM, TDD is a professional developer’s tool – don’t dismiss it (Dunning-Kruger effect).
  • 30. Benefits of TDD • Bugs discovered faster • Better productivity (once the technique is learned) • Safe refactoring results in better code design • Cleaner design because enforces KISS and YAGNI • Improved code quality and confidence • Tests document the design • Easier to handle interruptions to “flow” • Incremental development • Guarantees test coverage • Enables future maintenance and further development by ensuring existing functionality is maintained (tests) • Strangely hypnotic, especially if you are listening to progressive dance music ;-)
  • 31. Drawbacks • Can be difficult to maintain discipline under pressure • Difficult in brownfield development • Difficult without management support • Excessive and trivial tests • False sense of security • Cost of maintaining tests • Not all development is equally suited to TDD • Not a silver bullet • Not appropriate for spikes or other non-production code • Note all code is easy to test (e.g. SharePoint!)
  • 32. Client-side testing • The new model – SharePoint-hosted Apps • Unit testing JavaScript • Faking the _api • MVVM data-binding patterns • Shallow integration (“unigration”) tests
  • 33. Options for client-side JavaScript testing • Ad-hoc tests (e.g. console logging) • QUnit (qunitjs.com) • TDD style • Jasmine • BDD style • Mocha • BDD or TDD style • PYO assertion library • UI tests (e.g. Selenium, VS UI tests)
  • 34. Running tests • Can run tests in a browser window • Chutzpah test runner • Command line and Visual Studio integration • Only supports Jasmine and Qunit • For Continuous Integration use PhantomJS • Headless browser • Chrome browser engine (WebKit) • Phantomjs.org • Use a cloud test service for “cross-browser test” • Includes device browsers
  • 35. Using QUnit • Create a simple web project in Visual Studio • Tests defined in JavaScript test files • Test page has div to show results • Run on any dev. machine - SharePoint not required module("Test the scoring logic"); app = window.app || {}; test("Score of -100/10 gives appropriate summary", function () { app.viewModel.numberQuestions = 10; app.viewModel.currentScore = -100; equal(app.viewModel.scoreMessage(), "Scoring error..."); });
  • 37. Continuous Integration (CI) • PowerShell scripting is the key • Script everything! • Strip back to new site collection on each test deployment • Rather than building from scratch every time, restore a base-lined content database first • Once your project goes live, you need to maintain two environments – one for test data and one using an imported live content database
  • 38. Deploying into production SharePoint CMS live environment Author Approve Publish Continuous content development process for artefacts SharePoint development environment Release-based development process – Features/Apps Deploy Release Test Build Develop
  • 39. CI Hints and Tips • Build a library of PowerShell functions • Design your functions so that they can be re-run – detect if data already exists or delete it • Use xml file to define configuration properties for each environment • Make sure everything is in source control!
  • 40. Conclusions • Agile continues to gain traction in the development community as a whole and brings many benefits • Still many misunderstandings about Agile methods • Can be a challenge for SharePoint development because we are building on an existing framework • Need management and team buy-in to make Agile work • Agile methods look simple, but actually quite difficult to implement effectively • A good idea to use an Agile coach or get training
  • 41. Recommended Reading: • www.extremeprogramming.org • “Clean Code – A Handbook of Agile Software Craftsmanship”, Robert C Martin • www.scrum.org – Scrum Guide • “The Art of Unit Testing”, Roy Osherove • “Test-Driven Development by Example”, Kent Beck • Lean-Agile Acceptance Test-Driven Development, Ken Pugh
  • 43. thank you. SHAREPOINT AND PROJECT CONFERENCE ADRIATICS ZAGREB, 10/15/2014 - 10/16/2014