SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
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();!
Test First
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!!

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 

Kürzlich hochgeladen (20)

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 

Test First