SlideShare una empresa de Scribd logo
TDD & PHPUnit
PHPSevilla
Sobre Nosotros
Sergio Elvira Perez
Maxfire
Senior Software Engineer
@Emergya
Roberto Becerra Jimenez
Roberb
Senior Software Engineer
@Emergya
Índice
● TDD
○ Qué es
○ Ciclo de desarrollo
○ Tests finales
○ FDD vs TDD
● PHPUnit
○ Qué es
○ Instalación
○ Uso
○ Ejemplos
Qué es TDD
● Desarrollo guiado por pruebas de software, o
Test-driven development (TDD) es una práctica
de ingeniería de software que involucra otras
dos prácticas:
○ Escribir las pruebas (Test First Development).
○ Refactorización (Refactoring).
Qué es TDD II
● El sistema que se
programa tiene que ser
muy Flexible.
● Cada prueba será
pequeña.
Qué es TDD III
Ciclo de desarrollo
1. Elegir un requisito.
2. Escribir una prueba
3. Verificar que la prueba falla
4. Escribir la implementación
5. Ejecutar las pruebas automatizadas
6. Eliminación de duplicación (Refactorizar)
7. Actualización de la lista de requisitos
Test finales
Testing via the xUnit Framework.
FDD
Es un enfoque de desarrollo ágil de software desarrollado por Jeff De
Luca y Peter Coad. Los desarrolladores se agrupan en dos tipos, "dueños
de clases" o "programadores jefe".
El proceso del diseño y construcción comprende cinco fases:
1. Desarrollar un modelo global;
2. Construir una lista de funcionalidades;
3. Planificar por funcionalidad;
4. Diseñar por funcionalidad;
5. Construir por funcionalidad.
TDD vs FDD (ventajas)
TDD FDD
1.- La minimización del número de defectos que llegan al
software en fase de producción.
1.- Rápida respuesta a cambios de
requisitos
2.- Optimización en ejecución de funciones 2.- Trabajo conjunto entre el cliente y el
equipo de desarrollo
3.- La producción de software modular 3.- Minimiza los costos frente a cambios.
TDD vs FDD (inconvenientes)
TDD FDD
Interfaces Gráfica de usuario (GUIs), solución parcial. Falta de documentación del diseño.
Ya que no todos miden los tiempos de proyecto Problemas derivados de la comunicación
oral
Bases de datos. Falta de reusabilidad.
Qué es PHPUnit
PHPUnit es un framework de testing para PHP
¿Por qué usar PHPUnit?
“Todos los programadores cometen errores, pero la diferencia entre los buenos
programadores y los malos programadores es que los buenos programadores
prueban su código para encontrar esos errores lo más pronto posible“
Sebastian Bergmann creador de PHPUnit
Instalación
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version
Composer
"require-dev": {
"phpunit/phpunit": "5.6.*"
}
}
composer.json
composer install
Uso
<?php
class Money
{
private $amount;
public function __construct($amount)
{
$this->amount = $amount;
}
public function getAmount()
{
return $this->amount;
}
public function negate()
{
return new Money(-1 * $this->amount);
}
}
<?php
use PHPUnitFrameworkTestCase;
class MoneyTest extends TestCase
{
// ...
public function testCanBeNegated()
{
// Arrange
$a = new Money(1);
// Act
$b = $a->negate();
// Assert
$this->assertEquals(-1, $b->getAmount());
}
}
Uso
setUp()
Contiene el código que se va a ejecutar justo antes de los tests
tearDown()
Contiene el código que se va a ejecutar justo después de los tests
Uso
Assertions
Existe una gran cantidad de Assertions con los que podremos comprobar gran cantidad de
situaciones en nuestros tests.
Sólo veremos algunos ejemplos en esta presentación, aquí podemos encontrar todos los
existentes.
● assertEquals(mixed $expected, mixed $actual[, string $message = ''])
Se lanza un error con el mensaje $message en el caso de que $actual sea diferente a
$expected.
● assertFalse(bool $condition[, string $message = ''])
Se lanza un error con el mensaje $message en caso de que $condition no sea false.
● assertCount($expectedCount, $haystack[, string $message = ''])
Se lanza un error con el mensaje $message en caso de que el array $haystack no
contenga el número de elementos $expectedCount
Uso
<?php
use PHPUnitFrameworkTestCase;
class XTest extends TestCase
{
public function setUp(){
// defines initial state
}
public function tearDown(){
// defines final state
}
public function test1() {
// … assertions
}
public function testN() {
// … assertions
}
}
Uso
Ejecución
phpunit path/to/test/file
Test suite
phpunit path/to/test/file --filter test
Test concreto
Uso
Ejecución
$~ phpunit tests/NumberTest.php
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.
.........................
Time: 208 ms, Memory: 14.00Mb
OK (25 tests, 175 assertions)
Resultados
Ejemplo usando PHPUnit
Gracias por su atención
Más información:
Sergio Elvira Perez <sergielviraperez@gmail.com>
Roberto becerra Jimenez<rbecerra@emergya.com>

