+ All Categories
Home > Software > SharePoint Development Tips and Ticks using TDD

SharePoint Development Tips and Ticks using TDD

Date post: 24-May-2015
Category:
Upload: sharepoint-saturday-new-jersey
View: 167 times
Download: 1 times
Share this document with a friend
Description:
Since last few years developer and architects are more talking about the value of Agile and Test Driven Development (TDD). As we see more and more SharePoint projects are developed using Agile but somehow TDD not fairly recognized but SharePoint is different. It need some up-front architecture decisions, certain types of artifact 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 because there is a big black box SharePoint object model involved. In this presentation and demo, want to explain tricks, mocking tools and challenges to implement TDD to an extent and get benefits of TDD.
Popular Tags:
19
ABOUT MYSELF Solutions Principal with Slalom Consulting (SharePoint Consulting Practice) having more than 10 years’ experience in system analysis, architecture, development and deployment of state-of-the-art IT solutions, working for diverse set of clients, including several of the largest financial institutions and supply management verticals in the US on Microsoft platform, with particular focus on implementing collaborative portal solutions utilizing SharePoint Products and Technologies. Do not Follow Me : @SanjivKSharma
Transcript
Page 1: SharePoint Development Tips and Ticks using TDD

ABOUT MYSELF

Solutions Principal with Slalom Consulting (SharePoint Consulting Practice) having more than 10 years’ experience in system analysis, architecture, development and deployment of state-of-the-art IT solutions, working for diverse set of clients, including several of the largest financial institutions and supply management verticals in the US on Microsoft platform, with particular focus on implementing collaborative portal solutions utilizing SharePoint Products and Technologies.

Do not Follow Me : @SanjivKSharma

Page 2: SharePoint Development Tips and Ticks using TDD

NEW JERSEY SHAREPOINT USER GROUP

• Different SharePoint discussions each month on various topics. Announced on meetup.com

• Meets 4th Tuesday of every month

• 6pm – 8pm

• Microsoft Office (MetroPark)

• 101 Wood Ave, Iselin, NJ 08830

• http://www.njspug.com

Page 3: SharePoint Development Tips and Ticks using TDD

THANK YOU EVENT

SPONSORS• Diamond & Platinum sponsors

have tables here in the Fireside Lounge

• Please visit them and inquire about their products & services

• Also to be eligible for prizes make sure to get your bingo card stamped

Page 4: SharePoint Development Tips and Ticks using TDD

• What is TDD – Intro and Misguided• Challenges with SharePoint• Unit Test against SharePoint – How ?• Tool Required to Implement• Demo• Pros and Cons - Conclusion

Agenda

Page 5: SharePoint Development Tips and Ticks using TDD

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: • First the developer writes an (initially failing)

automated test case that defines a desired improvement or new function,

• Then produces the minimum amount of code to pass that test, and

• Finally refactors the new code to acceptable standards

What is TDD

Page 6: SharePoint Development Tips and Ticks using TDD

Red- Green- Refactor Cycle• Red: Starting with a test, the test is red, because

the production code doesn’t even exist• Green: From developing the test, it is clear what

classes, fields and methods are required to satisfy the test. Production code is implemented until the test is green. Only the minimal implementation that turns the Unit Test to green shall be produced! No overhead code.• Refactor: After the expectations, expressed through

the test have been met by the code, it is time to refactor and apply the “Software Engineering Principles”

Page 7: SharePoint Development Tips and Ticks using TDD

Uncle Bob describing Test Driven Development in terms of three simple rules. They are:1. You are not allowed to write any production code

unless it is to make a failing unit test pass.2. You are not allowed to write any more of a unit test

than is sufficient to fail; and compilation failures are failures.

3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. (http://butunclebob.com/

ArticleS.UncleBob.TheThreeRulesOfTdd)

What is TDD………continued

Page 8: SharePoint Development Tips and Ticks using TDD

