Pruebas Web
Christian Alexis Manzanares Cruz a,
Eric Francisco Matute Velásquez b,
Gabriel Alexander Sosa Ramírez c
Kevin Ariel Santamaría Figueroa d
a Estudiante de la Carrera de
Ingeniería en Sistemas de la UNAH
b Estudiante de la Carrera de
Ingeniería en Sistemas de la UNAH
c Estudiante de la Carrera de
Ingeniería en Sistemas de la UNAH
d Estudiante de la Carrera de
Ingeniería en Sistemas de la UNAH
Resumen. En los
proyectos basados en tecnología web podemos destacar sus ventajas y
características que brindan un valor agregado en disponibilidad, flexibilidad,
accesibilidad, capacidad, desempeño y seguridad. Sin embargo, cumplir dichas
características representa un diseño y desarrollo adecuado, el cual se puede
medir por medio de pruebas con la finalidad de encontrar errores que afecten la
confianza del sistema, ya que, sin ella, el proyecto se irá al fracaso.
Abstract. In projects based on web technology we can highlight its advantages and
features that provide added value in availability, flexibility, accessibility,
capacity, performance and security. However, comply with these characteristics
represents a suitable design and development, which can be measured by tests in
order to find errors affecting confidence in the system, because without it,
the project is going to fail.
Palabras Claves. Pruebas, Proyectos, Sitios, Paginas, Web, Aplicaciones.
PRUEBAS DE SOFTWARE
Las pruebas de software
son un conjunto de técnicas que forman parte del control de calidad para
verificar el cumplimiento de las expectativas del usuario referente a los
requerimientos funcionales y no funcionales del software, también respecto a la
disponibilidad, usabilidad, rendimiento, velocidad, seguridad y confianza. En
simples palabras las pruebas son investigaciones empíricas que tienen el
propósito de encontrar errores en el software desarrollado permitiendo
corregirlos antes de su debida implementación o antes de proseguir a otra etapa
de pruebas, generalmente con los usuarios finales.
De manera práctica una
prueba es una actividad la cual se ejecuta el sistema o cierta parte de él con
condiciones previamente definidas, observando los resultados registrándolos y
aplicándoles una evaluación. La evacuación pertenece a algún caso de prueba el
cual se compara respecto a un conjunto de entradas, condiciones de ejecución y
resultados esperados.
El objetivo de las
pruebas es encontrar errores, una prueba que encuentra uno o más errores es una
prueba exitosa.
Las pruebas del sistema
deben ir añadidas desde el análisis como estáticas, ya que por medio de pruebas
de escritorio o pequeñas compilaciones ya que dará un mejor flujo y seguridad
en el avance del proyecto.
Las pruebas dinámicas se
ejecutan cuando la etapa del desarrollo ha concluido, por tanto, son pruebas
dedicadas con mucha mayor amplitud porque con el software terminado se obtiene
un mayor panorama, realizando las métricas correspondientes a las
características críticas del proyecto correspondiente a la eficiencia y
eficacia del mismo.
TIPOS
DE PRUEBAS
Entre las más importantes
respecto a nuestro contexto están:
Pruebas
de compatibilidad:
Son las pruebas que se
realizan a determinado software con el motivo de comprobar si es compatible con
todos los navegadores de internet y dispositivos para los cuales va dirigido.
Esta prueba es de suma importancia ya que determinará si el producto llegará a
todos los usuarios a tal manera de que lo utilicen con el equipo con que
disponen.
Pruebas
de integración:
Es una prueba dinámica
posterior a las pruebas en cada módulo del sistema. Se centra en probar el
cruce de la información entre módulos.
Pruebas
de regresión:
Se evalúa la
adaptabilidad del software referente a cambios funcionales o contextuales ya
sea a nivel hardware y software. Comprobando que el software funcione de manera
óptima solamente con el cumplimiento de las especificaciones básicas.
ENFOQUES DE PRUEBAS
Pruebas
de caja blanca
Las pruebas de caja
blanca se centran en la estructura interna del programa, analizando los caminos
de ejecución.
Consiste en predefinir
valores de entrada para examinar cada flujo de ejecución para verificar los
valores de salida adecuados. Este tipo de pruebas es muy específica y
subjetiva, por tanto, debe diseñarse una prueba por cada caso particular que se
desee experimentar.
Generalmente se aplican a
subsistemas o a módulos ya que sería muy complicado evaluar la intervención de
un flujo demasiado complejo.
Este tipo de pruebas es
muy específico y adecuado para encontrar problemas funcionales, a pesar de
ellos podría pasar por alto requisitos faltantes pese a realizar pruebas
exhaustivas de todos los flujos.
Pruebas
de caja negra
Es un conjunto de técnicas
que se centran en estudiar desde todos los puntos de vista las entradas que
recibe el sistema y las salidas que produce el mismo respecto a las entradas,
dejando de tomar en cuenta el funcionamiento interno del software caso
contrario de las pruebas de caja blanca.
Este tipo de pruebas nos
da un panorama más amplio ya que permite ver al sistema como un todo, dando la
facilidad de aislar un fallo más ágilmente, conociendo que hace el software y
no como lo hace.
Pruebas
Aleatorias
Las pruebas aleatorias
son las más importantes en el desarrollo de cualquier software ya que acompañan
el desarrollo del mismo, por tanto, se vuelve de los tipos de pruebas más
complicadas ya que cada prueba conlleva objetivos diferentes en cada etapa del
desarrollo.
Consiste en buscar
errores en cada uno de los componentes del software, llamados pruebas de
unidad, que pueden probar la existencia de bug pero no la ausencia de ellos.
Hemos especificado en qué
consisten las pruebas globalmente para cualquier software, ahora nos
enfocaremos a sistemas basados en tecnología web, por tanto, entraremos en
contexto a continuación:
SISTEMAS WEB DE CALIDAD
Es preciso saber que los requerimientos
del software son una gran prioridad ya que el ellos se basan los objetivos del
proyecto, sin embargo, fuera de ellos existen ciertas características que
brindan mucha importancia en el desempeño del proyecto, las cuales podríamos
definirlas como determinantes de calidad.
Según el estándar ISO 9126 la calidad la podemos conocer
como un conjunto de propiedades y características que dan aptitud para
satisfacer las expectativas, necesidades implícitas y explícitas, o sea que los
elementos que brindan la calidad brindan una excelente plataforma para el
cumplimiento de los requisitos funcionales y no funcionales del sistema.
A un alto nivel de abstracción
podemos desglosar la calidad en los siguientes elementos:
·
Funcionalidad: Es la capacidad del software de
cumplir con los requisitos definidos.
·
Fiabilidad: Es la capacidad del sistema para mantenerse
en las mismas condiciones de rendimiento sin importar la hora o en lugar desde
donde se accede.
·
Usabilidad: Podemos interpretarlo como la
amigabilidad y comodidad del software, este elemento se determina respecto a la
experiencia del usuario.
·
Portabilidad: Es la capacidad de adaptabilidad
del sistema cuando se cambia de contexto, aquí juega un papel muy importante la
compatibilidad, la sencillez en la implementación y una planificación para
escalabilidad adecuada.
·
Mantenibilidad: Es el esfuerzo que se necesita
hacer para realizar cambios necesarios al sistema, entre menor sea es mucho
mejor, y preferiblemente automatizado.
·
Eficiencia: Aquí es muy importante el manejo de
los recursos, ya que un mal manejo de ellos afectará definitivamente a uno o
varios de los elementos anteriores, también se debe considerar la usabilidad en
todo tipo de dispositivos que el usuario podría disponer para usar el sistema.
En vista a lo anterior el estándar ISO
14598 nos da a conocer tres aproximaciones para conocer la calidad de un
producto:
·
Calidad interna: Se refiere a la calidad de
organización y estética del código, lo cual brinda mayor facilidad para
interpretar el código para cualquier programador.
·
Calidad externa: Aquí se evalúa el código en acción.
·
Calidad en uso:
Se mide por el grado por el cual el software está realizado en función
de las necesidades del usuario en el entorno de trabajo para el que fue
construido.
Es preciso hacer un mayor énfasis en
la usabilidad, ya que de ella depende la satisfacción del usuario, porque es el
atributo más visible en una aplicación web, y lo más curioso es que este
elemento también da a conocer la fiabilidad, seguridad y productividad al
usuario, que generalmente es una característica interna del sistema.
PRUEBAS
WEB
A
continuación, detallaremos las pruebas básicas correspondientes a cada
componente importante de los sistemas web:
Prueba de funcionalidad
Consiste
en probar todos los enlaces de la página, las cookies, la conexión a la base de
Datos, etc…
·
Verificación de los enlaces:
o Enlaces externos.
o Enlaces internos.
o Redirección de los enlaces externos a la página
correspondiente.
o Verificar enlaces para envío de emails.
o Verificar la inexistencia de páginas aisladas.
o Verificar la ausencia de enlaces rotos.
·
Verificación de los formularios en todas las páginas:
Los
formularios son prácticamente la parte más importante del sistema ya que por
medio de ella se intercambia información con el usuario, por tanto, debemos
tener presente los siguientes puntos:
·
Validación para
cada campo.
·
Valores por
defecto en cada campo.
·
Entradas
equivocadas o no correspondientes en el formulario.
·
Pruebas de cookies:
Las
cookies son archivos pequeños almacenados en la computadora del usuario,
básicamente estos archivos mantienen la sesión iniciada, es recomendable probar
el sistema habilitando y deshabilitando las cookies en el navegador. Se debe
probar si las cookies están encriptadas, también es importante saber reconocer
el estado del usuario cuando este cierra la sesión, lo más adecuado sería
eliminar las cookies.
·
Validar con HTML/CSS
Para
optimizar la página web se deben hacer las validaciones a nivel de sintaxis con
html y css.
·
Pruebas a la base de datos
La
consistencia de la base de datos también es muy importante en las aplicaciones
web. Debemos comprobar la integridad y posibles errores a la hora de añadir,
modificar y eliminar datos de los formularios o datos pertenecientes a otras
funcionalidades del sistema.
Pruebas
de Usabilidad
·
Navegación:
La navegación es la manera en la que el usuario se
conduce en las diferentes páginas del sitio, tomando en cuenta los diversos
controles que se pueden emplear, por ejemplo: botones, cajas e imágenes que
servirán de enlaces en las páginas internas o externas. En las pruebas respecto
a la navegación se debe considerar
·
Facilidad de uso.
·
Instrucciones claras.
·
Instrucciones precisas y específicas.
·
Menú principal en todas las páginas.
·
Todo el sitio debe ser lo suficientemente
consistente.
·
Contenido
de la página:
El contenido mostrado en las páginas debe estar
presentado de manera fácil de entender. Se debe considerar escoger los colores
adecuados, también el tamaño del texto, las imágenes y la distribución de los
elementos.
·
Información
de ayuda:
Aquí va incluida la opción de búsqueda, el mapa del
sitio. Se debe procurar validar las búsquedas para presentar al usuario lo que
desea encontrar de manera precisa.
Pruebas
de Conectividad
La conexión cliente-servidor y la conexión a la base
de datos son las interfaces más importantes. Se debe comprobar si la
conectividad al servidor no presenta algún error, en caso de que si presente un
error se debe capturar y analizar para el mantenimiento que conllevaría
realizar. Ya que un error de conectividad puede causarse por muchas razones.
Pruebas
de Compatibilidad
La compatibilidad del sitio web es un aspecto muy
importante, que se debería poner a prueba tomando en cuenta los siguientes
aspectos:
·
Compatibilidad
de los navegadores:
Se sabe que hoy en día muchas aplicaciones web
dependen en gran manera de un navegador determinado, ya que cada uno de los
navegadores tiene configuraciones diferentes, las cuales deben ser compatibles
con nuestra página web. Se debe considerar probar la aplicación web en
diferentes navegadores como: Interner Explorer, Firefox, NetScape, AOL, Opera,
Chrome, en sus diferentes versiones.
·
Compatibilidad
en diferentes sistemas operativos:
Algunas funcionalidades de nuestra aplicación web no
podrían funcionar en todos los sistemas operativos. Es preciso mencionar
tecnologías de diseño gráfico, conexión a diferentes API’s no disponibles en
todos los sistemas operativos. Por tanto es importante probar nuestra app en
diferentes sistemas operativos como Windows, unix, MAC, Linux, Solaris en sus
diferentes versiones para cada uno.
·
Opciones
de impresión:
Debemos prestar atención que todas las fuentes están
disponibles, la alineación, los gráficos de la página, etc. También es
importante ajustar la impresión al tipo de papel que el usuario desea imprimir.
Pruebas
de Rendimiento
En la prueba de
carga se utiliza en diferentes conexiones de internet para acceder a la
misma página. Lo importante es registrar los tiempos de carga, y saber cómo el
sitio maneja las solicitudes simultáneas al servidor y a la base de datos.
En la prueba de
estrés generalmente se prueba el sistema cuando este llega a su límite, el
propósito es registrar el comportamiento de la página cuando esta se encuentra
en estado de estrés y cómo se recupera de este estado. También es importante
testearla en diferente tipo de hardware para conocer diferentes errores que
pueden surgir.
Pruebas
de Seguridad
En seguida nombraremos algunos casos importantes a
considerar a la hora de comprobar la seguridad de nuestro sitio:
·
Evitar el acceso a ciertas páginas sin
antes haber accedido al login.
·
Validación en el login, evitando
inyecciones SQL manuales.
·
El directorio de la página web no debe ser
accedido por el navegador.
·
Aplicar autómatas CAPTCHA.
·
Probar las medidas del certificado de
seguridad https://
·
Comprobar y registrar todas las
transacciones y sus errores.
Herramientas
para Pruebas
·
Wireshark: Es un analizador de tráfico
web, también utilizado para detectar vulnerabilidades en la red.
·
Jmeter: Es un proyecto de apache
caracterizado por hacer pruebas de desempeño en variedad de servicios.
·
Sonarqube: Nos permite analizar la
organización de nuestro código, con soporte de más de 20 lenguajes de
programación.
·
Beyond Compare: Nos permite comparar
distintos archivos binarios que se utilizan como contenido en nuestro sitio
web.
CONCLUSIONES
I.
Las
características que definen la calidad de un producto o servicio web deben
establecerse como requerimientos no funcionales ya que ellos proveen la
plataforma para que el software cumpla con los requisitos funcionales.
II.
Las
pruebas deben acompañar en todo el proceso de desarrollo del proyecto para
reducir los bugs, aunque jamás estaremos cien por ciento seguros tener todo el
funcionamiento perfecto.
III.
Las
pruebas deben ser exhaustivas en cada componente atómico ya que un problema en
un lugar desencadena más errores debido a que los proyectos web integran muchas
tecnologías y piezas necesarias para su correcto funcionamiento.
AGRADECIMIENTOS
I.
A
la Universidad Nacional Autónoma de Honduras por brindarnos la oportunidad de
la educación, la cual nos permite escalar en el ámbito profesional.
II.
A
nuestros padres que nos han apoyado, tanto económicamente para que el sueño de
poder alcanzar un título en título e integrarnos en la sociedad para aportar
ideas valiosas que puedan desarrollar nuestro país.
REFERENCIAS
I.
Macario Polo Usaola, Automatización
y gestión de pruebas de software, http://alarcos.esi.uclm.es/per/fruiz/curs/santander/mpolo-pruebas.pdf
II.
Carlos D. Gonzales (2016),
Evaluación de Calidad Web. http://www.usabilidadweb.com.ar/metodos_eval_calidad_web.php
III.
Vijay (2016), How can a Web site be
tested? http://www.softwaretestinghelp.com/how-can-a-web-site-be-tested/
IV.
Vijay (2016), Web Testing: A
Complete guide about testing web applications. http://www.softwaretestinghelp.com/web-application-testing/
V.
Paulina Aillón, (2011), Pruebas de
Aplicaciones Web. http://es.slideshare.net/paulinaaillon/pruebas-de-aplicaciones-web
VI.
Testeando Software (2015),
Herramientas fundamentales para pruebas. http://testeandosoftware.com/10-herramientas-para-pruebas-de-software-ii/
No hay comentarios:
Publicar un comentario