Más contenido relacionado

La actualidad más candente

Tipos de-pruebas
Tipos de-pruebasTipos de-pruebas
Tipos de-pruebas
Carlos Godoy Fajardo
 
cmmi-dev
cmmi-devcmmi-dev
cmmi-dev
Sam Camacho
 
Carlos orden bdii-t2
Carlos orden bdii-t2Carlos orden bdii-t2
Carlos orden bdii-t2
Chars Orden
 
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
mataditoxd
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Loiane Groner
 
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Oswaldo Hernández
 
Caso de Uso
Caso de UsoCaso de Uso
Caso de Uso
utrilla
 
Analisis y especificacion de requerimientos
Analisis y especificacion de requerimientosAnalisis y especificacion de requerimientos
Analisis y especificacion de requerimientos
UPTP
 
Validación y Verificación de Software
Validación y Verificación de SoftwareValidación y Verificación de Software
Validación y Verificación de Software
Alexandre Texeira Bondelas
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
MARCO POLO SILVA SEGOVIA
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
Lenin Acosta Mata
 
Crisis del software
Crisis del softwareCrisis del software
Crisis del software
ecasteloc
 
[Curso Java Basico] Exercicios Aula 24
[Curso Java Basico] Exercicios Aula 24[Curso Java Basico] Exercicios Aula 24
[Curso Java Basico] Exercicios Aula 24
Loiane Groner
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
Miluska Azabache Gonzales
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
Juan Ravi
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitos
Franklin Parrales Bravo
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
Jose Diaz Silva
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
Juan Pablo Bustos Thames
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
UVM
 
Principios SOLID
Principios SOLIDPrincipios SOLID

La actualidad más candente (20)

Tipos de-pruebas
Tipos de-pruebasTipos de-pruebas
Tipos de-pruebas
 
cmmi-dev
cmmi-devcmmi-dev
cmmi-dev
 
Carlos orden bdii-t2
Carlos orden bdii-t2Carlos orden bdii-t2
Carlos orden bdii-t2
 
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
1.2REQUERIMIENTOS DE LOS USUARIOS (ACTORES INVOLUCRADOS)
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
 
Caso de Uso
Caso de UsoCaso de Uso
Caso de Uso
 
Analisis y especificacion de requerimientos
Analisis y especificacion de requerimientosAnalisis y especificacion de requerimientos
Analisis y especificacion de requerimientos
 
Validación y Verificación de Software
Validación y Verificación de SoftwareValidación y Verificación de Software
Validación y Verificación de Software
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
 
Crisis del software
Crisis del softwareCrisis del software
Crisis del software
 
[Curso Java Basico] Exercicios Aula 24
[Curso Java Basico] Exercicios Aula 24[Curso Java Basico] Exercicios Aula 24
[Curso Java Basico] Exercicios Aula 24
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitos
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 

Destacado

Metodologías ágiles, Scrum, Kanban y eXtreme Programming
Metodologías ágiles, Scrum, Kanban y eXtreme ProgrammingMetodologías ágiles, Scrum, Kanban y eXtreme Programming
Metodologías ágiles, Scrum, Kanban y eXtreme Programming
Emergya
 
Redmine abr 2011
Redmine abr 2011Redmine abr 2011
Redmine abr 2011
Emergya
 
