SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
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>

Contenu connexe

Tendances (20)

La Calidad de Software
La Calidad de SoftwareLa Calidad de Software
La Calidad de Software
 
Fundamentos de Pruebas de Software - Capítulo 1
Fundamentos de Pruebas de Software - Capítulo 1Fundamentos de Pruebas de Software - Capítulo 1
Fundamentos de Pruebas de Software - Capítulo 1
 
Code coverage
Code coverageCode coverage
Code coverage
 
Arquitecturas de software
Arquitecturas de softwareArquitecturas de software
Arquitecturas de software
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
TestNG with selenium
TestNG with seleniumTestNG with selenium
TestNG with selenium
 
proceso de pruebas
proceso de pruebasproceso de pruebas
proceso de pruebas
 
Java exception handling
Java exception handlingJava exception handling
Java exception handling
 
Extreme Programming-Fases
Extreme Programming-FasesExtreme Programming-Fases
Extreme Programming-Fases
 
2.4 herramientas case
2.4 herramientas case2.4 herramientas case
2.4 herramientas case
 
Rup entrega final
Rup entrega finalRup entrega final
Rup entrega final
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Metodologia incremental
Metodologia incrementalMetodologia incremental
Metodologia incremental
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
STLC & SDLC-ppt-1.pptx
STLC & SDLC-ppt-1.pptxSTLC & SDLC-ppt-1.pptx
STLC & SDLC-ppt-1.pptx
 
CMMI Y SCAMPI
CMMI Y SCAMPICMMI Y SCAMPI
CMMI Y SCAMPI
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
 
Gestión de la configuración del software(gcs)
Gestión de la configuración del software(gcs)Gestión de la configuración del software(gcs)
Gestión de la configuración del software(gcs)
 
Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de software
 

En vedette

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 ProgrammingEmergya
 
Redmine abr 2011
Redmine abr 2011Redmine abr 2011
Redmine abr 2011Emergya
 
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 HipHopSteve Kamerman
 
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 8Jay Friendly
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yiimadhavi Ghadge
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to heroJeremy Cook
 
Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Automated Testing in WordPress, Really?!
Automated Testing in WordPress, Really?!Ptah Dunbar
 
PhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsPhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsBastian Feder
 
Unit Testing in PHP
Unit Testing in PHPUnit Testing in PHP
Unit Testing in PHPRadu Murzea
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitMichelangelo van Dam
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnitMindfire Solutions
 
Unit Testing using PHPUnit
Unit Testing using  PHPUnitUnit Testing using  PHPUnit
Unit Testing using PHPUnitvaruntaliyan
 
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 TestingMike Lively
 

En vedette (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
 

Similaire à 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 BackEric 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
Behavior1arajar
 
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 2Mage Titans ES
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetseusonlito
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnitAlicantePHP
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel 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 poderosaFco 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 7Luis Ruiz Pavón
 
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 agilesJobsket
 
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+DinLabFIB
 
Metodologia XP fases y subfases
Metodologia  XP fases y subfasesMetodologia  XP fases y subfases
Metodologia XP fases y subfasesJazminaNaranjo
 

Similaire à 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#
 
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
 
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
 
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
 

Plus de Emergya

Charla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QACharla QA en SEO - Sevilla QA
Charla QA en SEO - Sevilla QAEmergya
 
Agile, José Antonio Dorado
Agile, José Antonio DoradoAgile, José Antonio Dorado
Agile, José Antonio DoradoEmergya
 
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 AppiumEmergya
 
Emergya company information
Emergya company informationEmergya company information
Emergya company informationEmergya
 
Casos de éxito portales-may2014
Casos de éxito portales-may2014Casos de éxito portales-may2014
Casos de éxito portales-may2014Emergya
 
Casos de éxito GIS -may2014
Casos de éxito GIS -may2014Casos de éxito GIS -may2014
Casos de éxito GIS -may2014Emergya
 
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 emergenciasEmergya
 
Alcaldes 2.0
Alcaldes 2.0Alcaldes 2.0
Alcaldes 2.0Emergya
 
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 LibreEmergya
 
Jornada Estrategia Social Media - Sandetel
Jornada  Estrategia Social Media - SandetelJornada  Estrategia Social Media - Sandetel
Jornada Estrategia Social Media - SandetelEmergya
 
Gnome y la empresa
Gnome y la empresaGnome y la empresa
Gnome y la empresaEmergya
 
Presentación Imaginática 2011
Presentación Imaginática 2011Presentación Imaginática 2011
Presentación Imaginática 2011Emergya
 
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ónomoEmergya
 
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 TaskJugglerEmergya
 
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 emergenciasEmergya
 

Plus 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
 

Dernier

3er Informe Laboratorio Quimica General (2) (1).pdf
3er Informe Laboratorio Quimica General  (2) (1).pdf3er Informe Laboratorio Quimica General  (2) (1).pdf
3er Informe Laboratorio Quimica General (2) (1).pdfSantiagoRodriguez598818
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOFernando Bravo
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...WeslinDarguinHernand
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalaciónQualityAdviceService
 
Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosandersonsubero28
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientoscuentaparainvestigac
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxwilliam801689
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdfGustavoAdolfoDiaz3
 
ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................Juan293605
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxfranklingerardoloma
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cerealescarlosjuliogermanari1
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfGUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfWILLIAMSTAYPELLOCCLL1
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processbarom
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESJHONJAIROVENTURASAUC
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptxNancyJulcasumaran
 
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptxG4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptxMaxPercyBorjaVillanu
 
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfTRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfVladimirWashingtonOl
 

Dernier (20)

3er Informe Laboratorio Quimica General (2) (1).pdf
3er Informe Laboratorio Quimica General  (2) (1).pdf3er Informe Laboratorio Quimica General  (2) (1).pdf
3er Informe Laboratorio Quimica General (2) (1).pdf
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECO
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplos
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientos
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptx
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf
3.6.2 Lab - Implement VLANs and Trunking - ILM.pdf
 
ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cereales
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfGUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptxG4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
 
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfTRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
 

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>