Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2005MundoInternetGutierrez PDF
2005MundoInternetGutierrez PDF
RESUMEN
El proceso de prueba en el desarrollo de sistemas software permite evaluar la calidad de una aplicacin.
Sin embargo las estrategias clsicas de pruebas del sistema software no son sencillas de aplicar a los
sistemas web debido a sus caractersticas intrnsecas como arquitectura cliente-servidor, mezcla de
elementos heterogneos (pginas HTML, lenguajes de script, etc.), necesidad de soporte de accesos
concurrentes y altas cargas de trabajo, clientes web muy heterogneos, etc.
En este trabajo se documenta un caso prctico en el que se toma como base una aplicacin web muy
sencilla desarrollada utilizando HTML, PHP y MySQL, y sobre la que se aplican tcnicas y herramientas
open-source para desarrollar un conjunto de pruebas funcionales tanto en la interfaz HTML del lado
cliente como en el cdigo PHP del lado del servidor. Por ltimo se desarrolla una prueba de carga o stress
sobre toda la aplicacin.
unitarias sobre dicha aplicacin. En el apartado 4
veremos como realizar pruebas de integracin.
1. INTRODUCCIN. En el apartado 5, como ejemplo de prueba de
sistema, veremos como realizar una prueba de
Internet proporciona a los desarrolladores carga y en el apartado 6 las conclusiones.
una forma innovadora para construir software y
un parque potencias de usuarios que se
contabilizan por millones [4]. Por esta misa 1.1. Definiciones.
razn, los problemas que se presentan en una
aplicacin web, pueden afectar a cientos de miles Una pgina web es todo tipo de
de usuarios y pueden causar cuantiosas prdidas informacin que puede ser vista en una ventana
[2], adems de afectar tambin a las relacin del navegador [2]. Generalmente est compuesta
entre los usuarios y la entidad duea de la por cdigo HTML, generado de manera esttica
aplicacin web. Por este motivo las pruebas de o dinmica, o por componentes ejecutables en el
software cobran una importancia vital en el cliente, como un mdulo Flash.
desarrollo de aplicaciones web. Se llama sitio Web a una agrupacin de
Las primeras aplicaciones web tenan un pginas web, donde los elementos de las pginas
diseo muy simple, basado en pginas estticas estn relacionados semnticamente por el
HTML. Actualmente, las aplicaciones web son contenido y sintcticamente a travs de enlaces.
ms sofisticadas e interactivas, con interfaces de El acceso a la aplicacin web de los usuarios se
usuarios, mediante pginas dinmicas. Analizar, hace mediante peticiones HTTP, y la interfaz
evaluar, mantener y probar las aplicaciones web ms utilizada es un navegador web ejecutado en
actuales presentan muchos y novedosos desafos un PC.
para los desarrolladores y los investigadores del Generalmente, una aplicacin web se
software. construye utilizando diversas tecnologas,
A continuacin, en este apartado, se incluyendo los lenguajes de scripting que
definirn algunos conceptos bsicos utilizados en funcionan dentro del HTML en el cliente, los
todo el trabajo, se presentarn las caractersticas lenguajes interpretados que funcionan en el
bsicas de una aplicacin web segn el modelo servidor, los lenguajes compilados en el servidor,
cliente/servidor y se dar una breve definicin las pginas de mdulos en el servidor, los
del proceso de prueba del software. En el lenguajes de programacin de propsito general
apartado 2 describiremos una sencilla aplicacin (servicios web), se suelen utilizar servidores de
web que servir de ejemplo para aplicar las bases de datos como almacenes de informacin.
tcnicas de pruebas vistas en este trabajo. En el Estas tecnologas cooperan entre s para construir
apartado 3 describiremos como realizar pruebas
este tipo de aplicaciones, obteniendose una Cliente Servidor
aplicacin multiplataforma.
Peticin
Cliente/Servidor en aplicaciones
web.
Cdigo ejecutable en el
servidor
El funcionamiento de una aplicacin
Internet es anlogo al de una aplicacin
Servidor de
cliente/servidor tradicional, tal y como se bases de datos
Formulario de
Cliente almacenado Tabla 3. Estructura de la funcin de insercin
clientes correctamente MySQL de clientes.
Ilustracin 5. Componentes del sistema del La prueba va a consistir en dos partes, las
lado cliente y del lado servidor. cuales se detallan en la tabla 4.
Paso Accin Verificacin.
1 Llamar a la funcin Verificar que el El cdigo del script en PHP que implementa
insertarCliente con resultado de la funcin. esta prueba se muestra a continuacin, en la tabla
un cliente de prueba 5.
2 Buscar en la base de Verificar que el cliente Al ejecutar esta prueba, si la funcin
datos el cliente de existe en la base de
insertarCliente no presenta ningn fallo se
prueba insertado en el datos y sus valores
paso anterior coinciden con los obtiene una salida como la mostrada en la
valores del cliente de ilustracin 6, la cual indica que la prueba ha sido
prueba. superada satisfactoriamente.
Tabla 4. Pasos de la prueba.
<?
include_once('./PHPUnit/PHPUnit.php');
include_once('./FuncionInsertarCliente.php');
var $cliente_prueba;
function testInsertarCliente() {
$this->PHPUnit_TestCase("testInsertarUnCliente");
}
function setUp() {
$this->cliente_prueba['entidad'] = "prueba_entidad";
$this->cliente_prueba['actividad'] = "prueba_actividad";
$this->cliente_prueba['direccion'] = "prueba_direccion";
$this->cliente_prueba['localidad'] = "prueba_localidad";
$this->cliente_prueba['codigo_postal'] = "00000";
$this->cliente_prueba['telefono'] = "000-00-00-00";
}
function testInsertarUnCliente() {
$resultado = insertarCliente($this->cliente_prueba);
$this->assertTrue($resultado);
}
function testClienteInsertado(){
$conn = mysql_connect("localhost", "", "")
mysql_select_db("Clientes")
$sql = "SELECT * FROM Clientes WHERE entidad='".
$this->cliente_prueba['entidad']."'";
$resultado = mysql_query($sql)
$cliente = mysql_fetch_array($resultado) ;
$this->assertEquals($this->cliente_prueba['entidad'],
$cliente['Entidad'], "Entidades distintas.");
// El resto de campos se comprueban de la misma manera.
mysql_free_result($resultado);
}
} // Fin de la clase.
A diferencia de los scripts del lado del 3.1.2. Prueba de cdigo JavaScript.
servidor, una pgina HTML no suele realizar Como vimos en el punto 2, el formulario de
ninguna tarea, sino que contiene la informacin clientes incluye tambin un script en lenguaje
que se debe mostrar y como debe mostrarse. Por JavaScript para evitar campos obligatorios en
tanto se ha decidido elaborar pruebas para blanco. Este cdigo tambin es necesario
verificar que cada pgina de la aplicacin de probarlo para verificar que su comportamiento es
ejemplo cumple con los estndares HTML correcto, esto es, que detecta todas las posibles
propuestos por el consorcio W3C. En la pgina combinaciones invlidas.
web del consorcio se puede encontrar una Originalmente el cdigo JavaScript se
herramienta de validacin de archivos HTML encontraba incrustado en la pgina HTML que
[14]. En la tabla 6 se muestra un resumen del contiene el formulario de clientes, lo cual
proceso de prueba de las pginas HTML de la dificultaba su prueba. Por este motivo, el cdigo
aplicacin. fue movido a su propio archivo (validar.js). En
la tabla 7 se muestra un fragmento del cdigo de
validacin del formulario.
La herramienta de validacin proporciona una opcin
para subir la pgina a validar. En la aplicacin de
ejemplo, al validar el formulario de clientes
aparecieron los siguientes errores:
function Validador(FormularioClientes) {
if (FormularioClientes.entidad.value == "") {
alert("El campo \"Entidad\" es obligatorio.");
FormularioClientes.entidad.focus();
return (false);
}
if (FormularioClientes.actividad.value == "") {
alert("El campo \"Actividad\" es obligatorio.");
FormularioClientes.actividad.focus();
return (false);
}
return (true);
}
import net.sourceforge.jwebunit.WebTestCase;
import com.meterware.httpunit.*;
import com.meterware.servletunit.*;
import java.util.*;
import junit.framework.*;
public TestFormularioClientes() {
super("TestFormularioClientes");
}
Ilustracin 10. Definimos un grupo de veinte usuarios que realizarn dos peticiones al servidor.
Ahora se indica la accin a realizar de cada acceder a la pgina del formulario, como se
hilo. Para ello se aade una peticin HTTP para muestra en la ilustracin 11.
Ilustracin 11. Peticin http que ejecutar cada hilo.
Para completar la primera parte de la prueba, vez hecho esto, ya se puede ejecutar la primera
se aade un elemento que permita ver los parte de la prueba. En la ilustracin 12 se
resultados de la prueba de manera grfica. Una muestra el resultado de varias ejecuciones.