chapters
chapterschapters
IPC 2013 - High Performance PHP with HipHop
IPC 2013 - High Performance PHP with HipHopIPC 2013 - High Performance PHP with HipHop
IPC 2013 - High Performance PHP with HipHop
Steve Kamerman
 
PHPUnit
PHPUnitPHPUnit
Automated php unit testing in drupal 8
Automated php unit testing in drupal 8Automated php unit testing in drupal 8
Automated php unit testing in drupal 8
Jay Friendly
 
Gestión de proyectos con redmine
Gestión de proyectos con redmine	Gestión de proyectos con redmine
Gestión de proyectos con redmine
Francisco Javier Félix Belmonte
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yii
madhavi Ghadge
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to hero
Jeremy Cook
 
Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!
Ptah Dunbar
 
Tutorial basico redmine
Tutorial basico redmineTutorial basico redmine
Tutorial basico redmine
David (davidjguru) Rodríguez
 
PhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsPhpUnit - The most unknown Parts
PhpUnit - The most unknown Parts
Bastian Feder
 
Unit Testing in PHP
Unit Testing in PHPUnit Testing in PHP
Unit Testing in PHP
Radu Murzea
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
Michelangelo van Dam
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
Mindfire Solutions
 
Unit Testing using PHPUnit
Unit Testing using  PHPUnitUnit Testing using  PHPUnit
Unit Testing using PHPUnit
varuntaliyan
 
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
Esteban Saavedra
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit Testing
Mike Lively
 

Destacado (18)

Metodologías ágiles, Scrum, Kanban y eXtreme Programming
Metodologías ágiles, Scrum, Kanban y eXtreme ProgrammingMetodologías ágiles, Scrum, Kanban y eXtreme Programming
Metodologías ágiles, Scrum, Kanban y eXtreme Programming
 
Redmine abr 2011
Redmine abr 2011Redmine abr 2011
Redmine abr 2011
 
chapters
chapterschapters
chapters
 
IPC 2013 - High Performance PHP with HipHop
IPC 2013 - High Performance PHP with HipHopIPC 2013 - High Performance PHP with HipHop
IPC 2013 - High Performance PHP with HipHop
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
Automated php unit testing in drupal 8
Automated php unit testing in drupal 8Automated php unit testing in drupal 8
Automated php unit testing in drupal 8
 
Gestión de proyectos con redmine
Gestión de proyectos con redmine	Gestión de proyectos con redmine
Gestión de proyectos con redmine
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yii
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to hero
 
Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!
 
Tutorial basico redmine
Tutorial basico redmineTutorial basico redmine
Tutorial basico redmine
 
PhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsPhpUnit - The most unknown Parts
PhpUnit - The most unknown Parts
 
Unit Testing in PHP
Unit Testing in PHPUnit Testing in PHP
Unit Testing in PHP
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
 
Unit Testing using PHPUnit
Unit Testing using  PHPUnitUnit Testing using  PHPUnit
Unit Testing using PHPUnit
 
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
Gestion de Proyectos de desarrollod de Software, haciendo uso de herramientas...
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit Testing
 

Similar a PHP Unit y TDD

Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
Eric Zeidan
 
Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins
armolinamilla
 
Behavior1
Behavior1Behavior1
Behavior1
arajar
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
Miguel Angel Teheran Garcia
 
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#
Miguel Angel Teheran Garcia
 
De 0 a 100 con Magento 2
De 0 a 100 con Magento 2De 0 a 100 con Magento 2
De 0 a 100 con Magento 2
Óscar Recio Soria
 
Oscar recio - De 0 a 100 con Magento 2
Oscar recio  -  De 0 a 100 con Magento 2Oscar recio  -  De 0 a 100 con Magento 2
Oscar recio - De 0 a 100 con Magento 2
Mage Titans ES
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnets
eusonlito
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
Juan Belón Pérez
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
AlicantePHP
 
Tdd
TddTdd
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
Yaismel Miranda
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Fco Javier Núñez Berrocoso
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
Luis Ruiz Pavón
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
Isidro Merayo Castellano
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
Jobsket
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLabFIB
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
Jose Luis Rodriguez Roldan
 
Metodologia XP fases y subfases
Metodologia  XP fases y subfasesMetodologia  XP fases y subfases
Metodologia XP fases y subfases
JazminaNaranjo
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
Pedro Gonzalez
 

