the php way of tdd - think first, code later

38
TEST DRIVEN DEVELOPMENT Think first, code later, php way

Upload: hiraq-citra-m

Post on 07-Jul-2015

132 views

Category:

Technology


0 download

DESCRIPTION

A presentation about test driven development in php world

TRANSCRIPT

Page 1: The PHP Way Of TDD - Think First, Code Later

TEST DRIVEN DEVELOPMENTThink first, code later, php way

Page 2: The PHP Way Of TDD - Think First, Code Later

Schema

Page 3: The PHP Way Of TDD - Think First, Code Later

3 Factors1. Test2. Code3. Refactor

Result:1. Readable code2. Managed code

Page 4: The PHP Way Of TDD - Think First, Code Later

First Implement?

Page 5: The PHP Way Of TDD - Think First, Code Later

Second Implement?

Page 6: The PHP Way Of TDD - Think First, Code Later

Are you sure?

Page 7: The PHP Way Of TDD - Think First, Code Later

Source Code Tested?

Page 8: The PHP Way Of TDD - Think First, Code Later

How?User Stories:

As a guest, i want to go to homepage and want to see “hello World” message

Page 9: The PHP Way Of TDD - Think First, Code Later

Test Code<?php //cakephp way

$msg = $this->testAction(‘/’, array(‘return’ => ‘contents’));$this->assertEquals(‘hello World’, $msg);========================================================<?php //laravel way

$msg = $this->call(‘GET’, ‘/’);$this->assertEquals(‘hello World’, $msg);

Page 10: The PHP Way Of TDD - Think First, Code Later

Result?

remember: source code not exists yet! so it must be fail!

Page 11: The PHP Way Of TDD - Think First, Code Later

Implement Feature ~ CakePHP<?php //file: app/Controller/HomeController.php

class HomeController extends AppController { public function index() { $this->autoRender = false; echo ‘hello world’; }}

Page 12: The PHP Way Of TDD - Think First, Code Later

Implement Feature ~ Laravel<?php //file: app/routes.php

Route::get(‘/’, function() { return ‘hello world’;});

Page 13: The PHP Way Of TDD - Think First, Code Later

Result?

Page 14: The PHP Way Of TDD - Think First, Code Later

Programmer

Page 15: The PHP Way Of TDD - Think First, Code Later

Why?

‘hello world’ != ‘hello World’

Page 16: The PHP Way Of TDD - Think First, Code Later

Fix it!

Replace : ‘hello world’ with ‘hello World’

Page 17: The PHP Way Of TDD - Think First, Code Later

Test it!

Page 18: The PHP Way Of TDD - Think First, Code Later

Programmer

Page 19: The PHP Way Of TDD - Think First, Code Later

It’s just a simple test!

Simple doesn’t mean not to fail!

Page 20: The PHP Way Of TDD - Think First, Code Later

Complex? (example 1)

Page 21: The PHP Way Of TDD - Think First, Code Later

Complex ? (example 2)

Page 22: The PHP Way Of TDD - Think First, Code Later

Then?

Page 23: The PHP Way Of TDD - Think First, Code Later

Your boss?

Page 24: The PHP Way Of TDD - Think First, Code Later

the question is...

Page 25: The PHP Way Of TDD - Think First, Code Later

Good QualityGood Quality == Good BusinessGood Quality == More Happy CustomersGood Quality == More Happy Programmers

Happy Programmers == Readable Source CodeReadable Source Code == Good Quality

Page 26: The PHP Way Of TDD - Think First, Code Later

Time Management

CODE FIRST, TEST LATER == TIME LOSSTEST FIRST, CODE LATER == TIME INVESTMENT

Page 27: The PHP Way Of TDD - Think First, Code Later

Time Loss1. We don’t know bug2. We don’t know errors3. We don’t know fail validations!

Question: If you don’t know anything, are you sleeping or coding?

4. Test features? just open the browser!It’s 2014 now!!

Page 28: The PHP Way Of TDD - Think First, Code Later

Time Investment1. More fast we detect a bug, we can fix it

faster!2. More fast we know an error, we can fix it

faster!3. We control the code, not controlled by code!4. Test all features? One single hit => Enter!

Page 29: The PHP Way Of TDD - Think First, Code Later

Test All Features (cli)$ phpunit

Page 30: The PHP Way Of TDD - Think First, Code Later

Test Sub Features (cli)$ phpunit --testsuite FeatureA$ phpunit --testsuite FeatureB

Page 31: The PHP Way Of TDD - Think First, Code Later

ToolsPHPUnithttp://phpunit.de

PEARhttp://pear.php.net

Page 32: The PHP Way Of TDD - Think First, Code Later

MVC Framework Unit Test1. Controller2. Model3. View4. Library / Vendor /Package5. Helper

Page 33: The PHP Way Of TDD - Think First, Code Later

Forbidden Framework1. Developed not by test2. Not integrated with unit test3. Cannot test their own self!

Page 34: The PHP Way Of TDD - Think First, Code Later

Suggested Framework1. Laravel >= 4.12. CakePHP >= 2.4.5

Page 35: The PHP Way Of TDD - Think First, Code Later

Unit Test Environment1. OS: Linux Base (Ubuntu)2. PHP Error Level: error_reporting(-1) *all

Page 36: The PHP Way Of TDD - Think First, Code Later

Refactor

Page 37: The PHP Way Of TDD - Think First, Code Later

Programmer Assumptions

The real problem is not whether machines think but whether men do.

Page 38: The PHP Way Of TDD - Think First, Code Later

END - Happy Hunting