π€
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
- 983