SlideShare a Scribd company logo
Connect + Learn = Grow
Dynamics under Control
Testing CRM from a 360 View
Wael Hamze
Ramon Tebar
Connect + Learn = Grow
Wael Hamze
• Enterprise Architect
• LinkedIn:
http://www.linkedin.com/in/waelhamze
Connect + Learn = Grow
Ramon Tebar
• Solution Architect
• Microsoft CRM MVP
• http://www.ramontebar.com
Connect + Learn = Grow
Dynamics under Control?
Connect + Learn = Grow
Testing from a 360 View?
Requirements
Design
Development
Test
Workflows
Common
Libraries
User
Interface
Plugins
Test
Test
Test
Test
Connect + Learn = Grow
Quality Requirements
• Capture Quality Requirements
– Clear, Unambiguous, Traceable
– Provide Use Cases
• Test your requirements
– No conflicts, Achievable, Business value
• Track your requirements
• Use your requirements as basis for the next
stages
Requirements Design Development Test
Connect + Learn = Grow
Demo
Tracking Requirements
Requirements Design Development Test
Connect + Learn = Grow
Design for Testability
Requirements Design Development Test
Common Per Solution
Plug-ins Workflows
External
Components
Common for All Solutions (Framework)
CRM Platform
Connect + Learn = Grow
Solution Structure
Requirements Design Development Test
Demo
Connect + Learn = Grow
Unit Testing
Dependency
1
Component
Dependency
2
Unit Tests
Mock 1 Mock 2
Requirements Design Development Test
Connect + Learn = Grow
Why Write Unit Tests?
• Validate all components work on their own
• Ability to Test Plug-ins & Custom Workflow
Activities without CRM Environment
• Ability to Test without Deployment
• Tests run much quicker
• Detect bugs very early and fix quickly
• Debug locally with Visual Studio
Requirements Design Development Test
Connect + Learn = Grow
Write Testable Code: Dependency Injection
Plugin
CRM
Service Provider
Uses
CRM
Platform
CRM
Service Provider
Creates
IServiceProviderPlugin
Uses
Implements
Creates
Requirements Design Development Test
Connect + Learn = Grow
Microsoft Fakes
• Framework for isolating code under test
released with .NET 4.5
• Create Mock object implementations for the
required interfaces (Stub) and classes (Shim)
• Mock any properties and methods by creating
standard .NET delegates
• Invoke the Mocked properties and methods
as part of your Unit Test
Requirements Design Development Test
Connect + Learn = Grow
How to test a plugin
using
Microsoft Fakes
Requirements Design Development Test
Demo
Connect + Learn = Grow
• It is definitely Possible
• It is definitely Helpful
• Too much effort using standard approach
Requirements Design Development Test
Unit Testing Comments
Connect + Learn = Grow
Unit Test StubIServiceProvider Plugin
Create
Setup Mocks
Create
Execute
Call
Verify / Assert
Requirements Design Development Test
Connect + Learn = Grow
Demo
How to test a plugin
using
xRM Test Framework
Requirements Design Development Test
Connect + Learn = Grow
Unit Test WF Activities
CRM Workflow Runtime
Worflow
Worflow
Workflow
Custom
Workflow
Activity
Requirements Design Development Test
Connect + Learn = Grow
Unit Test Mock<Extensions> Workflow Runtime
Create
Setup Mocks
Create + Inputs
Create + Inject Activity + Extensions
Execute
Workflow Activity
Invoke
Call
Verify
Outputs
Requirements Design Development Test
Connect + Learn = Grow
Demo
How to test a custom
workflow activity
using
XRM Test Framework
Requirements Design Development Test
Connect + Learn = Grow
JavaScript Unit Test
• There are already many JavaScript testing framework
(Jasmine, Qunit, UnitTestJS)
• Visual Studio does not provide “out-of-the-box” support
for JavaScript unit tests
• MS Test, the unit testing framework included in Visual
Studio, does not support JavaScript unit tests
• Avoid browser launchers: many of current solutions
require to launch the browser to execute unit tests
Requirements Design Development Test
Connect + Learn = Grow
JavaScript Unit Test: Challenges & Solutions
• Execute JavaScript unit tests with Visual Studio in
exactly the same way any other unit test
– JsTest.Net
• No Browser required
• Using MSTest
• Server-side builds
• Unit tests should be able to mock DOM operations,
CRM service calls and Dynamics Xrm.Page API
– Xrm.Page Script Library Template (CRM SDKTemplates)
Requirements Design Development Test
Connect + Learn = Grow
Demo
JavaScript
Unit Test
Requirements Design Development Test
Connect + Learn = Grow
Integration Testing
Dependency 1
Component
Dependency 2
Integration Tests
Dependency 3
S
c
o
p
e
Requirements Design Development Test
Connect + Learn = Grow
Why Write Integration Tests?
• Make sure Plug-ins & Custom Workflow
Activities work within the CRM Environment
• Make sure Deployment process works
• Create Automated Tests that be re-run to
detect Integration Issues between different
components in the same solution or other
solutions
Requirements Design Development Test
Connect + Learn = Grow
Plug-insIntegration
Test
Organization
Service
Pre-Validate
Plug-in
Pre-Operation
Plug-in
Platform
Post-
Operation
Plug-in
Asynchronous
Plug-inDB
Requirements Design Development Test
Connect + Learn = Grow
Custom Workflow Activities
Integration
Test
Integration Test Workflow
Inputs
Workflow
Activity
Assert
Pass Fail
Trigger
Check Status
Requirements Design Development Test
More verify
Connect + Learn = Grow
Requirements Design Development Test
Demo
Integration Test
Connect + Learn = Grow
Continuous Integration
Requirements Design Development Test
Local Build
Check In
Build
Daily Build
• Unit tests
• Integration tests
• Unit tests
• Unit tests
• Integration tests
• Functional Tests
• Load tests
• Performance tests
Connect + Learn = Grow
Requirements Design Development Test
Demo
Continuous Integration
Connect + Learn = Grow
Formal Manual Testing
• Testing CRM manually by going through a set
of well defined steps
• Steps should be derived from the
requirements
• Steps make up a test case that validates one
or more requirement
• Raising bugs when defects are found
Requirements Design Development Test
Connect + Learn = Grow
Why do Manual Testing?
• Test for things that can’t be detected using
Unit or Integration Tests
– User Interface
– User Experience
– End to End use case execution
• Added human confidence
• System meets requirements
Requirements Design Development Test
Connect + Learn = Grow
Requirements Design Development Test
Demo
Manual Test
using
Microsoft Test Manager
Connect + Learn = Grow
Automating Manual Tests
• Once manual tests are stable consider automating
them to reduce testing time and focus on new
requirements
• Use Action Recording to record your Manual Test
• Convert Action Recording to Automated Coded UI
Tests that simulate user actions
• Run your Automated Tests as part of your
Continuous Integration
Requirements Design Development Test
Connect + Learn = Grow
Requirements Design Development Test
Demo
Coded UI Test
Connect + Learn = Grow
Web Performance Tests
• Test the performance of the system by
measuring HTTP response times required
to perform a certain use case
• Detect any bottle necks in the system
• Ensure system meets any non functional
SLA
Requirements Design Development Test
Connect + Learn = Grow
Load Tests
• Test performance of the system under a
typical or extreme user load using a mix of
different types of tests
• Ensure users get reasonable performance
under load
• Ensure system doesn’t crash under load
• Ensure system performs as expended under
load
Requirements Design Development Test
Connect + Learn = Grow
What is a good Test Balance?
Manual
Tests
Automated
Manual Tests
Integration Tests
Unit Tests
Connect + Learn = Grow
Conclusion
• Think about Testing all the way
• Test as Early as Possible
– Increased Confidence
– Detect Bugs Early -> Easier to Fix
– Improve Quality
– Happy Users
• Automate your Testing
• Use xRM Dev Framework to Improve Productivity
Connect + Learn = Grow
xRM Dev Framework
• Core Libraries
• Testing Platform for CRM components
• Continuous Integration TFS Templates and
Libraries
• Visual Studio Templates and Productivity
Tools
• http://xrmdevframework.codeplex.com

