Trata sobre el alcance que tienen las Pruebas Unitarias (Unit Testing) en la remodelación de la Ingeniería del Software...
Tanto que se lo toma en cuenta como sustituto del UML.
Además provee dos pruebas fáciles de realizar (el helloworld de las unit test) en dos lenguajes: el tan usado java y el revolucionario Ruby
2. 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
3. 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 // :-(
4. 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.
5. pruebas unitarias Ventajas 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
6. 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
7. pruebas unitarias 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"); } } Ejemplo: JUnit
8. pruebas unitarias 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()); } } Ejemplo: JUnit
9. pruebas unitarias 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 end Ejemplo: Test::Unit