• No enough time to write the tests.• Testing isn’t my job, because …………..• Unit tests don’t help me, because …………..• There’s no need to test drive my code, because

…………..• Running the tests is a pain, because ………….. • I don’t like TDD, because …………..• TDD sucks because …………..

What is TDD………Completely Misguided

Page 9: SharePoint Development Tips and Ticks using TDD

This is a short (and certainly not complete) list of the benefits of TDD? • Minimizing the debugging time• Less bugs Better productivity• Improved code quality and confidence • Enables future enhancement by ensuring existing

functionality is maintained (tests)• Enforces loose-coupling• Any finally … Code is always working

What is TDD………Benefits

Page 10: SharePoint Development Tips and Ticks using TDD

Challenges with SharePoint

• 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

Page 11: SharePoint Development Tips and Ticks using TDD

Challenges with SharePoint……..more

• Ready-Only Mentality• Most of the SharePoint API does not implement any interface

Example:public static SPSite GetSiteObject(string url){

//Option 1 - New Objectreturn new SPSite(url);

//Option 2 - From Current Contextreturn SPContext.Current.Site;

}

Page 12: SharePoint Development Tips and Ticks using TDD

Challenges with SharePoint……..more

• Can be difficult to maintain discipline under pressure • Difficult in brownfield development • Difficult without management support

Page 13: SharePoint Development Tips and Ticks using TDD

Unit Test against SharePoint – How ?The usual suggestions provided by various MVPs:• Use the Model-View-Presenter (MVP) pattern to isolate your business

logic from the user interface and the data source.• Implement interfaces for your view classes and your services (such

as repository classes). • Can also use the Service Locator pattern to decouple your presenter

class from specific implementations of the services that your presenter uses (such as your repository class).

• Also you can use the any mocking framework to replace the calls to the SharePoint Object Model.

• Some also have suggested to use a local installation of SharePoint, populate it with test data, and unit test against it.

Page 14: SharePoint Development Tips and Ticks using TDD

Tool Required to ImplementMocking Frameworks for SharePoint Development• TypeMock : Mocks sealed objects, static methods and internal

constructors - required to access various SharePoint ObjectsEasy to learn, author and maintain API. Intuitive AAA (Arrange-Act-Assert) API.Professional customer support

The price• Microsoft Fake (previously known as Microsoft Mole) : Mocks sealed

objects and internal constructors - required to access various SharePoint Objects.

Intuitive authoring with Behaved Types – Available on in VS Premium (in addition to Ultimate).

For more info : http://blogs.msdn.com/b/bharry/archive/2013/01/30/announcing-visual-studio-2012-update-2-vs2012-2.aspx

Page 15: SharePoint Development Tips and Ticks using TDD

Demo

Page 16: SharePoint Development Tips and Ticks using TDD
Page 17: SharePoint Development Tips and Ticks using TDD

SharePoint Timer Job:1.Get the Items from list where the “EmailDate” is less than

today date.2.If the Retention Status is Email1/Email2 Send Email only3.If the Retention Status is "Archive"

a.Send Final Email. b.Perform action on the document to delete or archive based

on some metadata flag on some document property.

Page 18: SharePoint Development Tips and Ticks using TDD

Pros and Cons - ConclusionPros:

We have already discussed some benefits of the TDD, but

Cons:• Lots of plumbing - More code and complex project structures• Negative and Positive - how far to go with this is hard to define e.g

tests for invalid urls• People only test code they know works• People tend to use it as integration test rather than discrete unit

tests• Bug learning Curve

Page 19: SharePoint Development Tips and Ticks using TDD

ManualAutomated

and Manual

Automated Tools

Business Facing

Technology Facing

Su

pp

ort

ing

Te

am

Critiq

ue

Pro

du

ctFunctional

TestsExamplesStory TestsPrototypesStimulation

Unit TestsComponents Test

Exploratory TestsScenarios

Usability TestUser Acceptance

TestingAlpha/Beta

Performance and Load Testing

Security Testing


Recommended