Está en la página 1de 19

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE SISTEMAS


INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Laboratorio de: herramientas para automatizar pruebas de aceptación y pruebas de


regresión

Práctica No.: Laboratorio N# 3

Tema: HERRAMIENTAS PARA AUTOMATIZAR PRUEBAS DE


ACEPTACIÓN Y PRUEBAS DE REGRESIÓN

Nombre: Esteban Pérez Fecha: 04/02/2016

1. Objetivos:

1.1. Objetivo General

Realizar pruebas de aceptación y de integración con la intención de


llevar a la práctica los conocimientos adquiridos durante este periodo
en relación a este tipo de pruebas.

1.2. Objetivos Específicos

Probar Selenium para realizar pruebas en proyectos web que en nuestro


caso están desarrollados en java.

Realizar pruebas de regresión con la intención de encontrar si existen


errores en otros módulos al realizar cambios en el código

Razonar sobre la importancia que tienen las pruebas de aceptación y


pruebas de regresión.

2. Marco teórico:

2.1. Pruebas de aceptación


Es la etapa final en el proceso de pruebas antes de que se acepte
que el sistema se ponga en funcionamiento. Este se prueba con los
datos proporcionados por el usuario más que los datos de prueba
simulados. Debido a la diferencia existente entre los datos reales y
de prueba, la prueba de aceptación puede revelar errores y
omisiones en la definición de requerimientos donde los recursos

Página 1 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

del sistema no cumplen las necesidades del usuario o donde el


desempeño del sistema es inaceptable.

Habitualmente, el desarrollo de componentes va de la mano con


las pruebas son los mismos desarrolladores los que definen sus
datos de prueba y de forma incremental prueban el código que se
va desarrollando este es un enfoque económico ya que la mejor
persona para desarrollar un caso de prueba es el desarrollador [1].

Este enfoque como lo dice Somerville es un enfoque económico y


rápido sin embargo puede llevar a los desarrolladores a no ser
completamente objetivos en cuanto al desarrollo de pruebas.

2.2. Pruebas de regresión


Cualquier modificación sobre software ya probado, ya sea porque
se realizó una corrección se hiso un incremento o se realizó una
mejora se pueden incluir nuevos defectos, por lo que es necesario
aplicar sobre este nuevo código las pruebas que fueron diseñadas
para el código en su versión anterior a esta actividad se le
denomina Prueba de regresión.

Es necesario automatizar este tipo de pruebas ya que si no se


cuenta con una determinada herramienta que reproduzca las
pruebas originales y registre las comparaciones entre las salidas
este tipo de pruebas serían muy costosas dentro del proyecto de
desarrollo [2].

2.3. Selenium
Selenium es un conjunto de herramientas para automatizar los
navegadores web atreves de muchas plataformas [3].

Selenium es un marco de pruebas de software para aplicaciones


basadas en la web. Selenium provee una herramienta para grabar
y reproducir para crear pruebas sin usar un lenguaje de scripting
para pruebas es decir lo hace automáticamente (Selenium IDE).
Incluye también un lenguaje específico de dominio para pruebas
para crear pruebas en un amplio número de lenguajes de
programación populares incluyendo Java, C#, Perl, Php y Python,
Groovy, Perl, Php, Ruby y Python. Las pruebas pueden ejecutarse

Página 2 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

entonces usando la mayoría de los navegadores web modernos en


diferentes sistemas operativos como Windows, Linux y OSX [4].
2.4. Fitnesse
Fitnesse es un proyecto de código abierto, el código base no es
propiedad de ninguna compañía. Mucha información es compartida
por la comunidad de Fitnesse, es extremadamente adaptable
además es usado en pruebas web, GUI, para probar componentes
electrónicos.
Fitnesse automatiza las pruebas de aceptación teniendo muchas
ventajas sobre varias pruebas de caja negra basadas en GUI.
Fitnesse puede darnos una retroalimentación temprana en un
proyecto [5].

3. Desarrollo de la práctica:

3.1. CONFIGURACIÓN DEL AMBIENTE DE PRUEBAS

Nombre y Versión Características


1 Windows 7 Sistema operativo 64 bits
2 JUnit Herramienta para pruebas unitarias
3 Herramienta pruebas de accesibilidad y
Selenium
regresión
Herramienta pruebas de accesibilidad
4 Fitnesse regresión

5 Eclipse I IDE de desarrollo de java

3.2. ESQUEMAS DE FUNCIONAMIENTO DE LAS HERRAMIENTAS


3.3. Fitnesse

Página 3 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

3.4. Selenium

Página 4 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

3.5. PROCEDIMIENTO CON CAPTURAS DE PANTALLAS

Lo primero que aremos es levantar apache y MySQL como se muestra en la figura 1

Página 5 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Figura 1

A continuación vamos a abrir eclipse luna nuestro IDE de desarrollo de java como se
muestra en la Figura 2

Figura 2

Página 6 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Una vez abierto eclipse levantamos tomcat y corremos el proyecto que está cargado
dentro del IDE eclipse como se muestra en la figura 3.

Figura 3

Una vez abierto el navegador en el que se corrió la aplicación web que se corrió dentro
de tomcat vamos a abrir el complemento que está activado en Firefox que se
encuentra en la esquina superior izquierda como se muestra en la Figura 4.

Figura 4

Página 7 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

El botón grabar registrara lo que hacemos en el proyecto con la intención de observar


el comportamiento de la aplicación web cuando interactúa con la aplicación web, esto
se presenta en la figura 5

Figura 5

Dentro de la aplicación simularemos un login exitoso como se muestra en la Figura 6

Figura 6

Página 8 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

A continuación detenemos la grabación y guardaremos el archivo de la práctica en una


