SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Test First!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!
requirement -> code!

test!
requirement -> test!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
! Refactor!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
requirement -> test! <- code!
!
Test First!
!
Faster feedback!
Code coverage!
Effective tests!
Better Code!
Refactoring!
Productivity!
Documentation!
Confidence!
Test first?!
Everybody!!
Email validation!
/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/!
Valid email addresses!
email@domain.com!
firstname.lastname@domain.com!
email@subdomain.domain.com!
firstname+lastname@domain.com!
email@123.123.123.123!
email@[123.123.123.123]!
"email"@domain.com!
1234567890@domain.com!
email@domain-one.com!
_______@domain.com!
email@domain.name!
email@domain.co.jp!
firstname-lastname@domain.com!

Invalid email addresses!
#@%^%#$@#$@#.com!
@domain.com!
Joe Smith <email@domain.com>!
email.domain.com!
email@domain@domain.com!
.email@domain.com!
email.@domain.com!
email..email@domain.com!
email@domain!
email@-domain.com!
email@domain.web!
email@111.222.333.44444!
email@domain..com!
Merge load more data!
- (void)mergeData:(NSDictionary *)response!
intoStream:(NUSStream *)stream;!
Merge load more data!
testMergeData_ShouldUpdateLoadMoreUrl_WhenItExis
tsInTheResponse();!
!
testMergeData_ShouldClearExistingLoadMoreUrl_Whe
nItDoesNotExistInTheResponse();!
!
testMergeData_ShouldMergePYMKInOrder_WhenTheResp
onseHasPYMKData();!
!
testMergeData_ShouldNotCrash_WhenResponseDataHav
eEmptyValues();!
!

!

//edge case!
testMergeData_ShouldNotCrash_WhenResponseDataIsI
nvalid();!
Merge load more data!
testMergeData_ShouldUpdateLoadMoreUrl_WhenItExis
tsInTheResponse();!
!
testMergeData_ShouldClearExistingLoadMoreUrl_Whe
nItDoesNotExistInTheResponse();!
!
testMergeData_ShouldMergePYMKInOrder_WhenTheResp
onseHasPYMKData();!
!
testMergeData_ShouldNotCrash_WhenResponseDataHav
eEmptyValues();!
!

!

//edge case!
testMergeData_ShouldNotCrash_WhenResponseDataIsI
nvalid();!
Faster feedback!
Faster feedback!
The code you just wrote isn’t doing
what you think.!
The line you just removed will break
PYMK load more functionality.!
Are you crazy? If you remove that
conditional check, it would break apps
with > 7.0 iOS versions.!
Code coverage!
Code coverage!
function save(input) {!
if (isValid(input)) {!
if (lixEnabled()) {!
" " logger.info(‘new save’);!
newSave(input);!
} else {!
logger.info(‘old save’);!
if (input.type === ‘x’) {!
oldXSave(input);!
} else {!
oldYSave(input);!
}!
}!
}!
}!
Code coverage!

// SaveHelper.js!
function save(input);!
!
!
// SaveHelperSpec.js!
testSave();!
Code coverage!
// SaveHelper.js!
function save(input);!
!

!

!

!

!

// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
Code coverage!
// SaveHelper.js!
function save(input);!
!

!

!

!

// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
testSave_ShouldUseNewAPI_WhenLixEnabled();!
Code coverage!
// SaveHelper.js!
function save(input);!
!

!

!

// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
testSave_ShouldUseNewAPI_WhenLixEnabled();!
testSave_ShouldUseOldAPI_WhenLixDisabled();!
Code coverage!
// SaveHelper.js!
function save(input);!
!

!

// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
testSave_ShouldUseNewAPI_WhenLixEnabled();!
testSave_ShouldUseOldAPI_WhenLixDisabled();!
testSave_ShouldUseOldXAPI_WhenInputTypeIsX();!
Code coverage!
// SaveHelper.js!
function save(input);!
!
// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
testSave_ShouldUseNewAPI_WhenLixEnabled();!
testSave_ShouldUseOldAPI_WhenLixDisabled();!
testSave_ShouldUseOldXAPI_WhenInputTypeIsX();!
testSave_ShouldUseOldYAPI_WhenInputTypeIsY();!
Code coverage!
// SaveHelper.js!
function save(input);!
!
// SaveHelperSpec.js!
testSave_ShouldNotSave_WhenInputIsInvalid();!
testSave_ShouldUseNewAPI_WhenLixEnabled();!
testSave_ShouldUseOldAPI_WhenLixDisabled();!
testSave_ShouldUseOldXAPI_WhenInputTypeIsX();!
testSave_ShouldUseOldYAPI_WhenInputTypeIsY();!
Effective tests!

Fail when the functionality breaks!
!
KISS!
!
Test functionality, not the
implementation.!
!
Don’t repeat your code in test.!
Effective tests!
Fail when the functionality breaks!
// code!
paymentService = util.getPS();!
paymentService.submit();!
!
!

!

!