More Related Content

What's hot

Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Wael Hamze
 
DevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
DevOps for Dynamics 365/CRM - Summit EMEA 2017 AmsterdamDevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
DevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
Wael Hamze
 
Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014
Wael Hamze
 
Continuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
Continuous Delivery with Dynamics CRM - extremeCRM 2014 BarcelonaContinuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
Continuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
Wael Hamze
 
CRM Saturday: DevOps with Jonas Rapp
CRM Saturday: DevOps with Jonas RappCRM Saturday: DevOps with Jonas Rapp
CRM Saturday: DevOps with Jonas Rapp
Jonas Rapp
 
Team Foundation Server Demo
Team Foundation Server DemoTeam Foundation Server Demo
Team Foundation Server Demo
phase2int
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)
Alexis Williams
 
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce PlatformIntroduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Salesforce Developers
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
Abhinav Gupta
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
Mehdi Khalili
 
Tfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and TricksTfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and Tricks
InCycleSoftware
 
Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013
Kobi Moraz
 
Ordina SOFTC Presentation - Deployment with TFS Build and Workflow
Ordina SOFTC Presentation - Deployment with TFS Build and WorkflowOrdina SOFTC Presentation - Deployment with TFS Build and Workflow
Ordina SOFTC Presentation - Deployment with TFS Build and Workflow
Ordina Belgium
 
