SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Introducción a!
Testing
Testing
¿Para que sirve?
¿Para que sirve?
•

Verificar del funcionamiento de la aplicación!

•

Automatización!

•

Evitar recurrir en bugs!

•

Construir casos de uso difíciles de reproducir!

•

Simplificar la introducción de cambios!

•

Simplificar la refactorización!
¿Que vamos a ver?
•

Unit Testing!

•

Functional Testing
Unit Testing
Es una forma de probar el correcto funcionamiento de un módulo de
código. Esto sirve para asegurar que cada uno de los módulos funcione
correctamente por separado.

http://es.wikipedia.org/wiki/Prueba_unitaria
¿Ventajas?
•

Facilita el debug!

•

Demuestra el funcionamiento del código sin importar el entorno!

•

Viendo el test puedo determinar que hace el código!

•

Confirma si el pequeño cambio en realidad fue tan pequeño!

•

El código tiende a ser más limpio!

•

Nos permite corregir bugs y asegurarnos que no vuelven a aparecer!

•

Simplifica la integración
¿Desventajas?
•

No muestran errores de integración!

•

Es difícil anticipar todos los casos de uso y futuros bugs!

•

Código extenso
Herramientas
PHPUnit http://phpunit.de/!
SimpleTest http://simpletest.org/!
SnapTest https://github.com/Jakobo/snaptest
Herramientas
PHPUnit http://phpunit.de/!
SimpleTest http://simpletest.org/!
SnapTest https://github.com/Jakobo/snaptest
<?php!

!

namespace IsmaAmbrosi;!

!

class Math!
{!
    private $number;!

!

    public function __construct($number)!
    {!
        $this->number = $number;!
    }!

!

    public function getNumber()!
    {!
        return $this->number;!
    }!

!

    public function sum($number)!
    {!
        return $this->number += $number;!
    }!
}
<?php!

!

namespace 

!

class Math!
{!
    private 

!

    public function 
    {!
        $this
    }!

!

    public function 
    {!
        return 
    }!

!

    public function 
    {!
        return 
    }!
}

<?php!

!

namespace IsmaAmbrosiTests;!

!

use IsmaAmbrosiMath;!

!

/**!
 * Class MathTest!
 *!
 * @package IsmaAmbrosiTests!
 */!
class MathTest extends PHPUnit_Framework_TestCase!
{!
    public function testSumWorks()!
    {!
        $math = new Math(5);!

!

        $this->assertEquals(5, $math->getNumber());!

!

        $math->sum(2); # Sumo 2 al valor original!

!

        $this->assertEquals(7, $math->getNumber());!
    }!
}
<?php!

!

namespace 

!

class Math!
{!
    private 

!

    public function 
    {!
        $this
    }!

!

    public function 
    {!
        return 
    }!

!

    public function 
    {!
        return 
    }!
}

<?php!

!

namespace IsmaAmbrosiTests;!

!

use IsmaAmbrosiMath;!

!

/**!
 * Class MathTest!
 *!
 * @package IsmaAmbrosiTests!
 */!
class MathTest extends PHPUnit_Framework_TestCase!
{!
    public function testSumWorks()!
    {!
        $math = new Math(5);!

!

        $this->assertEquals(5, $math->getNumber());!

!

        $math->sum(2); # Sumo 2 al valor original!

!

        $this->assertEquals(7, $math->getNumber());!
    }!
}

Clase base para las
clases de tests
<?php!

!

namespace 

!

class Math!
{!
    private 

!

    public function 
    {!
        $this
    }!

!

    public function 
    {!
        return 
    }!

!

    public function 
    {!
        return 
    }!
}

<?php!

!

namespace IsmaAmbrosiTests;!

!

use IsmaAmbrosiMath;!

!

/**!
 * Class MathTest!
 *!
 * @package IsmaAmbrosiTests!
 */!
class MathTest extends PHPUnit_Framework_TestCase!
{!
    public function testSumWorks()!
    {!
        $math = new Math(5);!

!

        $this->assertEquals(5, $math->getNumber());!

!

        $math->sum(2); # Sumo 2 al valor original!

!

        $this->assertEquals(7, $math->getNumber());!
    }!
}

Verifica el valor de
getNumber() es el
original
<?php!

!

namespace 

!

class Math!
{!
    private 

!

    public function 
    {!
        $this
    }!

!

    public function 
    {!
        return 
    }!

!

    public function 
    {!
        return 
    }!
}

<?php!

!

namespace IsmaAmbrosiTests;!

!

use IsmaAmbrosiMath;!

!

/**!
 * Class MathTest!
 *!
 * @package IsmaAmbrosiTests!
 */!
class MathTest extends PHPUnit_Framework_TestCase!
{!
    public function testSumWorks()!
    {!
        $math = new Math(5);!

!

        $this->assertEquals(5, $math->getNumber());!

!

        $math->sum(2); # Sumo 2 al valor original!

!

        $this->assertEquals(7, $math->getNumber());!
    }!
}

