Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unit Testing (Drukwerkdeal Developer Meetup)
Search
Stefan Koopmanschap
December 12, 2014
Programming
0
180
Unit Testing (Drukwerkdeal Developer Meetup)
Slides van mijn presentatie over unit testing, zoals ik die gaf op de Drukwerkdeal Developer Meetup.
Stefan Koopmanschap
December 12, 2014
Tweet
Share
More Decks by Stefan Koopmanschap
See All by Stefan Koopmanschap
Domain-Driven Design: The Basics (SymfonyCon 2023, Brussels)
skoop
0
120
Domain-Driven Design: The Basics (Cakefest)
skoop
0
75
PHP Kitchen Nightmares
skoop
0
19
Domain Driven Design - The Basics (TechTuesday XXL, Tilburg)
skoop
0
76
7 Lessons You Can Learn From Disney Movies (SymfonyCon 2022)
skoop
0
230
Mental Health in the Workplace (SymfonyCon 2019, Amsterdam)
skoop
0
570
Mental Health in the Workplace (PHPugle)
skoop
0
56
Mental Health in the Workplace (DeventerPHP)
skoop
0
86
Mental Health in the workplace (PHPTilburg, 09-01-2019)
skoop
0
67
Other Decks in Programming
See All in Programming
Ruby製社内ツールのGo移行
bgpat
2
270
Enhancing Applications with Accessibility API
kishikawakatsumi
3
1k
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
280
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
Migrating to Signals: A Practical Workshop
manfredsteyer
PRO
0
290
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
object-oriented-conference-2024
fuwasegu
6
2k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
Creating Retro-Style Photos Using Swift
ski
1
370
孤独のCTOグルメという やや奇抜な企画をやった目的と効果
shoheimitani
3
1k
Deep Dive 大規模システムアーキテクチャ/開発組織エンジニアリング / Deep Dive Large-Scale System Architecture, Development Organization Engineering
nrslib
15
2.9k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.3k
Designing the Hi-DPI Web
ddemaree
275
33k
The Invisible Customer
myddelton
114
12k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
Six Lessons from altMBA
skipperchong
19
2.9k
A Philosophy of Restraint
colly
195
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
14
1.3k
Music & Morning Musume
bryan
39
5.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
Design by the Numbers
sachag
274
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
A designer walks into a library…
pauljervisheath
199
23k
Transcript
UNIT TESTING
None
DRUKWERKDEAL BEDANKT!
None
INGEWIKKELD
INGEWIKKELD WECAMP
INGEWIKKELD WECAMP PHPAMERSFOORT
INGEWIKKELD WECAMP PHPAMERSFOORT PHP.FRL
INGEWIKKELD WECAMP PHPAMERSFOORT PHP.FRL DUTCH WEB ALLIANCE
INGEWIKKELD WECAMP PHPAMERSFOORT PHP.FRL DUTCH WEB ALLIANCE ON AIR RADIO
None
WAT IS QA?
WAT IS KWALITEIT?
QA ▸ Unit Testing ▸ Functional Testing ▸ PHPMD ▸
PHPCPD ▸ PHPCodeSniffer ▸ PHPSecurityChecker
QA ...AND SO MUCH MORE
UNIT TESTING
None
UNIT TESTING ▸ We testen 1 specifieke "unit" van code
UNIT TESTING ▸ We testen 1 specifieke "unit" van code
▸ Code moet geisoleerd zijn
WAAROM UNIT TESTEN?
WAAROM UNIT TESTEN? ▸ Meer zekerheid over je code
WAAROM UNIT TESTEN? ▸ Meer zekerheid over je code ▸
Betere architectuur
WAAROM UNIT TESTEN? ▸ Meer zekerheid over je code ▸
Betere architectuur ▸ Productie breekt niet meer
WAAROM UNIT TESTEN? ▸ Meer zekerheid over je code ▸
Betere architectuur ▸ Productie breekt niet meer - als het goed is
WAAROM UNIT TESTEN? ▸ Meer zekerheid over je code ▸
Betere architectuur ▸ Productie breekt niet meer - als het goed is ▸ Het kost minder tijd
WAAROM NIET UNIT TESTEN?
FUNCTIONEEL TESTEN
None
FUNCTIONEEL TESTEN ▸ Niet alleen het wiel ▸ Niet alleen
de lamp HET GEHEEL TESTEN
None
TESTEN VAN FOUTEN ▸ Niet alleen voor functioneel testen
TESTEN VAN FOUTEN ▸ Niet alleen voor functioneel testen ▸
Juist ook voor unit testen
None
PHPUNIT
PHPUNIT ▸ Unit testing framework
PHPUNIT ▸ Unit testing framework ▸ Integratie met veel tools
EEN SIMPELE TEST
namespace Calculator; class Calculator { public function add($number1, $number2) {
return $number1 + $number2; } }
namespace Tests\Calculator; class CalculatorTest extends \PHPUnit_Framework_TestCase { public function testAdd()
{ $calculator = new \Calculator\Calculator(); $result = $calculator->add(1, 1); $this->assertEquals(2, $result); } }
None
DEPENDENCY INJECTION
DEPENDENCY INJECTION ▸ Geen gehardcode dependencies meer
DEPENDENCY INJECTION ▸ Geen gehardcode dependencies meer ▸ Dus niet
meer new Classname()
DEPENDENCY INJECTION ▸ Geen gehardcode dependencies meer ▸ Dus niet
meer new Classname() ▸ Via constructor, setters of methode
DEPENDENCY INJECTION namespace Service; class UserService { public function saveUser($user)
{ $db = new DatabaseAbstraction(); $db->save($user); } }
DEPENDENCY INJECTION class UserService { private $db; public function __construct($db)
{ $this->db = $db; } }
DEPENDENCY INJECTION public function saveUser($user) { $this->db->save($user); }
None
MOCK OBJECTS
MOCK OBJECTS ▸ Nep
MOCK OBJECTS ▸ Nep ▸ Doen net alsof ze echt
zijn
MOCK OBJECTS ▸ Nep ▸ Doen net alsof ze echt
zijn ▸ Gedrag kan gestuurd worden
MOCK OBJECTS ▸ Nep ▸ Doen net alsof ze echt
zijn ▸ Gedrag kan gestuurd worden ▸ Verwachtingen kunnen gecheck worden
None
CONTINUOUS INTEGRATION
CONTINUOUS INTEGRATION ▸ QA best practice
CONTINUOUS INTEGRATION ▸ QA best practice ▸ Regelmatig tests (en
andere checks) uitvoeren
CONTINUOUS INTEGRATION ▸ QA best practice ▸ Regelmatig tests (en
andere checks) uitvoeren ▸ Waarschuwing bij problemen
CONTINUOUS INTEGRATION ▸ Continu op je master branch
CONTINUOUS INTEGRATION ▸ Continu op je master branch ▸ Bij
iedere Pull Request op je PR branch
None
DEMO