Team Development on Force.com with Github and Ant
Team Development on Force.com with Github and AntTeam Development on Force.com with Github and Ant
Team Development on Force.com with Github and Ant
Salesforce Developers
 
Release Management in TFS 2015
Release Management in TFS 2015Release Management in TFS 2015
Release Management in TFS 2015
InCycleSoftware
 
[Curitiba DEV DAY] - Novidades do TFS 2015
[Curitiba DEV DAY] -  Novidades do TFS 2015[Curitiba DEV DAY] -  Novidades do TFS 2015
[Curitiba DEV DAY] - Novidades do TFS 2015
Leandro Prado
 
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler FramworksSalesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
Sumitkumar Shingavi
 
Enhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment HubEnhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment Hub
Salesforce Developers
 
Managing Your Batch and Scheduled Apex Processes with Relax
Managing Your Batch and Scheduled Apex Processes with RelaxManaging Your Batch and Scheduled Apex Processes with Relax
Managing Your Batch and Scheduled Apex Processes with Relax
Salesforce Developers
 
Integration Testing in AEM
Integration Testing in AEMIntegration Testing in AEM
Integration Testing in AEM
connectwebex
 

What's hot (20)

Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
Silverlight & Microsoft CRM Development - extremeCRM Berlin 2012
 
DevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
DevOps for Dynamics 365/CRM - Summit EMEA 2017 AmsterdamDevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
DevOps for Dynamics 365/CRM - Summit EMEA 2017 Amsterdam
 
Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014Automated Testing for Dynamics CRM 4 - CRMUG 2014
Automated Testing for Dynamics CRM 4 - CRMUG 2014
 
Continuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
Continuous Delivery with Dynamics CRM - extremeCRM 2014 BarcelonaContinuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
Continuous Delivery with Dynamics CRM - extremeCRM 2014 Barcelona
 
CRM Saturday: DevOps with Jonas Rapp
CRM Saturday: DevOps with Jonas RappCRM Saturday: DevOps with Jonas Rapp
CRM Saturday: DevOps with Jonas Rapp
 
Team Foundation Server Demo
Team Foundation Server DemoTeam Foundation Server Demo
Team Foundation Server Demo
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)
 
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce PlatformIntroduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce Platform
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
 
Tfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and TricksTfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and Tricks
 
Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013
 
Ordina SOFTC Presentation - Deployment with TFS Build and Workflow
Ordina SOFTC Presentation - Deployment with TFS Build and WorkflowOrdina SOFTC Presentation - Deployment with TFS Build and Workflow
Ordina SOFTC Presentation - Deployment with TFS Build and Workflow
 
Team Development on Force.com with Github and Ant
Team Development on Force.com with Github and AntTeam Development on Force.com with Github and Ant
Team Development on Force.com with Github and Ant
 
Release Management in TFS 2015
Release Management in TFS 2015Release Management in TFS 2015
Release Management in TFS 2015
 
[Curitiba DEV DAY] - Novidades do TFS 2015
[Curitiba DEV DAY] -  Novidades do TFS 2015[Curitiba DEV DAY] -  Novidades do TFS 2015
[Curitiba DEV DAY] - Novidades do TFS 2015
 
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler FramworksSalesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
Salesforce Meetup 18 April 2015 - Apex Trigger & Scheduler Framworks
 
Enhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment HubEnhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment Hub
 