Similar a PHP Unit y TDD (20)

Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins
 
Behavior1
Behavior1Behavior1
Behavior1
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#
 
De 0 a 100 con Magento 2
De 0 a 100 con Magento 2De 0 a 100 con Magento 2
De 0 a 100 con Magento 2
 
Oscar recio - De 0 a 100 con Magento 2
Oscar recio  -  De 0 a 100 con Magento 2Oscar recio  -  De 0 a 100 con Magento 2
Oscar recio - De 0 a 100 con Magento 2
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnets
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
 
Tdd
TddTdd
Tdd
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Metodologia XP fases y subfases
Metodologia  XP fases y subfasesMetodologia  XP fases y subfases
Metodologia XP fases y subfases
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 

Más de Emergya

Charla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QACharla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QA
Emergya
 
Agile, José Antonio Dorado
Agile, José Antonio DoradoAgile, José Antonio Dorado
Agile, José Antonio Dorado
Emergya
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
Emergya
 
Moodle
MoodleMoodle
Moodle
Emergya
 
Emergya company information
Emergya company informationEmergya company information
Emergya company information
Emergya
 
Casos de éxito portales-may2014
Casos de éxito portales-may2014Casos de éxito portales-may2014
Casos de éxito portales-may2014
Emergya
 
Casos de éxito GIS -may2014
Casos de éxito GIS -may2014Casos de éxito GIS -may2014
Casos de éxito GIS -may2014
Emergya
 
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
Emergya
 
Planificando la actividad de contribución a Comunidades de Software Libre des...
Planificando la actividad de contribución a Comunidades de Software Libre des...Planificando la actividad de contribución a Comunidades de Software Libre des...
Planificando la actividad de contribución a Comunidades de Software Libre des...
Emergya
 
SIG libre en aplicaciones de gestión de emergencias
SIG libre en aplicaciones de gestión de emergenciasSIG libre en aplicaciones de gestión de emergencias
SIG libre en aplicaciones de gestión de emergencias
Emergya
 
Alcaldes 2.0
Alcaldes 2.0Alcaldes 2.0
Alcaldes 2.0
Emergya
 
Open ls
Open lsOpen ls
Open ls
Emergya
 
Planificación y optimización de rutas con Software Libre
Planificación y optimización de rutas con Software LibrePlanificación y optimización de rutas con Software Libre
Planificación y optimización de rutas con Software Libre
Emergya
 
Jornada Estrategia Social Media - Sandetel
Jornada  Estrategia Social Media - SandetelJornada  Estrategia Social Media - Sandetel
Jornada Estrategia Social Media - Sandetel
Emergya
 
Gnome y la empresa
Gnome y la empresaGnome y la empresa
Gnome y la empresa
Emergya
 
Presentación Imaginática 2011
Presentación Imaginática 2011Presentación Imaginática 2011
Presentación Imaginática 2011
Emergya
 
Interacción escritorio-web para la movilidad del autónomo
Interacción escritorio-web para la movilidad del autónomoInteracción escritorio-web para la movilidad del autónomo
Interacción escritorio-web para la movilidad del autónomo
Emergya
 
Orca: A screen reader sailing into uncharted waters
Orca: A screen reader sailing into uncharted waters Orca: A screen reader sailing into uncharted waters
Orca: A screen reader sailing into uncharted waters
Emergya
 
Gestión de Proyectos con TaskJuggler
Gestión de Proyectos con TaskJugglerGestión de Proyectos con TaskJuggler
Gestión de Proyectos con TaskJuggler
Emergya
 
GIS y datos libres en aplicaciones sectoriales: gestión de emergencias
GIS y datos libres en aplicaciones sectoriales: gestión de emergenciasGIS y datos libres en aplicaciones sectoriales: gestión de emergencias
GIS y datos libres en aplicaciones sectoriales: gestión de emergencias
Emergya
 

Más de Emergya (20)

Charla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QACharla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QA
 
Agile, José Antonio Dorado
Agile, José Antonio DoradoAgile, José Antonio Dorado
Agile, José Antonio Dorado
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
 
Moodle
MoodleMoodle
Moodle
 
Emergya company information
Emergya company informationEmergya company information
Emergya company information
 
