Table Of ContentAplicación de técnicas de pruebas
automáticas basadas en propiedades a
los diferentes niveles de prueba del
software
Autor:
Miguel Ángel Francisco Fernández
Directora:
Laura M. Castro Souto
Tesisdoctoral
UNIVERSIDADE DA CORUÑA
2015
ProgramareguladoporelRD778/1998:DepartamentodeComputación
A
GRADECIMIENTOS
Noquerríadesaprovecharestaoportunidadsinagradeceralapersonaquehasido,
sin duda, la más influyente en mi vida laboral, el que fue inicialmente el director
deesta tesisy ungranamigo, VíctorM.Gulías, porseruna fuentede inspiración y
motivación en todo momento para mí, por su ayuda, sus mensajes tranquilizantes y
su apoyo, por su gran sabiduría y sus ideas brillantes, y, en especial, por lo mucho
que he aprendido de él, tanto en lo académico, en lo profesional e incluso en lo
personal.Gracias.
MegustaríaagradecertambiénaLauraM.Castro,directoradeestatesis,portoda
la ayuda recibida durante todos estos años, comenzando con los primeros trabajos
de investigación que hemos realizado juntos hasta la escritura de este trabajo. Sin
ella,larealizacióndeestatesisnohabríasidoposible.
Gracias también a mis compañeros de trabajo de LambdaStream e Interoud, los
cuales,avecessinsaberlo,mehanayudadomuchoaportandoinformaciónmuyva-
liosaquehapodidoserusadaenestetrabajoacercadelarealizacióndelaspruebas
delsoftware.
Y, por supuesto, muchas gracias a mis padres y a mi hermano, por su apoyo y
ayudaconstantealolargodeestosaños.
I
R
ESUMEN
Las pruebas son una de las actividades clave en el desarrollo de software, puesto
que ayudan a detectar defectos que, de otro modo, pasarían desapercibidos hasta
que el software sea desplegado. Sin embargo, al contrario que en otras etapas del
ciclodevidadelsoftware,comosonelanálisis,eldiseñoolaimplementación,para
las que existen metodologías y técnicas bien definidas y ampliamente aceptadas en
lacomunidadinformática,juntoconherramientasquepermitenllevaracabodichas
tareas, no hay una uniformidad sobre las metodologías, técnicas o herramientas a
utilizarparallevaracabolaspruebasdelsoftwaredeunamaneraeficienteyeficaz.
Estehechoprovocaque,muchasveces,éstasseanomitidasonorealizadascontodo
elrigornecesario.
Esta tesis presenta una aproximación, basada en propiedades y puramente fun-
cional, para la realización de las pruebas del software, que intenta paliar estos pro-
blemas. Para ello, se definen metodologías y técnicas de pruebas, integradas en el
procesodedesarrollodesoftware,quepuedenseraplicadasalosdiferentesniveles
de pruebas del software. Así, pueden utilizarse para llevar a cabo pruebas unita-
rias y de componente, en las que se comprueba que cada componente individual
se comporta de la manera esperada, pruebas de integración, que comprueban las
interacciones de los componentes que forman parte de un sistema, y pruebas de
sistema, que se encargan de comprobar diferentes aspectos del sistema como un
todo. Además, se utiliza un lenguaje de especificación de pruebas común en todas
las aproximaciones desarrolladas, el lenguaje de programación funcional Erlang, y
las metodologías se definen de manera independiente a la estructura del software
concretoaprobaroellenguajedeprogramaciónenelqueésteestéimplementado.
Porúltimo,cabedestacarqueelusodeestasmetodologíasytécnicasdepruebas
se ilustra a través de un ejemplo industrial, en concreto, el sistema VoDKATV. Es-
te sistema ofrece acceso a servicios multimedia (canales de televisión, videoclub,
aplicaciones, juegos, entre otros) a través de diferentes tipos de dispositivos, co-
mo, por ejemplo, televisiones, ordenadores, tabletas o móviles. Con respecto a la
arquitectura, el sistema VoDKATV está compuesto por múltiples componentes im-
plementados con diferentes tecnologías (Java, Erlang, C, etc.) que se integran entre
sí. La complejidad de este sistema permite ilustrar cada una de las metodologías y
técnicasdepruebasdesarrolladasconunejemploreal.
III
S
OBRE EL AUTOR
El contenido de esta tesis está ampliamente determinado por la actividad pro-
fesional de su autor durante la realización de la misma. Así, esta etapa ha estado
marcada por el trabajo en la empresa LambdaStream, la cual, posteriormente, y
después una serie de cambios, dio lugar a la empresa Interoud Innovation [34] en
el año 2011. El propósito principal de la empresa Interoud Innovation, y anterior-
menteLambdaStream,eslaconstruccióndesistemasinteractivosparalatelevisión
digital.
El principal producto de Interoud Innovation nace en el año 2006, dentro de la
empresa LambdaStream, como resultado del proyecto fin de carrera del autor de
esta tesis [185]. Este proyecto surge ante la necesidad de construir un sistema de
televisión interactivo para hoteles. El sistema software resultante ha evolucionado
a lo largo de estos años, adaptando su arquitectura y añadiendo nuevas funcionali-
dades a medida que eran requeridas por los clientes, además de poder ser utilizado
en más tipos de entornos, no sólo hoteles, y desde más tipos de dispositivos, ade-
más de la televisión (ordenadores, teléfonos móviles o tabletas, entre otros). De la
misma forma, el papel del autor de esta tesis con respecto a este sistema también
ha evolucionado durante este tiempo, desde el perfil de programador en las etapas
iniciales, hasta aumentar su responsabilidad en el ciclo de desarrollo, ejerciendo
también tareas de arquitecto y líder de un equipo de trabajo formado por entre 3 y
5personas.
Este sistema se conoce con el nombre de VoDKATV [35], y es, en la actualidad,
un software complejo compuesto por múltiples componentes que se integran entre
sí.Durantelarealizacióndeestatesis,todaslasmetodologíasytécnicasdepruebas
desarrolladas se han utilizado para probar diferentes partes de este sistema. Es por
ello que, en este trabajo, VoDKATV se usa como caso de estudio para ilustrar el
funcionamientodelasmetodologíasytécnicasdepruebasdesarrolladas.
Con respecto a la actividad investigadora del autor de esta tesis, cabe mencionar
su vinculación al grupo de investigación MADS [42] desde el año 2008, cuyas ac-
tividades están relacionadas con los sistemas distribuidos y, en los últimos años, ha
dedicado gran parte de los esfuerzos a la investigación en pruebas del software, lo
cualsecorrespondeconlatemáticaprincipaldeestatesis.
V
Además,esimportantemencionarlaparticipaciónendosproyectoseuropeosre-
lacionados con las pruebas del software, ambos del programa marco FP7. Por un
lado, LambdaStream ha sido una entidad participante en el proyecto europeo Pro-
Test [162] (2008-2011), en el que se han desarrollado técnicas y herramientas de
pruebas basadas en propiedades. Por otro lado, con el rol de investigador principal
dentro de la empresa Interoud Innovation, el autor de esta tesis ha participado en el
proyecto europeo PROWESS [4] (2012-2015), cuyo principal objetivo es el desa-
rrollo de técnicas y herramientas que faciliten las tareas de pruebas automáticas de
serviciosweb,usandocomobaselasaproximacionesbasadasenpropiedadesdesa-
rrolladas durante el proyecto ProTest. Por esta razón, muchas de las metodologías
y técnicas desarrolladas durante la realización de esta tesis se basan en actividades
realizadas en estos proyectos, adaptando y especializando las aproximaciones de
pruebasbasadasenpropiedadesparaserusadasendiferentesnivelesdelsoftware.
Finalmente,destacarquelarealizacióndeestatesishadadolugaralossiguientes
artículosytrabajosdeinvestigación,loscualeshansidodebidamenterecopiladosy
organizadosparaproducirelpresentetrabajo:
Applicationsintegration:atestingexperience[137].LauraM.Castro,Mi-
guel A. Francisco, y Víctor. M. Gulías. Proceedings of 6th Workshop on Sys-
tem Testing and Validation (STV’08), Madrid, España, 13 de Diciembre de
2008.
TestingIntegrationofApplicationswithQuickCheck[139].LauraM.Cas-
tro, Miguel A. Francisco, y Víctor M. Gulías. Extended Abstracts of 12th In-
ternationalConferenceonComputerAidedSystemsTheory(EUROCAST’09),
LasPalmasdeGranCanaria,España,15-20deFebrerode2009.
A Practical Methodology for Integration Testing [138]. Laura M. Castro,
Miguel A. Francisco, y Víctor M. Gulías. Computer Aided Systems Theory -
EUROCAST’09.LectureNotesinComputerScience.
Property Driven Development in Erlang, by Example [311]. Samuel Ri-
vas, Miguel A. Francisco, y Víctor M. Gulías. Proceedings of 5th Workshop
onAutomation ofSoftwareTest (AST’10),Cape Town,Sudáfrica,1-8 deMa-
yode2010.
Uso de propiedades abstractas para especificación de pruebas funciona-
les de caja negra [189]. Miguel A. Francisco, Laura M. Castro, y Víctor M.
Gulías. Actas de las XI Jornadas sobre Programación y Lenguajes (PRO-
LE’11),ACoruña,España,5-7deSeptiembrede2011.
Automatic Generation of Test Models and Properties from UML Mo-
dels with OCL Constraints [187]. Miguel A. Francisco, y Laura M. Castro.
Proceedings of 12th Workshop on OCL and Textual Modelling (OCL’12, co-
locatedwithMODELS’12),Innsbruck,Austria,1-5deOctubrede2012.
VI
Automatización de Pruebas para Servicios Web: Generación de Propie-
dades y Modelos [250]. Macías López, Henrique Ferreiro, Miguel A. Fran-
cisco, y Laura M. Castro. Actas de las XIII Jornadas sobre Programación y
Lenguajes (PROLE’13) y V Taller de Programación Funcional (TPF), Ma-
drid,España,17-20deSeptiembrede2013.
Uso de propiedades y modelos para las pruebas de sistemas distribuidos
basados en la integración de componentes heterogéneos [186]. Miguel A.
Francisco y Laura M. Castro. Actas de las XIII Jornadas sobre Programa-
ciónyLenguajes(PROLE’13)yVTallerdeProgramaciónFuncional(TPF),
Madrid,España,17-20deSeptiembrede2013.
Turning Web Services Descriptions into QuickCheck Models for Auto-
maticTesting[190].MiguelA.Francisco,MacíasLópez,HenriqueFerreiro,
yLauraM.Castro.Proceedingsof12thACMSIGPLANWorkshoponErlang
(Erlang’13),Boston,Massachusetts,USA,28deSeptiembrede2013.
A Language-independent Approach to Black-box Testing Using Erlang
As Test Specification Language [136]. Laura M. Castro, y Miguel A. Fran-
cisco.JournalofSystemsandSoftware,2013.
AutomaticGenerationofTestModelsforWebServicesusingWSDLand
OCL[253].Macías López,Henrique Ferreiro,MiguelA. Francisco,y Laura
M. Castro. Proceedings of 11th International Conference on Service Orien-
ted Computing (ICSOC’13), Berlín, Alemania, 2-5 de Diciembre de 2013.
LectureNotesinComputerScience.
AutomatingProperty-basedTestingofEvolvingWebServices[247].Hui-
qingLi,SimonThompson,PabloLamelaSeijas,yMiguelA.Francisco.Pro-
ceedings of ACM SIGPLAN Workshop on Partial Evaluation and Program
Manipulation (PEPM’14), San Diego, California, USA, 20-21 de Enero de
2014.
Model extraction and test generation from JUnit suites [233]. Pablo La-
mela Seijas, Simon Thompson, y Miguel A. Francisco. University of Kent
SchoolofComputingConference(UKSCC’15),Kent,ReinoUnido,15deJu-
niode2015.
Model extraction and test generation from JUnit suites [234]. Pablo La-
mela Seijas, Simon Thompson, y Miguel A. Francisco. Enviado a 7th In-
ternational Symposium on Search-Based Software Engineering (SSBSE’15),
Bérgamo,Italia,5-7deSeptiembrede2015.
A Property-based Load Testing Approach: a case study [188]. Miguel A.
Francisco,LauraM.CastroyDianaCorbacho.EnviadoaJournalofSystems
andSoftware,2015.
VII
Description:anteriormente o la historia de fallos descubiertos en proyectos anteriores. El. 31 proceso de la lista, seleccionar el proceso más antiguo, etc. sis [312], como pueden ser Tsung [69], JMeter [8], LoadRunner [41], o la pro-.