Managing Your Batch and Scheduled Apex Processes with Relax
Managing Your Batch and Scheduled Apex Processes with RelaxManaging Your Batch and Scheduled Apex Processes with Relax
Managing Your Batch and Scheduled Apex Processes with Relax
 
Integration Testing in AEM
Integration Testing in AEMIntegration Testing in AEM
Integration Testing in AEM
 

Similar to Testing CRM from a 360 View - extremeCRM Rome 2013

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
Jeremy Likness
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous Testing
TechWell
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
Shalu Ahuja
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
Acquia
 
Test Early, Test Often, Test Left
Test Early, Test Often, Test LeftTest Early, Test Often, Test Left
Test Early, Test Often, Test Left
SmartBear
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
Robbie Minshall
 
Salesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABITSalesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABIT
Vishnu Raju Datla
 
Accelerate Software Delivery with DevOps
Accelerate Software Delivery with DevOpsAccelerate Software Delivery with DevOps
Accelerate Software Delivery with DevOps
Alan Kan
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
DevOps for Enterprise Systems
 
Agile testing
Agile testingAgile testing
Agile testing
Raj Indugula
 
Shaik Azaharuddin Resume updated
Shaik Azaharuddin Resume updatedShaik Azaharuddin Resume updated
Shaik Azaharuddin Resume updated
shaik azaharuddin
 
Visual Studio ALM and DevOps Tools Walkthrough
Visual Studio ALM and DevOps Tools WalkthroughVisual Studio ALM and DevOps Tools Walkthrough
Visual Studio ALM and DevOps Tools Walkthrough
Angela Dugan
 
A Roadmap to Enterprise Quality
A Roadmap to Enterprise QualityA Roadmap to Enterprise Quality
A Roadmap to Enterprise Quality
Jeff Bramwell
 
Best Practices in Testing Force.com Application
Best Practices in Testing Force.com ApplicationBest Practices in Testing Force.com Application
Best Practices in Testing Force.com Application
Emtec Inc.
 
Leading the Transformation
Leading the TransformationLeading the Transformation
Leading the Transformation
XebiaLabs
 
Visual Studio ALM
Visual Studio ALMVisual Studio ALM
Visual Studio ALM
Abhimanyu Singhal
 
Visual Studio 2010 Agile Tools (overview)
Visual Studio 2010 Agile Tools (overview)Visual Studio 2010 Agile Tools (overview)
Visual Studio 2010 Agile Tools (overview)
Alexei Govorine
 
Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?
Intechnica
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
QA or the Highway
 
Microsoft Stack Visual Studio 2010 Overview
Microsoft  Stack   Visual Studio 2010 OverviewMicrosoft  Stack   Visual Studio 2010 Overview
Microsoft Stack Visual Studio 2010 Overview
rfennell
 

Similar to Testing CRM from a 360 View - extremeCRM Rome 2013 (20)

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
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous Testing
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
How to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated TestingHow to Build and Maintain Quality Drupal Sites with Automated Testing
How to Build and Maintain Quality Drupal Sites with Automated Testing
 
Test Early, Test Often, Test Left
Test Early, Test Often, Test LeftTest Early, Test Often, Test Left
Test Early, Test Often, Test Left
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Salesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABITSalesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABIT
 
Accelerate Software Delivery with DevOps
Accelerate Software Delivery with DevOpsAccelerate Software Delivery with DevOps
Accelerate Software Delivery with DevOps
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
 
Agile testing
Agile testingAgile testing
Agile testing
 
Shaik Azaharuddin Resume updated
Shaik Azaharuddin Resume updatedShaik Azaharuddin Resume updated
Shaik Azaharuddin Resume updated
 
Visual Studio ALM and DevOps Tools Walkthrough
Visual Studio ALM and DevOps Tools WalkthroughVisual Studio ALM and DevOps Tools Walkthrough
Visual Studio ALM and DevOps Tools Walkthrough
 
A Roadmap to Enterprise Quality
A Roadmap to Enterprise QualityA Roadmap to Enterprise Quality
A Roadmap to Enterprise Quality
 
Best Practices in Testing Force.com Application
Best Practices in Testing Force.com ApplicationBest Practices in Testing Force.com Application
Best Practices in Testing Force.com Application
 
Leading the Transformation
Leading the TransformationLeading the Transformation
Leading the Transformation
 
