Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7
3
4 5
c. (4pts) Para el grafo de flujo de datos. Mencione las rutas necesarias para hacer una cobertura
completa de declaraciones
Declaraciones Ruta
Ruta 1: low = 0; 1-2-3-4-2-7
high = n - 1;
mid = (low + high)/2;
high = mid - 1;
mid = mid - 1;
Ruta 2: low = 0; 1-2-3-5-6-2-7
high = n - 1;
mid = (low + high)/2;
low = mid + 1;
Ruta 1: 1-2-7
Ruta 2: 1-2-3-4-2-7
Ruta 3: 1-2-3-5-6-7
Ruta 4: 1-2-3-5-6-2-7
2. (5pts) Identifique una anomalía de flujo de datos en el código dado en el método modifiedbinsearch().
3. (5pts) Una anomalía en un programa ha sido definida por la consideración de tres operaciones, es
decir, definido(d), referenciado(r) e indefinido(u). Las tres secuencias de operaciones identificadas
como anomalía de programa son Dd, Du, y Ur. Analice y explique por qué el resto de las secuencias
de dos pares de operación (Por ejemplo Ud, Dr, …) no se consideran anomalías de programas.
Dd Du Dr Rd Ru Rr Ud Uu Ur
Podemos ver como en aquellas cuyo inicio es R permiten operar sin que se presente anomalía ya que el valor
ya se tuvo que haber definido o referenciado anteriormente para que llegara sin anomalías a dicho punto, por
otro lado las que inician en U se pueden definir para asignarle un valor o indefinir nuevamente ya que
igualmente no generaría espacio en memoria, lo que deja Dr lo cual es permitido ya que podemos referenciar
algo siempre y cuando sea definido anteriormente.
4. (5pts) Si un programa pasa todas las pruebas de caja negra, lo que significa que el programa
debería funcionar correctamente. Entonces, además de las pruebas de caja negra, ¿Porqué cree
que necesita llevar a cabo pruebas de caja blanca también? Justifique su respuesta.
Las pruebas de caja Negra se enfocan en obtener la salida deseada para las variables de entrada, por otro
lado las de caja Blanca revisa el proceso utilizado para obtener dicha salida, ya que durante el proceso el
programa puede contener variables definidas pero no utilizada, líneas de código inaccesible, procedimientos
ineficientes, que pueden ocupar memoria innecesariamente o aumentar el tiempo de ejecución del programa.
5. (5pts) Describa las diferencias entre pruebas unitarias y pruebas de integración. Adicionalmente
responda a la pregunta. ¿Porqué cree que son necesarias las pruebas de integración en el proceso
de construcción de software?
Las pruebas unitarias se encaminan en el correcto funcionamiento de cada módulo por separado, mientras
que las de integración comprueba que una vez los módulos estén juntos tengan el comportamiento deseado.
Las pruebas de integración son necesarias ya que una vez verificamos cada módulo por separado,
necesitamos ver el comportamiento que este tiene al hacer parte del sistema, errores o nuevos
requerimientos pueden aparecer durante esta prueba.
6. (10 pts) Caso práctico Pruebas Unitarias: Utilice la clase Linea para resolver el siguiene ejercicio
(Puntos a,b y c mencionados en la parte de abajo) usando JAVA con Junit.
//Clase Linea
public class Linea {
// Variables privadas
private double x0, y0, x1, y1;
//Junit text
public LineaTest() {
}
/**
* Test of getPendiente method, of class Linea.
*/
@Test
public void testGetPendiente1() {
System.out.println("getPendiente");
double x0=2;
double y0=3;
double x1=9;
double y1=10;
Linea instance = new Linea(x0, y0, x1, y1);
double expResult = (y1-y0)/(x1-x0);
double result = instance.getPendiente();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testGetPendiente2() {
System.out.println("getPendiente");
double x0,x1,y0,y1;
x0=45;
y0=-89;
x1=78;
y1=-4;
Linea instance = new Linea(x0, y0, x1, y1);
double expResult = (y1-y0)/(x1-x0);
double result = instance.getPendiente();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testGetPendiente3() {
System.out.println("getPendiente");
double x0,x1,y0,y1;
x0=665;
y0=985;
x1=-45;
y1=-8787;
Linea instance = new Linea(x0, y0, x1, y1);
double expResult = (y1-y0)/(x1-x0);
double result = instance.getPendiente();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
/**
* Test of getDistancia method, of class Linea.
*/
@Test
public void testGetDistancia1() {
System.out.println("getDistancia");
Linea instance = new Linea(0, 10, 0, 70);
double expResult = 60.0;
double result = instance.getDistancia();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testGetDistancia2() {
System.out.println("getDistancia");
Linea instance = new Linea(-10.0, 25.3, 80.0, 25.3);
double expResult = 90.0;
double result = instance.getDistancia();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testGetDistancia3() {
System.out.println("getDistancia");
Linea instance = new Linea(-2, 1, 1, 5);
double expResult = 5.0;
double result = instance.getDistancia();
assertEquals(expResult, result, 0.0);
// TODO review the generated test code and remove the default call to fail.
}
/**
* Test of paralelaA method, of class Linea.
*/
@Test
public void testParalelaA1() {
System.out.println("paralelaA");
Linea l = new Linea(0, 10, 20, 10);
Linea instance = new Linea(12, 88, 55, 88);
boolean expResult = true;
boolean result = instance.paralelaA(l);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testParalelaA2() {
System.out.println("paralelaA");
Linea l = new Linea(45, -780, 52, -780);
Linea instance = new Linea(52, 328, 542, 328);
boolean expResult = true;
boolean result = instance.paralelaA(l);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
}
@Test
public void testParalelaA3() {
System.out.println("paralelaA");
Linea l = new Linea(28, 0, 180, 152);
Linea instance = new Linea(-328, -328, 42, 42);
boolean expResult = true;
boolean result = instance.paralelaA(l);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
}
}