ruta en la que podremos localizar con facilidad el archivo.java que se genera, esto se
puede mostrar en la figura 7y Figura 8

Figura 7

Figura 8

Vamos a crear un nuevo proyecto llamado Proyecto Selenium en el que se copiaran


las librerías que fueron proporcionadas por el grupo expositor como se muestra en la
Figura 9

Página 9 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

F
igura 9

Una vez copiados los archivo los añadimos al building path dando clic derecho sobre
ellos y a continuación add building path una vez echo esto aparecerán en la carpeta
librerías referenciadas como se muestra en la Figura 10

Figura 10

Página 10 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Una vez realizado realizado estos vamos a importar el archivo.java que creamos en
previamente, los moveremos a nuestro proyecto y finalmente lo corremos como un
Junit test como se muestra en la Figura 11

Figura 11

Lo que sucederá es que se ejecutara la prueba Unitario JUnit

A Continuación probaremos la herramienta Fitnesse y después vamos a abrí el


directorio del laboratorio 3 desde la consola CMD de Windows 7 como se muestra en
la figura 12

Figura 12

Página 11 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Una vez estemos en el directorio vamos ejecutar el siguiente comando desde consola
como se muestra en la figura 13

Figura 13

Lo siguiente que vamos a hacer es abrir nuestro navegador preferido y abrir el servidor
en el puerto 8888 como se muestra en la figura 14

Figura 14

A continuación vamos a ir a pruebas de aceptación y configuraremos la ruta del


proyecto para poder realizar las pruebas como se muestra en la figura 15

Página 12 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Figura 15

A continuación debemos configurar la pruebas dentro de la dirección


localhost/Fitnesse.NewTest como se muestra en la Figura 16

Figura 16

Si no configuramos adecuadamente la prueba tendremos el siguiente error mostrado


en la figura 17

Página 13 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Figura 17

Otro error posible a la hora de realizar el test es el mostrado en la figura 18 que se


presentó durante el taller ya que no se configuro bien los path para el nuevo test

Figura 18

Página 14 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Una vez configurado adecuadamente los parámetros deberíamos de tener una prueba
como la mostrada en la Figura 19

Figura 19

3.6. CODIGOS FUENTE Y ARCHIVOS

3.7. Código generado por selenium (CasoJunit)


import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class CasoJunit {


private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://localhost:8080/";

Página 15 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

driver.manage().timeouts().implicitlyWait(30,
TimeUnit.SECONDS);
}

@Test
public void testCasoJunit() throws Exception {
driver.get(baseUrl + "/ProyectoJSP2/");
driver.findElement(By.name("txtUsuario")).clear();
driver.findElement(By.name("txtUsuario")).sendKeys("admin");
driver.findElement(By.name("txtClave")).clear();
driver.findElement(By.name("txtClave")).sendKeys("admin");
//Agregando el parametro para numero unico
driver.findElement(By.name("txtNumeroUnico")).clear();

driver.findElement(By.name("txtNumeroUnico")).sendKeys("12345")
;
//Agregando el parametro para numero unico

driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
driver.findElement(By.name("solicitud")).clear();
driver.findElement(By.name("solicitud")).sendKeys("1");

driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
}

@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {


try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {


try {

Página 16 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {


try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
3.8. Codigo generado por seleniumm 2(CasoJunit2)
import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.regex.Pattern;

public class CasoJunit2 {


private Selenium selenium;

@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444,
"*chrome", "http://localhost:8080/");
selenium.start();
}

@Test
public void testCasoJunit2() throws Exception {
selenium.open("/ProyectoJSP2/");
selenium.type("name=txtUsuario", "admin");
selenium.type("name=txtClave", "admin");
Página 17 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("30000");
selenium.type("name=solicitud", "1");
selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("30000");
}

@After
public void tearDown() throws Exception {
selenium.stop();
}
}

3.9. RESOLUCIÓN DE PREGUNTAS Y PROBLEMAS

No aplica para este laboratorio.

4. Análisis de resultados:

Se logró con éxito implementar las pruebas de aceptación en un ambiente de


pruebas prácticas dentro del laboratorio

Se logró determinar con éxito como realizar pruebas de aceptación en las


herramientas selenium y fitnesse

Se logró con éxito entender la importancia que tienen las pruebas de aceptación y
regresión dentro del desarrollo de software ya que estos pueden denotar si de verdad
se alcanzaron a cumplir con los requerimientos del usuario y además puede darnos
una retroalimentación sobre los cambios que se hicieron dentro del producto de
software y mejorarlo

5. Conclusiones y recomendaciones:

Se necesitaba más tiempo para poder terminar todo el laboratorio con más
calma que con la que se la realizo.

Página 18 de 19
ESTEBAN LEONARDO PEREZ HERRERA
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Sería una Buena práctica presentar varias alternativas de herramientas para


que sean los estudiantes quienes escojan la herramienta que desean
implementar.

6. Bibliografía:

[1] I. Sommerville, «Ingeniería del software,» Madrid, España, PERSON EDUCACION S.A., 2006.

[2] I. R. R. D. C. Javier Tuya, «Técnicas cuantitativas para la gestión en la ingeniería del


software,» La Coruña, España, NETBIBLO, 2007.

[3] seleniumhq, «www.seleniumhq.org,» 20 07 2015. [En línea]. Available:


http://www.seleniumhq.org/.

[4] «es.wikipedia.org,» 20 07 2015. [En línea]. Available:


https://es.wikipedia.org/wiki/Selenium.

[5] Fitnesse, «www.fitnesse.org,» 20 07 2015. [En línea]. Available:


http://www.fitnesse.org/FitNesse.UserGuide.AcceptanceTests.

7. ANEXOS

Página 19 de 19
ESTEBAN LEONARDO PEREZ HERRERA

También podría gustarte