Visual Studio ALM
Visual Studio ALMVisual Studio ALM
Visual Studio ALM
 
Visual Studio 2010 Agile Tools (overview)
Visual Studio 2010 Agile Tools (overview)Visual Studio 2010 Agile Tools (overview)
Visual Studio 2010 Agile Tools (overview)
 
Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
Microsoft Stack Visual Studio 2010 Overview
Microsoft  Stack   Visual Studio 2010 OverviewMicrosoft  Stack   Visual Studio 2010 Overview
Microsoft Stack Visual Studio 2010 Overview
 

Recently uploaded

The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
UiPathCommunity
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 

Recently uploaded (20)

The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 

Testing CRM from a 360 View - extremeCRM Rome 2013

  • 1. Connect + Learn = Grow Dynamics under Control Testing CRM from a 360 View Wael Hamze Ramon Tebar
  • 2. Connect + Learn = Grow Wael Hamze • Enterprise Architect • LinkedIn: http://www.linkedin.com/in/waelhamze
  • 3. Connect + Learn = Grow Ramon Tebar • Solution Architect • Microsoft CRM MVP • http://www.ramontebar.com
  • 4. Connect + Learn = Grow Dynamics under Control?
  • 5. Connect + Learn = Grow Testing from a 360 View? Requirements Design Development Test Workflows Common Libraries User Interface Plugins Test Test Test Test
  • 6. Connect + Learn = Grow Quality Requirements • Capture Quality Requirements – Clear, Unambiguous, Traceable – Provide Use Cases • Test your requirements – No conflicts, Achievable, Business value • Track your requirements • Use your requirements as basis for the next stages Requirements Design Development Test
  • 7. Connect + Learn = Grow Demo Tracking Requirements Requirements Design Development Test
  • 8. Connect + Learn = Grow Design for Testability Requirements Design Development Test Common Per Solution Plug-ins Workflows External Components Common for All Solutions (Framework) CRM Platform
  • 9. Connect + Learn = Grow Solution Structure Requirements Design Development Test Demo
  • 10. Connect + Learn = Grow Unit Testing Dependency 1 Component Dependency 2 Unit Tests Mock 1 Mock 2 Requirements Design Development Test
  • 11. Connect + Learn = Grow Why Write Unit Tests? • Validate all components work on their own • Ability to Test Plug-ins & Custom Workflow Activities without CRM Environment • Ability to Test without Deployment • Tests run much quicker • Detect bugs very early and fix quickly • Debug locally with Visual Studio Requirements Design Development Test
  • 12. Connect + Learn = Grow Write Testable Code: Dependency Injection Plugin CRM Service Provider Uses CRM Platform CRM Service Provider Creates IServiceProviderPlugin Uses Implements Creates Requirements Design Development Test
  • 13. Connect + Learn = Grow Microsoft Fakes • Framework for isolating code under test released with .NET 4.5 • Create Mock object implementations for the required interfaces (Stub) and classes (Shim) • Mock any properties and methods by creating standard .NET delegates • Invoke the Mocked properties and methods as part of your Unit Test Requirements Design Development Test
  • 14. Connect + Learn = Grow How to test a plugin using Microsoft Fakes Requirements Design Development Test Demo
  • 15. Connect + Learn = Grow • It is definitely Possible • It is definitely Helpful • Too much effort using standard approach Requirements Design Development Test Unit Testing Comments
  • 16. Connect + Learn = Grow Unit Test StubIServiceProvider Plugin Create Setup Mocks Create Execute Call Verify / Assert Requirements Design Development Test
  • 17. Connect + Learn = Grow Demo How to test a plugin using xRM Test Framework Requirements Design Development Test
  • 18. Connect + Learn = Grow Unit Test WF Activities CRM Workflow Runtime Worflow Worflow Workflow Custom Workflow Activity Requirements Design Development Test
  • 19. Connect + Learn = Grow Unit Test Mock<Extensions> Workflow Runtime Create Setup Mocks Create + Inputs Create + Inject Activity + Extensions Execute Workflow Activity Invoke Call Verify Outputs Requirements Design Development Test
  • 20. Connect + Learn = Grow Demo How to test a custom workflow activity using XRM Test Framework Requirements Design Development Test
  • 21. Connect + Learn = Grow JavaScript Unit Test • There are already many JavaScript testing framework (Jasmine, Qunit, UnitTestJS) • Visual Studio does not provide “out-of-the-box” support for JavaScript unit tests • MS Test, the unit testing framework included in Visual Studio, does not support JavaScript unit tests • Avoid browser launchers: many of current solutions require to launch the browser to execute unit tests Requirements Design Development Test
  • 22. Connect + Learn = Grow JavaScript Unit Test: Challenges & Solutions • Execute JavaScript unit tests with Visual Studio in exactly the same way any other unit test – JsTest.Net • No Browser required • Using MSTest • Server-side builds • Unit tests should be able to mock DOM operations, CRM service calls and Dynamics Xrm.Page API – Xrm.Page Script Library Template (CRM SDKTemplates) Requirements Design Development Test
  • 23. Connect + Learn = Grow Demo JavaScript Unit Test Requirements Design Development Test
  • 24. Connect + Learn = Grow Integration Testing Dependency 1 Component Dependency 2 Integration Tests Dependency 3 S c o p e Requirements Design Development Test
  • 25. Connect + Learn = Grow Why Write Integration Tests? • Make sure Plug-ins & Custom Workflow Activities work within the CRM Environment • Make sure Deployment process works • Create Automated Tests that be re-run to detect Integration Issues between different components in the same solution or other solutions Requirements Design Development Test
  • 26. Connect + Learn = Grow Plug-insIntegration Test Organization Service Pre-Validate Plug-in Pre-Operation Plug-in Platform Post- Operation Plug-in Asynchronous Plug-inDB Requirements Design Development Test
  • 27. Connect + Learn = Grow Custom Workflow Activities Integration Test Integration Test Workflow Inputs Workflow Activity Assert Pass Fail Trigger Check Status Requirements Design Development Test More verify
  • 28. Connect + Learn = Grow Requirements Design Development Test Demo Integration Test
  • 29. Connect + Learn = Grow Continuous Integration Requirements Design Development Test Local Build Check In Build Daily Build • Unit tests • Integration tests • Unit tests • Unit tests • Integration tests • Functional Tests • Load tests • Performance tests
  • 30. Connect + Learn = Grow Requirements Design Development Test Demo Continuous Integration
  • 31. Connect + Learn = Grow Formal Manual Testing • Testing CRM manually by going through a set of well defined steps • Steps should be derived from the requirements • Steps make up a test case that validates one or more requirement • Raising bugs when defects are found Requirements Design Development Test
  • 32. Connect + Learn = Grow Why do Manual Testing? • Test for things that can’t be detected using Unit or Integration Tests – User Interface – User Experience – End to End use case execution • Added human confidence • System meets requirements Requirements Design Development Test
  • 33. Connect + Learn = Grow Requirements Design Development Test Demo Manual Test using Microsoft Test Manager
  • 34. Connect + Learn = Grow Automating Manual Tests • Once manual tests are stable consider automating them to reduce testing time and focus on new requirements • Use Action Recording to record your Manual Test • Convert Action Recording to Automated Coded UI Tests that simulate user actions • Run your Automated Tests as part of your Continuous Integration Requirements Design Development Test
  • 35. Connect + Learn = Grow Requirements Design Development Test Demo Coded UI Test
  • 36. Connect + Learn = Grow Web Performance Tests • Test the performance of the system by measuring HTTP response times required to perform a certain use case • Detect any bottle necks in the system • Ensure system meets any non functional SLA Requirements Design Development Test
  • 37. Connect + Learn = Grow Load Tests • Test performance of the system under a typical or extreme user load using a mix of different types of tests • Ensure users get reasonable performance under load • Ensure system doesn’t crash under load • Ensure system performs as expended under load Requirements Design Development Test
  • 38. Connect + Learn = Grow What is a good Test Balance? Manual Tests Automated Manual Tests Integration Tests Unit Tests
  • 39. Connect + Learn = Grow Conclusion • Think about Testing all the way • Test as Early as Possible – Increased Confidence – Detect Bugs Early -> Easier to Fix – Improve Quality – Happy Users • Automate your Testing • Use xRM Dev Framework to Improve Productivity
  • 40. Connect + Learn = Grow xRM Dev Framework • Core Libraries • Testing Platform for CRM components • Continuous Integration TFS Templates and Libraries • Visual Studio Templates and Productivity Tools • http://xrmdevframework.codeplex.com