Verifica que el valor
actual sea igual al
resultado de la suma
Métodos comunes
$this->assertEquals(2, 1 + 1);!
$this->assertTrue(2 == 2);!
$this->assertFalse(2 == 4);!
$this->assertNull(null);!
$this->assertInstanceOf('NamespaceClass', $instance);!
$this->assertEmpty("");!
$this->assertGreaterThan(2, 5);!
$this->assertLessThan(2, 1);!
$this->assertCount(3, array(1, 2, 3));!
$this->assertFileExists('/path/to/file.txt');
Nota: La falla en el assert finaliza la ejecución del método test.
Instalación
# 1 - Composer!
$ composer require —dev “phpunit/phpunit” “~3.7”

# 2 - Pear!
$ pear config-set auto_discover 1
$pear install pear.phpunit.de/PHPUnit

# 3 - PHP Archive (PHAR)!
$ wget https://phar.phpunit.de/phpunit.phar
Ejecución
$ phpunit

# Single test class!
$ phpunit tests/Namespace/ClassTest.php

# Proyecto de Symfony!
$ phpunit -c app
Test Driven Development
Es un proceso de desarrollo que se basa en la repetición de un corto ciclo
de desarrollo: Primero se desarrollan los test, definiendo como debe
funcionar la librería a desarrollar, luego se escribe la mínima cantidad de
código necesaria para que pasen los tests, y finalmente se hace la
refactorización del código a los estandares aceptables.

http://en.wikipedia.org/wiki/Test-driven_development
Escritura de test

Escritura del código necesario para pasar el test

Refactorización

Verificación de los tests
Code Coverage
IsmaAmbrosiGeneratorBundle
Code Coverage
IsmaAmbrosiGeneratorBundle
Mock Objects
Son objetos que imitan el comportamiento de objetos reales de una forma
controlada. Se usan para probar a otros objetos en pruebas unitarias que
esperan mensajes de una clase en particular para sus métodos, al igual
que los diseñadores de autos usan un crash dummy cuando simulan un
accidente.

http://es.wikipedia.org/wiki/Objeto_simulado
Herramientas
PHPUnit Mock Objects http://phpunit.de/ !
Mockery https://github.com/padraic/mockery!
Prophecy https://github.com/phpspec/prophecy
<?php!

<?php!

namespace IsmaAmbrosiLogger;!

namespace IsmaAmbrosiLogger;!

/**!
 * Class Logger!
 *!
 * @package IsmaAmbrosiLogger!
 */!
class Logger!
{!
    private $handler;!

/**!
 * Interface HandlerInterface!
 *!
 * @package IsmaAmbrosiLogger!
 */!
interface HandlerInterface!
{!
    public function write($log);!
}

!
!

!

    public function __construct(HandlerInterface $handler)!
    {!
        $this->handler = $handler;!
    }!

!

    public function log($text)!
    {!
        return $this->handler->write($text);!
    }!
}

!
!
<?php!

!

namespace 

!

<?php!

!

namespace IsmaAmbrosiTestsLogger;!

!

<?php!

!

namespace 

!

/**!
/**!
use IsmaAmbrosiLoggerLogger;!
 * Class Logger!
 * Interface HandlerInterface!
!
 *!
 *!
/**!
 * @package IsmaAmbrosiLogger!
 * @package IsmaAmbrosiLogger!
 * Class LoggerTest!
 */!
 */!
 *!
class Logger!
interface 
 * @package IsmaAmbrosiTestsLogger!
{!
{!
 */!
    private 
    public function 
class LoggerTest extends PHPUnit_Framework_TestCase!
!
}
{!
    public function 
    public function testLogger()!
    {!
    {!
        
        $handler = $this->getMock('IsmaAmbrosiLoggerHandlerInterface');!
    }!

!

!

        $logger = new Logger($handler);!
    public function 
!
    {!
        $logger->log('Este es un mensaje de log');!
        return
    }!
    }!
}
}
Ejemplo
!
# src/IsmaAmbrosi/Logger/Logger.php!
public function log($text)!
{!
    return $this->handler->write($text);!
}!

!
!

# src/IsmaAmbrosi/Tests/Logger/LoggerTest.php!
public function testLogger()!
{!
    $handler = $this->getMock('IsmaAmbrosiLoggerHandlerInterface');!
    $handler!
        ->expects($this->any())!
        ->method('write')!
        ->will($this->returnValue(7));!

!

    $logger = new Logger($handler);!

!

    $this->assertEquals(7, $logger->log('Message'));!
}
Functional Testing
Una prueba funcional es una prueba basada en la ejecución, revisión y
retroalimentación de las funcionalidades previamente diseñadas para el
software. Son pruebas específicas, concretas y exhaustivas para probar y
validar que el software hace lo que debe y sobre todo, lo que se ha
especificado.

http://es.wikipedia.org/wiki/Pruebas_funcionales
¿Ventajas?
•

Se escriben una sola vez!

•

Ofrecen mayor cobertura de casos de uso!

•

Puedo ver como se comporta mi aplicación y para casos específicos!

