

π€
Automated tests
@yjaaidi

π€
Automated tests
π
Less bugs
@yjaaidi

π€
Automated tests
β¨
Quality
π
Less bugs
Not Visible
Visible
@yjaaidi

π€
Automated tests
β¨
Quality
π
Less bugs
Not Visible
Visible
π₯΅
Stop testing
every change
manually
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
β¨
Quality
π
Less bugs
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
β¨
Quality
π
Less bugs
π
Faster time
to market
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Faster time
to market
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Faster time
to market
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
β»οΈ
Update
dependencies
automatically
(or frequently)
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
β»οΈ
Update
dependencies
automatically
(or frequently)
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
β»οΈ
Update
dependencies
automatically
(or frequently)
Not Visible
Visible
@yjaaidi

π₯΅
Stop testing
every change
manually
β‘οΈ
Faster
development
π€
Automated tests
πͺ
Confidence
β¨
Quality
π
Less bugs
π
Refactoring
π
Faster time
to market
β½οΈ
Collective
ownership
β»οΈ
Update
dependencies
automatically
(or frequently)
π₯³
Pleasure
Not Visible
Visible
@yjaaidi

Tests are the best documentation
@yjaaidi

π More surface
π¦ Symmetric
you get the exact doc of the version you are using
π Up-to-date
asDiagram('count')('should count the values of an observable', () => {
const source = hot('--a--b--c--|');
const expected = '-----------(x|)';
expectObservable(source.pipe(count())).toBe(expected, {x: 3});
});
@yjaaidi


Test-Driven Development
β°
Write tests first
@yjaaidi

Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
@yjaaidi

Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
@yjaaidi

Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
@yjaaidi

Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
@yjaaidi

π
Less code
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Relaxed implementation
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Relaxed implementation
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Relaxed implementation
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Relaxed implementation
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
Test-Driven Development
β°
Write tests first
π·ββοΈ
Focus on the feature
π
Relaxed implementation
π
Know when you are done
π
Avoid Artificial
Complexity
π―
Share intention
π
Early feedback
π
Not coupled
to implementation
π«
π
TDD
Addiction
@yjaaidi

π
Less code
π΅
Cheap
Refactoring
TDD Limitations
@yjaaidi

ππ»ββοΈ Doesn't enforce collective ownership
π Doesn't encourage small changes
π¦ Doesn't solve asymmetry
π«
Timeboxed TDD
@yjaaidi

β³
Reset timer
βοΈ
Timeout
π
Test
β¨οΈ
Code
β
OK
β
Commit
& Push
π₯
Revert
π¨
Fail
Few
minutes
Test && Commit || Revert
@yjaaidi

Lars Barlindhaug
Kent Beck
Ole Tjensvollβ Johannessen
initiated in Oslo π³π΄
by
@barlindh
@kentbeck
Oddmund StrΓΈmme
@jraregris

π‘ An idea from


Test && Commit || Revert
@yjaaidi

π
Test
β¨οΈ
Code
β
OK
β
Commit
& Push
π₯
Revert
π¨
Fail


π¨π»βπ« Web Dev, XP & Security Trainings
β
π» Remote Consulting Sessionsβ
π― Consulting & XP Coachingβ
@yjaaidi

Angular Air - Timeboxed TDD & TCR
By Younes
Angular Air - Timeboxed TDD & TCR
- 1,151