Академический Документы
Профессиональный Документы
Культура Документы
Pruebas
” Año del Dialogo y la Reconciliación Nacional”
UNIVERSIDAD NACIONAL
“SAN LUIS GONZAGA” DE
ICA
FACULTAD DE INGENIERÍA DE SISTEMAS
ETAPASTRABAJO:
DE LAS PRUEBAS
ETAPAS DE LAS PRUEBAS
Ica – 2018
2
DEDICATORIA
3
AGRADECIMIENTOS
2. Beneficios................................................................................................................................... 8
2.4 Documentación..................................................................................................................…9
3. Limitaciones ........................................................................................................................... 10
4. Aplicaciones ........................................................................................................................... . 11
5. Técnicas .................................................................................................................................... 12
1. Manejo de excepciones:..................................................................................................... . 13
1. ¿Qué es el depurador?......................................................................................................... 19
5
4.1 Técnicas ................................................................................................................................ 22
1. El propósito ............................................................................................................................ 26
2. Método........................................................................................................ .............................. 26
6
Tabla de Figuras
Figura 1 El simbolo de Depuracion ............................................................................................ 19
Figura 2Proceso de Depuracion .................................................................................................. 21
Figura 3 Jerarquia de Pruebas...................................................................................................... 25
Figura 4 Pruebas de Caja Negra ................................................................................................... 27
Figura 5 Pruebas de Caja Blanca ................................................................................................. 28
Figura 6 Pruebas de Caja Gris ....................................................................................................... 30
Figura 7 Dialogo de Nuevo Proyecto ......................................................................................... 38
Figura 8 Código a Probar ................................................................................................................ 39
Figura 9 Resultado de Pruebas .................................................................................................... 40
Figura 10 Estructura del Proyecto de Java .............................................................................. 40
Figura 11 Menu para Agregar un Test ...................................................................................... 41
Figura 12 Cuadro de Dialogo de Nueva Clase......................................................................... 41
Figura 13 Resultados de las Pruebas en Eclipse ................................................................... 42
Figura 14 Código Js a probar......................................................................................................... 43
Figura 15 Estructura del Proyecto en js ................................................................................... 43
Figura 16 Resultado de las Pruebas en Buster.js .................................................................. 46
Figura 17 Estructura del Proyecto en Python ........................................................................ 46
Figura 18 Nuevo Test en Python ................................................................................................. 47
Figura 19 Resultados de Pruebas en Visual Studio .............................................................. 48
Figura 20 Nueva Prueba de UI...................................................................................................... 48
Figura 21 Cuadro de Generación de UI Test ........................................................................... 49
Figura 22 Grabación de pasos en el Navegador .................................................................... 49
Figura 23 Menú de Grabación de UI Test ................................................................................. 50
Figura 24 Prueba de UI con Assert ............................................................................................. 50
Figura 25 Estructura de Proyecto de Selenium ..................................................................... 50
Figura 26 Cuadro de Dialogo de Nueva Clase......................................................................... 51
7
I. Pruebas Unitarias
1. Conceptos básicos.
Es un método de prueba de software por el cual unidades de código fuente, conjunto
uso. Intuitivamente, uno puede ver una unidad como la parte más pequeña
menudo una interfaz, como una clase, pero podría ser un método individual.
Las pruebas unitarias son fragmentos códigos creados por los desarrolladores o
por tester de caja blanca durante el proceso de desarrollo.
La anatomía de una prueba de unidad está compuesto por tres partes: preparar,
actuar y afirmar. En preparar se hace todo lo necesario entre precondiciones y
entradas, luego para actuar se pone el objeto o método bajo la prueba y por último
se afirman los resultados esperados.
2. Beneficios.
La meta de las pruebas de unidad es aislar cada parte del programa y mostrar que
partes individuales son correctas. Proporciona un estricto contrato escrito que un trozo
del código debe satisfacer.
2.4 Documentación
2.5 Diseño
Cuando se desarrolla con un enfoque basado en pruebas, la combinación de
este. Cada prueba de unidad puede ser vista como un elemento de diseño que
especifica clases y métodos.
3. Limitaciones
pruebas unitarias ya que solo prueban funcionalidad de las unidades ellos mismos.
- Demanda de esfuerzo, se estima que por cada línea de código escrita, se escriben
probable que el código de prueba tenga errores al igual que el código que se
prueba.
4. Aplicaciones
(tiempo).
11
5. Técnicas
Las pruebas unitarias están comúnmente automatizadas, pero aun así se pueden
realizar en forma manual. La IEEE no está a favor de ninguno. El objetivo de estas
pruebas es aislar una unidad y validarla. El enfoque manual puede emplear documento
de instrucción paso a paso. Sin embargo, la automatización es eficaz para lograr
muchos beneficios.
Son a menudo productos de terceros que no se distribuyen como parte de la suite del
compilador. Ayudan al proceso de pruebas de unidad, estando en una variedad amplia
de lenguajes de programación. Es posible probar sin el uso de Frameworks al escribir
código que se ejecutan las unidades bajo pruebas de afirmación, manejo de
excepciones y mecanismos para señalar errores. Es bueno dejas la puerta abierta
para el uso de pruebas unitarias, ya que tener pocas pruebas de unidad es apenas
algo bueno a no tener ninguna, mientras que tener un framework en esta situación,
se haría relativamente fácil.
12
II. Manejo de excepciones
Antes de entrar en el tema de las excepciones en programación, se ha de matizar
en el concepto de qué son las excepciones, vistas desde un punto de vista fuera y
dentro del mundo de la programación.
A veces estas excepciones, para una máquina, no son casos que no deberían estar
contemplados, tal y como un programador se lo asigna, sino que pueden ser
indicadores para comprobar que realmente todo está marchando bien o no.
1. Manejo de excepciones:
Una excepción es un error que puede ocurrir debido a una mala entrada por parte
del usuario, un mal funcionamiento en el hardware, un argumento inválido para un
cálculo matemático, etc. Para remediar esto, el programador debe estar atento y
escribir los algoritmos necesarios para evitar a toda costa que un error de excepción
pueda hacer que el programa se interrumpa de manera inesperada.
13
Para las tres etapas anteriores existen tres palabras claves específicas: try, throw y
varios tipos y que pueden existir también receptores (manejadores) de varios tipos;
excepción. A la inversa, puede ocurrir que se lance una excepción para la que
Así pues, try es una sentencia que en cierta forma es capaz de especificar el flujo
14
if (condición) throw "overflow";
Es importante advertir que, salvo los casos en que la excepción es lanzada por las
propias librerías, estas no se lanzan espontáneamente. Es el programador el
que debe utilizar una sentencia (generalmente condicional) para, en su caso,
lanzar la excepción.
15
try { //bloque de código que se intenta
...
}
catch (...) { //bloque de manejador de posibles excepciones
...
}
... //continua la ejecución normal
hacer. A este respecto, las estrategias pueden ser muy variadas (no es lo
información pertinente, que se guarda en disco con objeto de que pueda ser
16
1.4. Ejemplos de código:
Ejemplo de manejo de excepciones en Java:
import java.io.IOException;
// ...
17
Ejemplo de manejo de excepciones en Python:
try:
result = x / y
except ZeroDivisionError:
print "division by zero!" else:
print "result is", result finally:
print "executing finally clause"
Using System;
Class test{
Public static void Main(string[] args){
double a = 10, b = 20, c = 0;
try{
c = a + b;
Console.WriteLine(“{0:f} + {1:f} = {2:d}”, a, b, c);
} catch(FormatException) {
Console.WriteLine(“Ha ocurrido un error
de formato”);
} catch(Exception e) {
Console.WriteLine(“Error: ” + e.Message);
}
}
}
18
III.Técnicas de depuración de
programas
La depuración de programas es el proceso de identificar y corregir errores de
programación. En ingles se le conoce como debugging, ya que se asemeja a
la eliminación de bichos (bugs), manera informal como se le conoce a los errores de
programación.
1. ¿Qué es el depurador?
Un depurador es una herramienta que permite intervenir durante la ejecución de
un programa, para saber cómo se está ejecutando. El depurador permite:
19
o Ejecutar pasó a paso un programa
(stepping).
o Establecer puntos de detención
(breakpoints).
o Examinar el contenido de las variables y
objetos.
o Conocer el encadenamiento de llamadas de
procedimientos.
o Retomar la ejecución hasta un nuevo punto de
detención.
2. Tipos de depuración
Existen 2 tipos de depuración: difícil y profunda.
o Una depuración difícil significa que hay problemas con la lógica del programa.
o Una depuración profunda solo mejora el programa, lo libera de
errores sencillos o busca código optimizable.
3. Proceso de depuración
El proceso de depuración comienza con la ejecución de un casi de prueba, luego se
evalúan los resultados y se encuentra una falta de correspondencia entre el
desempeño esperado y el real.
En este último caso, la persona encargada debe sospechar la causa y diseñar uno o
más casos de pruebas que ayuden a convalidar esa sospecha y avanzar hacia la
corrección del error de manera iterativa.
20
Figura 2 Proceso de Depuración
Después de que se reproduce el error, es posible que se simplifiquen para que sea más
puede hacer que falle al analizar algún archivo fuente grande. Sin embargo, después de
la simplificación del caso de pruebas solo algunas líneas del archivo fuente original puede
ser suficiente para reproducir el mismo accidente. Esta simplificación se puede hacer de
21
de pasar por alto alguna interacción con el usuario de la descripción original de
problema y verificar las acciones restantes es suficiente para los bugs que aparecen.
4.1 Técnicas
Depuración de impresión (o rastreo)
La Depuración remota
ejecuta en un equipo diferente desde el depurador. Para ello, el equipo que ejecuta el
programa y el ordenador que se está depurando el equipo debe estar unido a una red.
lo que los errores que pueda contener. Esto es útil para identificar cómo una aplicación puede
Depuración post-mortem
22
Depuración Delta
Squeeze saff
La solución en este problema se aísla mediante la ejecución de dos procesos. El primero
es un proceso de alto nivel que se utiliza para identificar los principales problemas en la
aplicación. A continuación, la unidad de pruebas específicas se ejecuta para aislar el
problema exacto o error. Esto acelera el proceso de depuración al mismo tiempo,
identificar los problemas exactos.
Para recopilar información sobre los estados de funcionamiento del sistema que puede
ser utilizada para analizar el sistema: para encontrar maneras de aumentar su rendimiento
o para optimizar otras características importantes (por ejemplo, consumo de energía,
fiabilidad, respuesta en tiempo real, etc.)
23
4.2 Anti depuración
Es la aplicación de una o más técnicas de código informático que impide los
intentos de ingeniería inversa o depuración de un proceso de destino, Se utiliza
activamente en los esquemas legítimos de protección de copia, pero también es
utilizado por el malware, para disfrutar su detección y eliminación. Las técnicas
utilizadas en la lucha contra la depuración son:
- Bloques de proceso e hilo: compruebe si los bloques de proceso e hilo han sido
manipuladas.
24
IV. Pruebas de integración
Prueba la interacción entre dos o más elementos, que pueden ser clases, módulos,
paquetes, subsistemas, etc. incluso la interacción del sistema con el entorno de
producción.
25
El prerrequisito de Pruebas de integración es tener dos módulos diferentes, de haber
probado para las pruebas unitarias.
Ejemplo:
Durante el proceso de fabricación de un bolígrafo, la tapa, el cuerpo, la cola y el clip, el cartucho
Cuando dos o más unidades están listas, se ensamblan, se lleva el acabo las pruebas de
1. El propósito
El propósito de las pruebas de integración es exponer los fallos en la interacción entre
unidades integradas, como también es verificar, el rendimiento y la fiabilidad funcional, y
exigencias impuestas a los principales elementos de diseño. Estos "objetos de diseño", es
decir, los conjuntos (o grupos de unidades), se ejercen a través de sus interfaces usando
pruebas de caja negra.
2. Método
Se puede usar cualquiera de los métodos.
26
Figura 4 Pruebas de Caja Negra
Este método se llama así debido a que el programa de software, a los ojos del
tester, es como una caja de color negro; dentro de la cual uno no puede ver.
Ejemplo
Un Tester, sin el conocimiento de las estructuras internas de un sitio web, pone a
prueba las páginas web mediante el uso de un navegador; usando solo (clics, las
pulsaciones de teclado en el sitio web) esperando la verificación de las salidas
contra el resultado esperado del flujo de navegación.
27
apropiadas. Las pruebas de caja blanca está son probados más allá de la interfaz
de usuario.
Este método se llama así debido a que el programa de software, a los ojos del
tester, es como una caja blanca / transparente; dentro de la cual se ve claramente
la estructura.
28
Ejemplo
válidos) y verifica los resultados en contra de los resultados esperados, los cuales
también se determina mediante el estudio del código de implementación.
Las pruebas de caja gris son beneficiosos, ya que toma la técnica sencilla de
pruebas de caja negra y lo combina con los sistemas específicos de código
(pruebas de caja blanca).
Efectos negativos:
- Cobertura de código parcial: En las pruebas de caja gris, el código fuente o
binarios están desaparecidos debido al acceso limitado a la estructura interna
de las aplicaciones que se traduce en un acceso limitado para el recorrer
el camino del código.
29
Figura 6 Pruebas de Caja Gris
Ejemplo
Un ejemplo de pruebas de caja gris sería cuando se estudian los códigos de dos
unidades / módulos (Método de ensayo Caja Blanca) para el diseño de casos de
prueba y las pruebas reales se realizan utilizando las interfaces expuestas (método
de Pruebas de Caja Negra) y es útil en la integración de pruebas.
3. Enfoques
integración.
Drivers de pruebas está apoyando código y los datos que se utilizan para
Se le puede llamar como un módulo de software que se utiliza para invocar un módulo
4. Limitaciones
Cualquier condición que no se mencionan en las pruebas de integración
31
5. Consejos
Asegúrese de que tiene un documento de diseño de detalle adecuado donde las
interacciones entre cada unidad están claramente definidos. De hecho, usted
no será capaz de realizar pruebas de integración sin esta información.
Asegúrese de que tiene un sistema de gestión de configuración de software
robusta en su lugar. O de lo contrario, tendrá un momento d i f í c i l
el seguimiento de la versión correcta de cada unidad, sobre todo si la cantidad
de
unidades que integrarse es enorme.
Asegúrese de que cada unidad es de primera unidad de prueba antes de iniciar
pruebas de integración.
En la medida de lo posible, automatizar sus pruebas, especialmente cuando se
utiliza el enfoque de arriba hacia abajo o de abajo hacia arriba, ya que las pruebas
de regresión es importante cada vez que integra una unidad, y las pruebas de
regresión manual puede ser ineficiente.
32
V. Implementación de
Pruebas Unitarias y de
Integración
Es importante mencionar que cuando nos referimos a la Implementación de las
pruebas unitarias, es común referirnos también al proceso de desarrollo de las mismas,
ya que ambas etapas son muy dependientes una de la otra y en muchos casos llegan
a superponerse.
34
1.2. Frameworks y Herramientas en Java
a. JUnit, es un conjunto de clases (framework) que permite realizar la
ejecución de clases Java de manera controlada, para poder evaluar si el
funcionamiento de cada uno de los métodos de la clase se comporta como
se espera. Es decir, en función de algún valor de entrada se evalúa el valor
de retorno esperado; si la clase cumple con la especificación, entonces JUnit
devolverá que el método de la clase pasó exitosamente la prueba; en caso
de que el valor esperado sea diferente al que regresó el método durante
la ejecución, JUnit devolverá un fallo en el método correspondiente. JUnit
es también un medio de controlar las pruebas de regresión, necesarias
cuando una parte del código ha sido modificado y se desea ver que el
nuevo código cumple con los requerimientos anteriores y que no se ha
alterado su funcionalidad después de la nueva modificación.
35
1.3. Frameworks y Herramientas en JavaScript
a. Karma, Una sencilla herramienta que permite ejecutar código
JavaScript en múltiples verdaderos exploradores. El objetivo principal de
Karma es hacer que su desarrollo TDD fácil, rápido y divertido. Karma no
es un marco de pruebas, ni una biblioteca de aserciones. Karma
simplemente lanza un servidor HTTP, y genera el archivo HTML corredor
de prueba usted probablemente ya sabe de su marco de pruebas favorito.
Así que para los propósitos de prueba se puede utilizar casi cualquier cosa.
Ya existen plugins para la mayoría de los marcos de las pruebas comunes
36
1.4. Frameworks y Herramientas en Python
a. PyUnit, Este marco de pruebas unitarias, apodado 'PyUnit' por
convención, es una versión en Python de JUnit. JUnit fue escrito por Kent
Beck galletas inteligentes y Erich Gamma, y es, a su vez, una versión Java
de marco de pruebas de Smalltalk de Kent. Cada uno es el framework de
pruebas estándar de facto para su respectiva unidad de la lengua, y
por lo tanto ambos son una base sólida para un marco Python eficaz y
elegante.
acciones del navegador, como visitar páginas web e interactuar con sus
implementación.
37
2. Implementación de Pruebas Unitarias
38
Figura 8 Código a Probar
Por defecto el proyecto de pruebas nos crea un caso de prueba de unitarias. Ahí
agregaremos una prueba unitaria básica para ilustrar el ejemplo.
[TestMethod]
public void Test_calculadora_suma_funciona()
{
//Arrange
var calculadora = new Calculadora();
var a = 5;
var b = 1.99;
var expeccted = 6.99;
//Act
var result = calculadora.Sumar(a,b);
//Assert
Assert.AreEqual(result, expeccted);
}
39
Siguiendo estas convenciones sencillas como marcar los métodos de prueba como
TestMethod es suficiente para que el gestor de pruebas puede descubrir las
pruebas unitarias, ejecutarlas y podamos ver los resultados.
Para ilustrar las pruebas unitarias en Java utilizaremos JUnit y el IDE Eclipse. Una
vez que tengamos nuestro proyecto (pieza de software a probar) procedemos a
asegurarnos que el proyecto cuente con las librerías externas (.jar) para realizar las
pruebas.
40
Ahora agregamos un caso de pruebas utilizando el menú contextual
en el proyecto: New > JUnit Test Case
41
Figura 12 Cuadro de Dialogo de Nueva Clase
//Act
float result = calc.Sumar(a, b);
//Assert
assertEquals(expected, result, 0);
}
42
2.3. Frameworks y Herramientas en JavaScript usando
Buster.js
43
Siguiendo la documentación de Buster, redactamos el test unitario siguiendo las
mismas convecciones que usamos anteriormente. En nuestro archivo calculadora-
test.js agregamos lo siguiente.
setUp: function () {
},
"Suma funciona correctamente": { "should return
5": function () {
//Arrange
var a = 5.55; var b = 1.11;
var re = 6.66;
//Act
var result = calculadora.suma(a,b);
//Assert assert.equals(re,result);
}
}
});
Una vez que tenemos escritos nuestro test, creamos una página HTML para ver
los resultados de las pruebas, Buster.js te provee una plantilla con estilos básicos
para que utilices como administrador de pruebas.
44
<html>
<head>
<script
type="text/javascript" src="http://cdn.busterjs.org/releases/latest/buster-
test.js"></script>
<script type="text/javascript"
src="../calculadora.js"></script>
45
Figura 16 Resultado de las Pruebas en Buster.js
import unittest
from DemoPython import sumar
class Test_testdemo(unittest.TestCase):
def test_sumar_funciona(self):
assert sumar(3,6) == 9
47
Una vez que hemos escrito nuestra prueba que podemos ver que es muy
sencilla. Utilizamos el explorador de pruebas integrado en Visual Studio
para ejecutar las pruebas y ver los resultados.
49
Figura 23 Menú de Grabación de UI Test
50
Una vez que nuestro proyecto tiene las librerías adecuadas para poder
escribir las pruebas agregamos una clase a nuestro proyecto.
import junit.framework.TestCase;
import com.thoughtworks.selenium.DefaultSelenium;
51
selenium.open("/");
assertTrue(selenium.isTextPresent("Hello"));
assertTrue(selenium.isTextPresent("World"));
selenium.stop();
}
}
Y ahora si podemos ejecutar nuestra prueba como parte de JUnit y ejecutar las
operaciones sobre un navegador real y probar la aplicación como tal.
52
VI. Conclusiones y
Recomendaciones
En conclusión, como hemos podido observar la automatización de pruebas
representa una herramienta útil para aliviar la carga de trabajo de los testers.
Hemos querido representar una visión general y global del proceso de prueba,
tanto para las pruebas unitarias como para las de integración.
Reproducir el error
Simplificar el escenario de prueba.
Depuración utilizando alguna de las técnicas descritas.
Entre las técnicas que podemos emplear son la Depuración de impresión, Depuración
Remota, Depuración Post-mortem, Depuración Delta, Depuración Squeeze saff, etc.
Hemos visto pruebas unitarias que ejecutan métodos en particular aisladas del resto
de dependencias y se ejecutan en aislado y por otro lado las pruebas de integración
ejecutan la aplicación en su conjunto tal cual será utilizado por el usuario final
para asegurarnos de que la aplicación es funcional.
53
opciones disponibles en su marco de trabajo, considere que cada día se hacen mejores
esfuerzos para automatizar el proceso de pruebas y debemos de aceptar el reto de
mantenernos en la constante actualización.
54
Bibliografía
Testing unit: http://en.wikipedia.org/wiki/Unit_testing
(s.f.). Obtenido de White Box Testing:
http://softwaretestingfundamentals.com/white-box-testing/
Academia mexico. (s.f.). Obtenido de Pruebas de integracion:
http://www.academica.mx/blogs/las-pruebas-integraci%C3%B3n-software
Black box Testing. (s.f.). Obtenido de http://softwaretestingfundamentals.com/black-
box-testing/
Centro de Artigos. (s.f.). Obtenido de Articulos eduactivos pruebas de integracion:
http://centrodeartigos.com/articulos-educativos/article_11464.html
CentroArtigos. (s.f.). Obtenido de Gray Box Testing:
http://centrodeartigos.com/articulos-educativos/article_11464.html
Depuración de programas. (2014). Obtenido de Wikipedia:
http://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programas
Depuración de Programas. (2014). Obtenido de http://lsi.ugr.es/:
http://lsi.ugr.es/~ig1/docis/depurac.htm
Depuración, Origen, Alcance, Instrumentos, Técnicas, Depuración para sistemas
embebidos, Anti-debugging. (2014). Obtenido de centrodeartigos.com:
http://centrodeartigos.com/articulos-noticias-consejos/article_128179.html
Depurador. (2014). Obtenido de Wikipedia: http://es.wikipedia.org/wiki/Depurador
56
57