SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
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>

Weitere ähnliche Inhalte

Was ist angesagt?

Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionJose Diaz Silva
 
Estados de un proceso
Estados de un procesoEstados de un proceso
Estados de un procesoi92almaa
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de softwareGeorgy Jose Sanchez
 
Implementacion de software
Implementacion de softwareImplementacion de software
Implementacion de softwareTom Rodriguez
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAngel Reyes
 
Ventajas y desventajas modelos
Ventajas y desventajas modelosVentajas y desventajas modelos
Ventajas y desventajas modelosCristHian Martinez
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y desplieguejoshell
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiraljuanksi28
 
Diagrama de despliegue
Diagrama de despliegueDiagrama de despliegue
Diagrama de despliegueElvisAR
 
Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicaciónuniv of pamplona
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesIsrael Castillo Cruz
 

Was ist angesagt? (20)

Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
Rup disciplinas
Rup disciplinasRup disciplinas
Rup disciplinas
 
Estados de un proceso
Estados de un procesoEstados de un proceso
Estados de un proceso
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de software
 
Implementacion de software
Implementacion de softwareImplementacion de software
Implementacion de software
 
Metodologia orientada a objeto
Metodologia orientada a objetoMetodologia orientada a objeto
Metodologia orientada a objeto
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de software
 
Ventajas y desventajas modelos
Ventajas y desventajas modelosVentajas y desventajas modelos
Ventajas y desventajas modelos
 
Diagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegueDiagramas UML: Componentes y despliegue
Diagramas UML: Componentes y despliegue
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiral
 
Diagrama de despliegue
Diagrama de despliegueDiagrama de despliegue
Diagrama de despliegue
 
Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicación
 
PSW Unidad 2 MODELOS DE PROCESO
PSW Unidad 2 MODELOS DE PROCESOPSW Unidad 2 MODELOS DE PROCESO
PSW Unidad 2 MODELOS DE PROCESO
 
PSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWAREPSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWARE
 
Algoritmo de dekker
Algoritmo de dekker Algoritmo de dekker
Algoritmo de dekker
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Planificacion cpu
Planificacion cpuPlanificacion cpu
Planificacion cpu
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxYajairaMartinez30
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricoalexcala5
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 

Kürzlich hochgeladen (20)

Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Presentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptxPresentación electricidad y magnetismo.pptx
Presentación electricidad y magnetismo.pptx
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctrico
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).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>