Casos de éxito portales-may2014
Casos de éxito portales-may2014Casos de éxito portales-may2014
Casos de éxito portales-may2014
 
Casos de éxito GIS -may2014
Casos de éxito GIS -may2014Casos de éxito GIS -may2014
Casos de éxito GIS -may2014
 
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
Jornada de Sensibilización sobre el Uso y Manejo de las Redes Sociales en San...
 
Planificando la actividad de contribución a Comunidades de Software Libre des...
Planificando la actividad de contribución a Comunidades de Software Libre des...Planificando la actividad de contribución a Comunidades de Software Libre des...
Planificando la actividad de contribución a Comunidades de Software Libre des...
 
SIG libre en aplicaciones de gestión de emergencias
SIG libre en aplicaciones de gestión de emergenciasSIG libre en aplicaciones de gestión de emergencias
SIG libre en aplicaciones de gestión de emergencias
 
Alcaldes 2.0
Alcaldes 2.0Alcaldes 2.0
Alcaldes 2.0
 
Open ls
Open lsOpen ls
Open ls
 
Planificación y optimización de rutas con Software Libre
Planificación y optimización de rutas con Software LibrePlanificación y optimización de rutas con Software Libre
Planificación y optimización de rutas con Software Libre
 
Jornada Estrategia Social Media - Sandetel
Jornada  Estrategia Social Media - SandetelJornada  Estrategia Social Media - Sandetel
Jornada Estrategia Social Media - Sandetel
 
Gnome y la empresa
Gnome y la empresaGnome y la empresa
Gnome y la empresa
 
Presentación Imaginática 2011
Presentación Imaginática 2011Presentación Imaginática 2011
Presentación Imaginática 2011
 
Interacción escritorio-web para la movilidad del autónomo
Interacción escritorio-web para la movilidad del autónomoInteracción escritorio-web para la movilidad del autónomo
Interacción escritorio-web para la movilidad del autónomo
 
Orca: A screen reader sailing into uncharted waters
Orca: A screen reader sailing into uncharted waters Orca: A screen reader sailing into uncharted waters
Orca: A screen reader sailing into uncharted waters
 
Gestión de Proyectos con TaskJuggler
Gestión de Proyectos con TaskJugglerGestión de Proyectos con TaskJuggler
Gestión de Proyectos con TaskJuggler
 
GIS y datos libres en aplicaciones sectoriales: gestión de emergencias
GIS y datos libres en aplicaciones sectoriales: gestión de emergenciasGIS y datos libres en aplicaciones sectoriales: gestión de emergencias
GIS y datos libres en aplicaciones sectoriales: gestión de emergencias
 

Último

PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
carmenquintana18
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
jesus869159
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024
FantasticVideo1
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
raul958375
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
Carlos Pulido
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
munozvanessa878
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
DanielaLoaeza5
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
Edgar Najera
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
JaimmsArthur
 
Proceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
Proceso de obtenciòn de nitrogeno por el metodo Haber-BoshProceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
Proceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
shirllyleytonm
 
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
KarinToledo2
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
KristianSaavedra
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
LuisCiriacoMolina
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
MaraManuelaUrribarri
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
ssuser8827cb1
 

Último (20)

PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
 
Proceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
Proceso de obtenciòn de nitrogeno por el metodo Haber-BoshProceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
Proceso de obtenciòn de nitrogeno por el metodo Haber-Bosh
 
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
 

