SlideShare a Scribd company logo
1 of 28
Download to read offline
iOS
Unit testing II
Liyao Chen @ KKBOX
Outlines
• External dependency
• 透過 Protocol 依賴注⼊入解套
• 透過隔離框架解套
External dependency
–Roy Osherove
是系統中的⼀一個對象,
被測試的程式碼會與其互動,但是你不能控制它。
External dependency
(⾦金迎 譯)
External dependency
(
External dependency
你跟著師⽗父去幫別⼈人佈線安裝電燈,師⽗父三兩下
就搞定了,然後請你確認有沒有裝好,請問你會
怎麼做?
打開開關看看電燈有沒有跟著亮

再關上開關看電燈有沒有跟著暗
External dependency
⼀一個⽉月後客⼾戶打來說電燈打不開,請你們去檢
查,你第⼀一時間會想到的問題是什麼?
可能開關壞掉了?
可能電線沒接好?
可能電線壞掉了?
External dependency
可能電線壞掉了?
可能開關壞掉了?
可能電線沒接好?
External dependency
External dependency
static NSTimeInterval const yearInterval = 60*60*24*30*12;
@interface LCWire ()
@property (strong, nonatomic) NSDate *expiryDate;
@end
@implementation LCWire
- (instancetype)init
{
if(self = [super init]){
// 製造⽇日期為 2010/10/10
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *manufacturedDate = [[NSCalendar currentCalendar] dateFromComponents:comps];
// 有效期限為兩年
_expiryDate = [manufacturedDate dateByAddingTimeInterval:yearInterval*2];
}
return self;
}
- (BOOL)isExpired
{
return [[NSDate date] timeIntervalSinceReferenceDate] > [self.expiryDate
timeIntervalSinceReferenceDate];
}
@end
Break dependency
Break dependency
Dummy class
Fake
Dummy class
A class that implements an interface
but contains fixed data and no logic.
– Sangdol
Dummy class
DEMO
1. Extract protocol
2. Use protocol injection
3. Dummy class
Dummy class
// LCWire.h
@protocol Expirable <NSObject>
- (BOOL)isExpired;
@end
@interface LCWire : NSObject <Expirable>
- (BOOL)isExpired;
@end
// LCRoomTests.m
// 永遠不會過期的電線
@interface LCNeverExpiredWire : NSObject <Expirable>
@end
@implementation LCNeverExpiredWire
- (BOOL)isExpired {
return NO;
}
@end
@interface LCRoomTests : XCTestCase
@end
@implementation LCRoomTests
- (void)testLightOnInit
{
id<Expirable> wire = [[LCNeverExpiredWire alloc] init];
LCRoom *room = [[LCRoom alloc] initWithLight:YES wire:wire];
XCTAssertTrue(room.isLight);
}
@end
Dummy class
- (void)testLightOnInit
{
LCWire *wire = [[LCWire alloc] init];
LCRoom *room = [[LCRoom alloc] initWithLight:YES wire:wire];
XCTAssertTrue(room.isLight);
}
- (void)testLightOnInit
{
id<Expirable> wire = [[LCNeverExpiredWire alloc] init];
LCRoom *room = [[LCRoom alloc] initWithLight:YES wire:wire];
XCTAssertTrue(room.isLight);
}
Dummy class
Break dependency
那那些不能透過軟體設
計控制的怎麼辦?
Break dependency
Mock
OCMock
Mock object
Mock - PartialMock()
- (void)testLightOnInit
{
// Mock ⼀一個永遠不會過期的電線
LCWire *wire = [[LCWire alloc] init];
id mockWire = OCMPartialMock(wire);
OCMStub([mockWire isExpired]).andReturn(NO);
LCRoom *room = [[LCRoom alloc] initWithLight:YES wire:wire];
XCTAssertTrue(room.isLight);
}
Mock
1. Mock [NSDate date]
2. Mock [NSUserDefault standardDefault]
3. Mock session
4. Mock different user in a test case
Mock singleton
- (void)testMockDate
{
NSDate *now = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *speficDate = [[NSCalendar currentCalendar] dateFromComponents:comps];
id mockDate = OCMClassMock([NSDate class]);
OCMStub([mockDate date]).andReturn(speficDate);
// Mock [NSDate date] 讓他回傳指定⽇日期, 也就是 Mock 現在時間
NSLog(@"now: %@, mockDate: %@",now, [NSDate date]);
}
- (void)testMockUserdefault
{
NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
id mockUserDefault = OCMPartialMock([NSUserDefaults standardUserDefaults]);
OCMStub([mockUserDefault objectForKey:@"userName"]).andReturn(@"Liyao Chen");
NSString *mockName = [[NSUserDefaults standardUserDefaults]
objectForKey:@"userName"];
NSLog(@"name: %@, mockName: %@", name, mockName);
}
Summary
• 發現程式缺陷才能解決
• 善⽤用依賴注⼊入改善程式架構
• 當測試有多個Mock時重新檢視設計
QnA
• API測試不是後端的⼯工作嗎?
• 什麼東⻄西⼀一定要測?
We are hiring!
@ KKBOX
Reference
• http://stackoverflow.com/questions/346372/
whats-the-difference-between-faking-mocking-
and-stubbing
Other links
• Sample code

https://github.com/gliyao/LCUnitTestsExample

More Related Content

Viewers also liked

саранчимэг цахим судалгаа 1
саранчимэг цахим судалгаа 1саранчимэг цахим судалгаа 1
саранчимэг цахим судалгаа 1saraa79
 
Learning Technologies Presentation 2011
Learning Technologies Presentation 2011Learning Technologies Presentation 2011
Learning Technologies Presentation 2011brownh2
 
ClassDojo guía para estudiantes
ClassDojo guía para estudiantesClassDojo guía para estudiantes
ClassDojo guía para estudiantesNahum Mota Martinez
 
Mod de viata sanatos 2
Mod de viata sanatos 2Mod de viata sanatos 2
Mod de viata sanatos 2Pishta Bmc
 
Trabajo nuevo 3
Trabajo nuevo 3Trabajo nuevo 3
Trabajo nuevo 3alejoxs
 
Business leaders' briefing 24.09.2014
Business leaders' briefing 24.09.2014Business leaders' briefing 24.09.2014
Business leaders' briefing 24.09.2014newcastlegateshead
 
Costume & Props
Costume & PropsCostume & Props
Costume & Propsnsasu94
 
irem waseem, economic system
irem waseem, economic systemirem waseem, economic system
irem waseem, economic systemIrem Waseem
 
After Dark (demented
After Dark (dementedAfter Dark (demented
After Dark (dementednsasu94
 
Tarragona romana
Tarragona romanaTarragona romana
Tarragona romanadavidmanx
 
plegable molecular
plegable molecularplegable molecular
plegable molecularHeyly
 
Partner update meeting 13.06.14 final
Partner update meeting 13.06.14 finalPartner update meeting 13.06.14 final
Partner update meeting 13.06.14 finalnewcastlegateshead
 
Daniela pict
Daniela pictDaniela pict
Daniela pictnsasu94
 

Viewers also liked (18)

саранчимэг цахим судалгаа 1
саранчимэг цахим судалгаа 1саранчимэг цахим судалгаа 1
саранчимэг цахим судалгаа 1
 
Learning Technologies Presentation 2011
Learning Technologies Presentation 2011Learning Technologies Presentation 2011
Learning Technologies Presentation 2011
 
ClassDojo guía para estudiantes
ClassDojo guía para estudiantesClassDojo guía para estudiantes
ClassDojo guía para estudiantes
 
Calterna
CalternaCalterna
Calterna
 
Mod de viata sanatos 2
Mod de viata sanatos 2Mod de viata sanatos 2
Mod de viata sanatos 2
 
Health System Transformation
Health System TransformationHealth System Transformation
Health System Transformation
 
Trabajo nuevo 3
Trabajo nuevo 3Trabajo nuevo 3
Trabajo nuevo 3
 
Business leaders' briefing 24.09.2014
Business leaders' briefing 24.09.2014Business leaders' briefing 24.09.2014
Business leaders' briefing 24.09.2014
 
Costume & Props
Costume & PropsCostume & Props
Costume & Props
 
Ti32 Data Sheet
Ti32 Data SheetTi32 Data Sheet
Ti32 Data Sheet
 
ProtectIV
ProtectIVProtectIV
ProtectIV
 
irem waseem, economic system
irem waseem, economic systemirem waseem, economic system
irem waseem, economic system
 
After Dark (demented
After Dark (dementedAfter Dark (demented
After Dark (demented
 
Tarragona romana
Tarragona romanaTarragona romana
Tarragona romana
 
plegable molecular
plegable molecularplegable molecular
plegable molecular
 
Partner update meeting 13.06.14 final
Partner update meeting 13.06.14 finalPartner update meeting 13.06.14 final
Partner update meeting 13.06.14 final
 
Ellis island
Ellis islandEllis island
Ellis island
 
Daniela pict
Daniela pictDaniela pict
Daniela pict
 

Similar to iOS Unit Testing - Break Dependencies with Protocols, Dummies, and Mocks

Concurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and GotchasConcurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and Gotchasamccullo
 
Resilience and chaos engineering
Resilience and chaos engineeringResilience and chaos engineering
Resilience and chaos engineeringEric Wyles
 
Mock Objects, Design and Dependency Inversion Principle
Mock Objects, Design and Dependency Inversion PrincipleMock Objects, Design and Dependency Inversion Principle
Mock Objects, Design and Dependency Inversion PrincipleP Heinonen
 
SiliconFailsafeForIoT_Doin
SiliconFailsafeForIoT_DoinSiliconFailsafeForIoT_Doin
SiliconFailsafeForIoT_DoinJonny Doin
 
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT Kharagpur
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT KharagpurSneak Peek into the Future with Prof. Indranil Sengupta, IIT Kharagpur
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT KharagpurPriyanka Aash
 
New and improved hacking oracle from web apps sumit sidharth
New and improved hacking oracle from web apps   sumit sidharthNew and improved hacking oracle from web apps   sumit sidharth
New and improved hacking oracle from web apps sumit sidharthowaspindia
 

Similar to iOS Unit Testing - Break Dependencies with Protocols, Dummies, and Mocks (6)

Concurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and GotchasConcurrency in Eclipse: Best Practices and Gotchas
Concurrency in Eclipse: Best Practices and Gotchas
 
Resilience and chaos engineering
Resilience and chaos engineeringResilience and chaos engineering
Resilience and chaos engineering
 
Mock Objects, Design and Dependency Inversion Principle
Mock Objects, Design and Dependency Inversion PrincipleMock Objects, Design and Dependency Inversion Principle
Mock Objects, Design and Dependency Inversion Principle
 
SiliconFailsafeForIoT_Doin
SiliconFailsafeForIoT_DoinSiliconFailsafeForIoT_Doin
SiliconFailsafeForIoT_Doin
 
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT Kharagpur
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT KharagpurSneak Peek into the Future with Prof. Indranil Sengupta, IIT Kharagpur
Sneak Peek into the Future with Prof. Indranil Sengupta, IIT Kharagpur
 
New and improved hacking oracle from web apps sumit sidharth
New and improved hacking oracle from web apps   sumit sidharthNew and improved hacking oracle from web apps   sumit sidharth
New and improved hacking oracle from web apps sumit sidharth
 

More from Liyao Chen

KKBOX WWDC17 Xcode IDE - Hardy
KKBOX WWDC17  Xcode IDE - HardyKKBOX WWDC17  Xcode IDE - Hardy
KKBOX WWDC17 Xcode IDE - HardyLiyao Chen
 
KKBOX WWDC17 Xcode debug - Oliver
KKBOX WWDC17  Xcode debug - OliverKKBOX WWDC17  Xcode debug - Oliver
KKBOX WWDC17 Xcode debug - OliverLiyao Chen
 
KKBOX WWDC17 WatchOS - Dada
KKBOX WWDC17  WatchOS  - DadaKKBOX WWDC17  WatchOS  - Dada
KKBOX WWDC17 WatchOS - DadaLiyao Chen
 
KKBOX WWDC17 UIKit Drag and Drop - Mario
KKBOX WWDC17  UIKit Drag and Drop - MarioKKBOX WWDC17  UIKit Drag and Drop - Mario
KKBOX WWDC17 UIKit Drag and Drop - MarioLiyao Chen
 
KKBOX WWDC17 UIKit - QQ
KKBOX WWDC17 UIKit - QQKKBOX WWDC17 UIKit - QQ
KKBOX WWDC17 UIKit - QQLiyao Chen
 
KKBOX WWDC17 Swift and Foundation - Liyao
KKBOX WWDC17 Swift and Foundation - LiyaoKKBOX WWDC17 Swift and Foundation - Liyao
KKBOX WWDC17 Swift and Foundation - LiyaoLiyao Chen
 
KKBOX WWDC17 SiriKit and CoreSpotlight - Seraph
KKBOX WWDC17  SiriKit and CoreSpotlight - SeraphKKBOX WWDC17  SiriKit and CoreSpotlight - Seraph
KKBOX WWDC17 SiriKit and CoreSpotlight - SeraphLiyao Chen
 
KKBOX WWDC17 Security - Antony
KKBOX WWDC17 Security - AntonyKKBOX WWDC17 Security - Antony
KKBOX WWDC17 Security - AntonyLiyao Chen
 
KKBOX WWDC17 Performance and Testing - Hokila
KKBOX WWDC17 Performance and Testing - HokilaKKBOX WWDC17 Performance and Testing - Hokila
KKBOX WWDC17 Performance and Testing - HokilaLiyao Chen
 
KKBOX WWDC17 Notification and Autolayout - Jefferey
KKBOX WWDC17 Notification and Autolayout - JeffereyKKBOX WWDC17 Notification and Autolayout - Jefferey
KKBOX WWDC17 Notification and Autolayout - JeffereyLiyao Chen
 
KKBOX WWDC17 Airplay 2 - Dolphin
KKBOX WWDC17 Airplay 2 - DolphinKKBOX WWDC17 Airplay 2 - Dolphin
KKBOX WWDC17 Airplay 2 - DolphinLiyao Chen
 
KKBOX WWDC17 Core Image - Daniel Tien
KKBOX WWDC17 Core Image - Daniel TienKKBOX WWDC17 Core Image - Daniel Tien
KKBOX WWDC17 Core Image - Daniel TienLiyao Chen
 
Auto Layout part 1
Auto Layout part 1Auto Layout part 1
Auto Layout part 1Liyao Chen
 
iOS Unit test getting stared
iOS Unit test getting starediOS Unit test getting stared
iOS Unit test getting staredLiyao Chen
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous IntegrationLiyao Chen
 
iOS Design to Code - Code
iOS Design to Code - CodeiOS Design to Code - Code
iOS Design to Code - CodeLiyao Chen
 
iOS Design to Code - Design
iOS Design to Code - DesigniOS Design to Code - Design
iOS Design to Code - DesignLiyao Chen
 
Beta testing with CI
Beta testing with CIBeta testing with CI
Beta testing with CILiyao Chen
 
PTTHOT x IDEAS_HACKATHON 2014
PTTHOT x IDEAS_HACKATHON 2014PTTHOT x IDEAS_HACKATHON 2014
PTTHOT x IDEAS_HACKATHON 2014Liyao Chen
 

More from Liyao Chen (20)

KKBOX WWDC17 Xcode IDE - Hardy
KKBOX WWDC17  Xcode IDE - HardyKKBOX WWDC17  Xcode IDE - Hardy
KKBOX WWDC17 Xcode IDE - Hardy
 
KKBOX WWDC17 Xcode debug - Oliver
KKBOX WWDC17  Xcode debug - OliverKKBOX WWDC17  Xcode debug - Oliver
KKBOX WWDC17 Xcode debug - Oliver
 
KKBOX WWDC17 WatchOS - Dada
KKBOX WWDC17  WatchOS  - DadaKKBOX WWDC17  WatchOS  - Dada
KKBOX WWDC17 WatchOS - Dada
 
KKBOX WWDC17 UIKit Drag and Drop - Mario
KKBOX WWDC17  UIKit Drag and Drop - MarioKKBOX WWDC17  UIKit Drag and Drop - Mario
KKBOX WWDC17 UIKit Drag and Drop - Mario
 
KKBOX WWDC17 UIKit - QQ
KKBOX WWDC17 UIKit - QQKKBOX WWDC17 UIKit - QQ
KKBOX WWDC17 UIKit - QQ
 
KKBOX WWDC17 Swift and Foundation - Liyao
KKBOX WWDC17 Swift and Foundation - LiyaoKKBOX WWDC17 Swift and Foundation - Liyao
KKBOX WWDC17 Swift and Foundation - Liyao
 
KKBOX WWDC17 SiriKit and CoreSpotlight - Seraph
KKBOX WWDC17  SiriKit and CoreSpotlight - SeraphKKBOX WWDC17  SiriKit and CoreSpotlight - Seraph
KKBOX WWDC17 SiriKit and CoreSpotlight - Seraph
 
KKBOX WWDC17 Security - Antony
KKBOX WWDC17 Security - AntonyKKBOX WWDC17 Security - Antony
KKBOX WWDC17 Security - Antony
 
KKBOX WWDC17 Performance and Testing - Hokila
KKBOX WWDC17 Performance and Testing - HokilaKKBOX WWDC17 Performance and Testing - Hokila
KKBOX WWDC17 Performance and Testing - Hokila
 
KKBOX WWDC17 Notification and Autolayout - Jefferey
KKBOX WWDC17 Notification and Autolayout - JeffereyKKBOX WWDC17 Notification and Autolayout - Jefferey
KKBOX WWDC17 Notification and Autolayout - Jefferey
 
KKBOX WWDC17 Airplay 2 - Dolphin
KKBOX WWDC17 Airplay 2 - DolphinKKBOX WWDC17 Airplay 2 - Dolphin
KKBOX WWDC17 Airplay 2 - Dolphin
 
KKBOX WWDC17 Core Image - Daniel Tien
KKBOX WWDC17 Core Image - Daniel TienKKBOX WWDC17 Core Image - Daniel Tien
KKBOX WWDC17 Core Image - Daniel Tien
 
Auto Layout part 1
Auto Layout part 1Auto Layout part 1
Auto Layout part 1
 
iOS Unit test getting stared
iOS Unit test getting starediOS Unit test getting stared
iOS Unit test getting stared
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous Integration
 
iOS Design to Code - Code
iOS Design to Code - CodeiOS Design to Code - Code
iOS Design to Code - Code
 
iOS Design to Code - Design
iOS Design to Code - DesigniOS Design to Code - Design
iOS Design to Code - Design
 
Beta testing with CI
Beta testing with CIBeta testing with CI
Beta testing with CI
 
PTTHOT x IDEAS_HACKATHON 2014
PTTHOT x IDEAS_HACKATHON 2014PTTHOT x IDEAS_HACKATHON 2014
PTTHOT x IDEAS_HACKATHON 2014
 
選擇
選擇選擇
選擇
 

Recently uploaded

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 

Recently uploaded (20)

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 

iOS Unit Testing - Break Dependencies with Protocols, Dummies, and Mocks