•

Sirven como test de integración en algunos casos!

•

Confirma si los pequeños cambios en realidad fue tan pequeños
¿Desventajas?
•

Es difícil descubrir todos los errores del código!

•

No siempre puedo determinar que hace el código!

•

Es difícil anticipar todos los casos de uso y futuros bugs
Ejemplo (Symfony)
<?php!

!

namespace IsmaAmbrosiMyBundleTestsController;!

!

use SymfonyBundleFrameworkBundleTestWebTestCase;!

!

class DefaultControllerTest extends WebTestCase!
{!
    public function testIndex()!
    {!
        $client = static::createClient();!

!

        $crawler = $client->request('GET', '/');!

!

        $this->assertEquals(1, $crawler->filter('h1:contains("Welcome")')->count());!
    }!
}
Pruebas de Integración

Son aquellas que se realizan en el ámbito del desarrollo de software una
vez que se han aprobado las pruebas unitarias. Únicamente se refieren a la
prueba o pruebas de todos los elementos unitarios que componen un
proceso, hecha en conjunto, de una sola vez.

http://es.wikipedia.org/wiki/Pruebas_de_integración
Behavior Driven Development
Es una técnica de desarrollo ágil de software que nos permite crear una
aplicación describiendo su funcionamiento desde la perspectiva de los
inversores.

http://www.ticketea.com/introduccion-bdd-granada
Herramientas

•

Behat http://behat.org!

•

PHPUnit http://phpunit.de/
Behat

Un framework PHP para testing de las expectativas de negocios.
Behat
Se escriben historias en lenguaje entendible para cualquier
humano(Gherkin).!
Esas historias luego se comprueban con el funcionamiento de la aplicación.!
Se separan en features.!
Cada feature desarrolla uno o más escenarios.
Feature
Feature: ls!
In order to see the directory structure!
As a UNIX user!
I need to be able to list the current directory's contents!
!
Scenario: List 2 files in a directory!
Given I am in a directory "test"!
And I have a file named "foo"!
And I have a file named "bar"!
When I run "ls"!
Then I should get:!
"""!
bar!
foo!
"""
http://docs.behat.org/quick_intro.html
Feature para Web
Feature: Login!
Para poder acceder al sistema!
Como un usuario registrado!
Necesito poder identificarme con un usuario y contraseña!
!

Scenario: Ingreso al sistema con usuario válido!
Given I am on “/login”!
When I fill in “username” with “iambrosi”!
And I fill in “password” with “12345”!
And I press “Ingresar”!
Then I should see “Bienvenido Ismael”
Para los tests de funcionalidades web se debe utilizar la extensión Mink
y uno de los drivers para navegadores.

http://mink.behat.org/
Para los tests de funcionalidades web se debe utilizar la extensión Mink
y uno de los drivers para navegadores.

Goutte

Sahi

Zombie

Selenium

Selenium2

http://mink.behat.org/
Resumen
Resumen
•

Utilizamos Unit Testing para probar pequeños módulos
Resumen
•

Utilizamos Unit Testing para probar pequeños módulos!

•

Utilizamos Integration Testing para probar la union de varios módulos
Resumen
•

Utilizamos Unit Testing para probar pequeños módulos!

•

Utilizamos Integration Testing para probar la union de varios módulos !

•

Utilizamos Fuctional Testing para probar el resultado de la ejecución
Resumen
•

Utilizamos Unit Testing para probar pequeños módulos!

•

Utilizamos Integration Testing para probar la union de varios módulos!

•

Utilizamos Fuctional Testing para probar el resultado de la ejecución!

•

Utilizamos BDD(Behat) para desarrollar los test tal cual es visto en el
negocio
¿Preguntas?
¡Gracias!

Mais conteúdo relacionado

Semelhante a Introducción a testing en php

Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion ContinuaLenin Lozano
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -bJairoSimbaa
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxCompusoftnetCiaLtda
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumSoftware Guru
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionalesVicenç García-Altés
 

Semelhante a Introducción a testing en php (20)

Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Prueba unitaria
Prueba unitariaPrueba unitaria
Prueba unitaria
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -b
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2
 
Automatizacion de Pruebas
Automatizacion de PruebasAutomatizacion de Pruebas
Automatizacion de Pruebas
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionales
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Unit testing consejos
Unit testing   consejosUnit testing   consejos
Unit testing consejos
 
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
 

Mais de Ismael Ambrosi

Mais de Ismael Ambrosi (6)

Assetic PHPmvd
Assetic PHPmvdAssetic PHPmvd
Assetic PHPmvd
 
Symfony forms
Symfony formsSymfony forms
Symfony forms
 
Doctrine
DoctrineDoctrine
Doctrine
 
Empezando con Twig
Empezando con TwigEmpezando con Twig
Empezando con Twig
 
Introducción a composer
Introducción a composerIntroducción a composer
Introducción a composer
 
Introducción a Symfony
Introducción a SymfonyIntroducción a Symfony
Introducción a Symfony
 

Último

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Introducción a testing en php