UNIT TESTING pruebas unitarias pruebas unitarias
pruebas unitarias Test = prueba, examen ¿Qué prueban en un software? Un bloque de código fuente Una funcionalidad completa ¿Por qué probamos un software? Encontrar y corregir bugs. ¿Cómo probamos un software? Input / Output pruebas unitarias
pruebas unitarias Pruebas de Unidad Unit = unidades POO (Métodos) Test = prueba, examen Si tenemos una función que realiza cierto cálculo: función suma( a, b) .... fin Podemos probar esta función de esta manera: Si (suma(1,1) es igual a 2) // :-D caso contrario // :-( pruebas unitarias
pruebas unitarias Técnica Verificar igualdad de dos valores. Verificar que una sentencia sea verdadera. Verificar que un objeto exista. Verificar que dos objetos sean del mismo tipo. pruebas unitarias
pruebas unitarias Ventajas Desventajas Facilita el cambio. Simplifica la integración. Lleva la programación a otro nivel. Aunque suene difícil de creer, acelera el desarrollo de software. Desventajas Estimación Código extenso pruebas unitarias
Existen Unit Testing Frameworks para la mayoría de lenguajes de programación. Sunit: Smalltalk Java: JUnit Ruby: Test::Unit Python: PyUnit Perl: TAP (Test Anything Protocol) PHP: PHPUnit .NET: NUnit pruebas unitarias
pruebas unitarias Ejemplo: JUnit package pruebarapida; import org.junit.*; import static org.junit.Assert.*; import java.util.*; public class TestingJava { @Test public void testEmptyCollection() { Collection collection = new ArrayList(); assertTrue(collection.isEmpty()); } public static void main(String args[]) { org.junit.runner.JUnitCore.main("pruebarapida.TestingJava"); pruebas unitarias
pruebas unitarias Ejemplo: JUnit package pruebarapida; import org.junit.*; import static org.junit.Assert.*; import java.util.*; public class TestingJava { private Collection<Object> collection; @Before public void setUp() { collection = new ArrayList<Object>(); } @Test public void testEmptyCollection() { assertTrue(collection.isEmpty()); } @Test public void testOneItemCollection() { collection.add("itemA"); assertEquals(1, collection.size()); pruebas unitarias
pruebas unitarias Ejemplo: Test::Unit require ‘test/unit’ class PruebaSuma < Test::Unit::TestCase def test_suma assert_equal 4, 2+2 assert_equal 4, 3+1 assert_equal 5, 5+0 assert_equal 0, -5+5 end pruebas unitarias
pruebas unitarias Más información: JUnit.org http://www.junit.org Cactus http://jakarta.apache.org/cactus Clover http://www.thecortex.net/clover dbUnit http://www.dbunit.org HttpUnit http://www.httpunit.org Canoo WebTest http://webtest.canoo.com Temas relacionados: http://blog.espol.edu.ec/taws pruebas unitarias