// unit test assertion!
util.stub(‘getPS’).returns(mockService);!
mockService.expect(‘submit’);!
Effective tests!
Fail when the functionality breaks!
// code!
paymentService = util.getPS();!
paymentService.submit();!
!
!
// unit test assertion!
util.stub(‘getPS’).returns(mockService);!
mockService.expect(‘submit’);!
!
forgot to verify!!
Effective tests!
Keep It Simple Stupid!
// unit test assertion!
assert(“m_sim2_guided_edit_photo_add_actionsh
eet_camera_tap_use_photo”, result);!
!
" " " " " " "(vs)!
!
assert(metricsRevisionPrefix + pageKey +
widget + actionVerb + name, result);!
Effective tests!
Test functionality, not the implementation.!
void addNewRow(row) {!
. . .!
row.setDisplay(“block”);!
row.setPaddingTop(0);!
row.setMargin(0);!
}!
!

!

!

!

unit test type 1!
verify(rowMock).setDisplay(“block”);!
verify(rowMock).setPaddingTop(0);!
Verify(rowMock).setMargin(0);!
Effective tests!
Test functionality, not the implementation.!
void addNewRow(row) {!
. . .!
row.setDisplay(“block”);!
row.setPaddingTop(0);!
row.setMargin(0);!
}!
!
unit test type 1!
verify(rowMock).setDisplay(“block”);!
verify(rowMock).setPaddingTop(0);!
Verify(rowMock).setMargin(0);!
!
unit test type 2!
assertTrue(lastRow.bottom === newRow.top);!
Effective tests!
Don’t repeat your code in the test!
String getDateForDisplay() {!
Date date = service.loadDate();!
SimpleDateFormat dateFormat !
= newSimpleDateFormat("yyyy-MM-dd z");!
return dateFormat.format(date);!
}!
!
// unit test!
assertEquals(“2014-02-02 PST”, result);!
!
assertEquals(new SimpleDateFormat(“yyyy-MM-dd
z”).format(expectedDate), result);!
Better code!
Testable!
!
Modular!
!
Loosely coupled!
!
Singletons !
!
Law of Demeter"!
!
Complexity!
Refactoring!
Restructuring code without
changing its functionality!
!
!
Refactoring now & later!
!
!
Migration projects!
Productivity!
Faster Feedback!
!
No wasting time with debugger!
!
Avoid dependencies!
!
Save time now and later!
!
It doesn’t slow you down!
Productivity!
Documentation!

Working examples of code!
Documentation!

Working examples of code!
Tests won’t get outdated!
Confidence!
When you develop new features!
When you handover your work!
Try it! And you’ll feel it!!
Test First!
!
Faster feedback!
Code coverage!
Effective tests!
Better Code!
Refactoring!
Productivity!
Documentation!
Confidence!
Thank you!!

Contenu connexe

Similaire à Test First

2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript Security2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript SecurityJohannes Hoppe
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web ApplicationsSeth McLaughlin
 
How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014Guillaume POTIER
 
Practical unit testing 2014
Practical unit testing 2014Practical unit testing 2014
Practical unit testing 2014Andrew Fray
 
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...Garage4hackers.com
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practiceintive
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend TestingNeil Crosby
 
RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!Gautam Rege
 
Zero to Testing in JavaScript
Zero to Testing in JavaScriptZero to Testing in JavaScript
Zero to Testing in JavaScriptpamselle
 
Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Oliver Klee
 
Unit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsUnit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsYnon Perek
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Spike Brehm
 
Model-Driven Testing For Agile Teams
Model-Driven Testing For Agile TeamsModel-Driven Testing For Agile Teams
Model-Driven Testing For Agile TeamsKerryKimbrough
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniqueAndrey Karpov
 
Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Oliver Klee
 
JAVASCRIPT TDD(Test driven Development) & Qunit Tutorial
JAVASCRIPT TDD(Test driven Development) & Qunit TutorialJAVASCRIPT TDD(Test driven Development) & Qunit Tutorial
JAVASCRIPT TDD(Test driven Development) & Qunit TutorialAnup Singh
 

Similaire à Test First (20)

2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript Security2013-06-25 - HTML5 & JavaScript Security
2013-06-25 - HTML5 & JavaScript Security
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web Applications
 
How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014
 
Practical unit testing 2014
Practical unit testing 2014Practical unit testing 2014
Practical unit testing 2014
 
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practice
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
Mocking - Visug session
Mocking - Visug sessionMocking - Visug session
Mocking - Visug session
 
RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!
 
Zero to Testing in JavaScript
Zero to Testing in JavaScriptZero to Testing in JavaScript
Zero to Testing in JavaScript
 
Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)
 
Writing clean code
Writing clean codeWriting clean code
Writing clean code
 
Unit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsUnit Testing JavaScript Applications
Unit Testing JavaScript Applications
 
Web Application Defences
Web Application DefencesWeb Application Defences
Web Application Defences
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
Model-Driven Testing For Agile Teams
Model-Driven Testing For Agile TeamsModel-Driven Testing For Agile Teams
Model-Driven Testing For Agile Teams
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis technique
 
Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)
 
JAVASCRIPT TDD(Test driven Development) & Qunit Tutorial
JAVASCRIPT TDD(Test driven Development) & Qunit TutorialJAVASCRIPT TDD(Test driven Development) & Qunit Tutorial
JAVASCRIPT TDD(Test driven Development) & Qunit Tutorial
 

Dernier

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 

Dernier (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

Test First