PHP Unit y TDD

  • 2. Sobre Nosotros Sergio Elvira Perez Maxfire Senior Software Engineer @Emergya Roberto Becerra Jimenez Roberb Senior Software Engineer @Emergya
  • 3. Índice ● TDD ○ Qué es ○ Ciclo de desarrollo ○ Tests finales ○ FDD vs TDD ● PHPUnit ○ Qué es ○ Instalación ○ Uso ○ Ejemplos
  • 4. Qué es TDD ● Desarrollo guiado por pruebas de software, o Test-driven development (TDD) es una práctica de ingeniería de software que involucra otras dos prácticas: ○ Escribir las pruebas (Test First Development). ○ Refactorización (Refactoring).
  • 5. Qué es TDD II ● El sistema que se programa tiene que ser muy Flexible. ● Cada prueba será pequeña.
  • 7. Ciclo de desarrollo 1. Elegir un requisito. 2. Escribir una prueba 3. Verificar que la prueba falla 4. Escribir la implementación 5. Ejecutar las pruebas automatizadas 6. Eliminación de duplicación (Refactorizar) 7. Actualización de la lista de requisitos
  • 8. Test finales Testing via the xUnit Framework.
  • 9. FDD Es un enfoque de desarrollo ágil de software desarrollado por Jeff De Luca y Peter Coad. Los desarrolladores se agrupan en dos tipos, "dueños de clases" o "programadores jefe". El proceso del diseño y construcción comprende cinco fases: 1. Desarrollar un modelo global; 2. Construir una lista de funcionalidades; 3. Planificar por funcionalidad; 4. Diseñar por funcionalidad; 5. Construir por funcionalidad.
  • 10. TDD vs FDD (ventajas) TDD FDD 1.- La minimización del número de defectos que llegan al software en fase de producción. 1.- Rápida respuesta a cambios de requisitos 2.- Optimización en ejecución de funciones 2.- Trabajo conjunto entre el cliente y el equipo de desarrollo 3.- La producción de software modular 3.- Minimiza los costos frente a cambios.
  • 11. TDD vs FDD (inconvenientes) TDD FDD Interfaces Gráfica de usuario (GUIs), solución parcial. Falta de documentación del diseño. Ya que no todos miden los tiempos de proyecto Problemas derivados de la comunicación oral Bases de datos. Falta de reusabilidad.
  • 12. Qué es PHPUnit PHPUnit es un framework de testing para PHP ¿Por qué usar PHPUnit? “Todos los programadores cometen errores, pero la diferencia entre los buenos programadores y los malos programadores es que los buenos programadores prueban su código para encontrar esos errores lo más pronto posible“ Sebastian Bergmann creador de PHPUnit
  • 13. Instalación wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar sudo mv phpunit.phar /usr/local/bin/phpunit phpunit --version Composer "require-dev": { "phpunit/phpunit": "5.6.*" } } composer.json composer install
  • 14. Uso <?php class Money { private $amount; public function __construct($amount) { $this->amount = $amount; } public function getAmount() { return $this->amount; } public function negate() { return new Money(-1 * $this->amount); } } <?php use PHPUnitFrameworkTestCase; class MoneyTest extends TestCase { // ... public function testCanBeNegated() { // Arrange $a = new Money(1); // Act $b = $a->negate(); // Assert $this->assertEquals(-1, $b->getAmount()); } }
  • 15. Uso setUp() Contiene el código que se va a ejecutar justo antes de los tests tearDown() Contiene el código que se va a ejecutar justo después de los tests
  • 16. Uso Assertions Existe una gran cantidad de Assertions con los que podremos comprobar gran cantidad de situaciones en nuestros tests. Sólo veremos algunos ejemplos en esta presentación, aquí podemos encontrar todos los existentes. ● assertEquals(mixed $expected, mixed $actual[, string $message = '']) Se lanza un error con el mensaje $message en el caso de que $actual sea diferente a $expected. ● assertFalse(bool $condition[, string $message = '']) Se lanza un error con el mensaje $message en caso de que $condition no sea false. ● assertCount($expectedCount, $haystack[, string $message = '']) Se lanza un error con el mensaje $message en caso de que el array $haystack no contenga el número de elementos $expectedCount
  • 17. Uso <?php use PHPUnitFrameworkTestCase; class XTest extends TestCase { public function setUp(){ // defines initial state } public function tearDown(){ // defines final state } public function test1() { // … assertions } public function testN() { // … assertions } }
  • 18. Uso Ejecución phpunit path/to/test/file Test suite phpunit path/to/test/file --filter test Test concreto
  • 19. Uso Ejecución $~ phpunit tests/NumberTest.php PHPUnit 4.8.24 by Sebastian Bergmann and contributors. ......................... Time: 208 ms, Memory: 14.00Mb OK (25 tests, 175 assertions) Resultados
  • 21. Gracias por su atención Más información: Sergio Elvira Perez <sergielviraperez@gmail.com> Roberto becerra Jimenez<rbecerra@emergya.com>