SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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

Modelo incremental
Modelo incrementalModelo incremental
Modelo incremental
Roxny Moreno
 
3. conceptos de calidad del software
3. conceptos de calidad del software3. conceptos de calidad del software
3. conceptos de calidad del software
Juan Pablo Carvallo
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
Miguel Angel Rodriguez
 

La actualidad más candente (20)

tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del Software
 
Gramaticas
GramaticasGramaticas
Gramaticas
 
Extreme Programming (XP).pptx
Extreme Programming (XP).pptxExtreme Programming (XP).pptx
Extreme Programming (XP).pptx
 
Proceso del software
Proceso del softwareProceso del software
Proceso del software
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Xp
XpXp
Xp
 
Presentacion eclipse - grupo 6
Presentacion   eclipse - grupo 6Presentacion   eclipse - grupo 6
Presentacion eclipse - grupo 6
 
Modelo incremental
Modelo incrementalModelo incremental
Modelo incremental
 
MODELOS DE SISTEMAS DE SOFTWARE
MODELOS DE SISTEMAS DE SOFTWAREMODELOS DE SISTEMAS DE SOFTWARE
MODELOS DE SISTEMAS DE SOFTWARE
 
3. conceptos de calidad del software
3. conceptos de calidad del software3. conceptos de calidad del software
3. conceptos de calidad del software
 
Algoritmo de servidor centralizado
Algoritmo de servidor centralizadoAlgoritmo de servidor centralizado
Algoritmo de servidor centralizado
 
Comunicacion entre procesos SSDD
Comunicacion entre procesos SSDDComunicacion entre procesos SSDD
Comunicacion entre procesos SSDD
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
 
Modelos de proceso evolutivo
Modelos de proceso evolutivoModelos de proceso evolutivo
Modelos de proceso evolutivo
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 

Destacado

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
 

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

Behavior1
Behavior1Behavior1
Behavior1
arajar
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
AlicantePHP
 

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

Más de 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
 

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

INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
EdwinC23
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 

Último (20)

ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
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
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Suelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoSuelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramiento
 
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
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
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
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptos
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
 

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>