• No se han encontrado resultados

3. ALCANCES Y DELIMITACIONES

9.4. PRUEBAS DEL SISTEMA

9.4.1. PRUEBAS UNITARIAS

77

Para el diseño, desarrollo e implementación de las características del proyecto se realizaron pruebas unitarias para evaluar las funcionalidades de cada método esencial dentro del negocio. Estas pruebas “buscan aislar cada parte del programa y mostrar que las partes individuales son correctas”20 dentro de la aplicación. Para el desarrollo de los componentes del sistema se realizaron estas pruebas dentro de cada uno de los contextos.

Se hizo uso de JUnit la cual es “una librería desarrollada para poder probar el funcionamiento de las clases y métodos que componen nuestra aplicación, y asegurarnos de que se comportan como deben ante distintas situaciones de entrada.”21.

Estas pruebas poseen el siguiente ciclo:

Imagen 28: Ciclo de pruebas unitarias Para nuestro proyecto aplican dos tipos de prueba que son:

 De base de datos: pruebas que evalúan el registro y actualización correcta

de métodos de negocio sobre la base de datos

 De componentes: pruebas que evalúan el comportamiento de un

componente dentro de un dominio específico de negocio.

Estas pruebas se realizan mediante código y se encuentran dentro de la carpeta de pruebas del proyecto en los paquetes “src/main/resources” y fueron realizadas sobre los componentes internos más importantes de la aplicación; que nos ayudaron a contemplar el dominio del negocio y delimitar la aplicación a un conjunto de funcionalidades específico.

20 Pruebas unitarias en http://www.microgestion.com.ar/index.php/mg-developers/articulos/74-unit-test-

part1-mock 21

78

Imagen 29: Ubicación de pruebas unitarias dentro del proyecto Se componen de dos elementos importantes que son:

 BeforeMethod: Es el paso donde se inicializan los componentes y se

agregan los datos necesarios de prueba

Imagen 30: Fase inicial de prueba unitaria

 Test: Es una prueba que evalúa la funcionalidad de un método de una clase. Aquí encontramos los “assert” que son los que evalúan la respuesta correcta de la prueba.

79

Imagen 31: Método de prueba unitaria

9.4.2. PRUEBAS DE INTEGRACIÓN

Las pruebas de integración se realizan para evaluar la interacción entre los componentes fundamentales de la aplicación y evalúan una respuesta en tiempo real del sistema y sus características. Para el caso de nuestro proyecto, se hicieron pruebas de integración con la herramienta “Postman”, la cual es “una extensión del navegador Google Chrome, que permite el envío de peticiones

HTTP REST sin necesidad de desarrollar un cliente.”22.

Estas pruebas realizan peticiones al servidor real con un body de la petición y esperan una respuesta específica. Para este caso, la estructura del mensaje que es transportada en un JSON (Java Script Object Notation). En los anexos de este proyecto se encontrarán los archivos que contienen estas pruebas de integración. Se encuentran los siguientes elementos:

 Una URL que es la dirección del servicio web que recibirá la petición.

 Un cuerpo del mensaje que es el JSON que se envía sobre HTTP.

 Una respuesta y un código HTTP que nos indica el resultado de la

ejecución.

22

80

Imagen 32: Formato de prueba de integración en Postman 9.4.3. PRUEBAS DE CONCURRENCIA

Para realizar las pruebas de concurrencia, estrés y performance se usó el software llamado JMeter “que puede ser utilizado como una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web.”23

Esta herramienta está desarrollada en JAVA y básicamente puede ser usada como un entorno de pruebas para “conexiones de bases de datos con JDBC, FTP, LDAP, Servicios web, JMS, HTTP y conexiones TCP genéricas. JMeter puede también ser configurado como un monitor, aunque es comúnmente considerado

una solución ad-hoc respecto de soluciones avanzadas de monitoreo.”24

Configuración

Esta herramienta se descarga en el siguiente enlace: http://jmeter.apache.org/download_jmeter.cgi 23 Jmeter en https://es.wikipedia.org/wiki/JMeter 24 Bis

81

Para usar en Windows, se debe extraer el .zip descargado y ejecutar el .bat que se encuentra en el directorio:

Imagen 33: Estructura de archivos de JMeter

Para la ejecución de estas pruebas se hizo uso del servicio web para ejecutar comandos sobre una máquina instalada in cloud en un servidor en San Francisco, EEUU. Esta máquina posee las siguientes características:

 Sistema Operativo Ubuntu 16.04.3 x64

 1 GB de RAM

 30 GB de disco duro

 2 TB de transferencia de archivos

 Procesador Intel(R) Xeon(R) CPU E5-2650L v3 @ 1.80GHz

Las pruebas se realizaron sobre una conexión desde Bogotá con 11MB de velocidad de transferencia. El esquema es el siguiente:

82

Imagen 34: Modelo de pruebas de concurrencia

Básicamente, la prueba se compone de un HTTP Request (Petición) con la siguiente estructura:

Imagen 35: Formato de prueba en JMeter

En esta prueba se encuentra el mensaje JSON de solicitud, y la URL donde se va ejecutar el servicio.

Ejecución

Para una prueba de concurrencia con 10 usuarios ejecutando continuamente el mismo servicio durante 30 segundos y encontramos las siguientes estadísticas:

83

Imagen 36: Estadísticas de prueba de concurrencia I Esto nos indica los siguientes resultados:

 El número de usuarios que ejecutaron el servicio durante 30 segundos

fueron 162

 El promedio de respuesta del servicio para esta cantidad de usuarios fue 1753 ms (1,753 seg)

 La cantidad de peticiones que se pudieron ejecutar fueron de 5,3 por segundo. De la misma manera, la latencia fue 108.85 KB por segundo

 No existieron errores en ninguna petición del servicio

 La petición que más se tardó en responder fue de 4298 ms (4,2 seg)

Luego, aumentando la carga para la ejecución, se realizan pruebas con 50 usuarios concurrentes para evaluar el comportamiento y performance del sistema. Se encontraron los siguientes resultados:

84

Imagen 37: Estadísticas de prueba de concurrencia II Esto nos indica las siguientes variaciones:

 El número de usuarios que ejecutaron el servicio durante 30 segundos

fueron 517

 El promedio de respuesta del servicio para esta cantidad de usuarios fue 2826 ms (2,2826 seg)

 La cantidad de peticiones que se pudieron ejecutar fueron de 15 por

segundo. De la misma manera, la latencia fue 140.38KB por segundo

 No existieron errores en ninguna petición del servicio

 La petición que más se tardó en responder fue de 16608 ms (16,6 seg)

Finalmente, se realiza una prueba con 100 usuarios concurrentes ejecutando peticiones continuamente al servicio. Esto nos indica los siguientes indicadores:

85

Imagen 38: Estadísticas de prueba de concurrencia III Esto nos indica las siguientes variaciones:

 El número de usuarios que ejecutaron el servicio durante 30 segundos

fueron 503

 El promedio de respuesta del servicio para esta cantidad de usuarios fue 6840 ms (6,840 seg)

 La cantidad de peticiones que se pudieron ejecutar fueron de 9,8 por segundo. De la misma manera, la latencia fue 91,96 por segundo

 No existieron errores en ninguna petición del servicio

 La petición que más se tardó en responder fue de 41112 ms (41,11 seg)

Análisis de resultados

Encontramos como resultado de las pruebas de concurrencia la siguiente tabla:

86 realizadas promedio de respuesta (segundos) mínimo de respuesta (segundos) máximo de respuesta (segundos) peticiones por segundo 10 162 1,6 1,4 4,3 20 50 517 2,3 1,18 16,6 15 100 503 6,8 1,18 41,1 9,8

Tabla 11: Estadísticas de pruebas de concurrencia finales

Como es de esperar, observamos que en cuanto se aumenta la capacidad de usuarios concurrentes el tiempo de respuesta de la aplicación y la cantidad de peticiones por segundo van siendo inferior alrededor de un espacio de tiempo. Un buen desempeño de tiempo de respuesta para un servicio web se evalúa alrededor de 8 segundos máximo, por lo que encontramos que para la máquina con las características realizadas soportaría 100 usuarios concurrentes a la vez para su correcto funcionamiento y ejecución.

Por otra parte, podemos concluir que para un equipo con mayores características de hardware estos valores serán proporcionales al aumento de las

especificaciones como memoria RAM y CPU. 0 1 2 3 4 5 6 7 8 10 50 100

Numero de usuarios X tiempo de respuesta

87

CONCLUSIONES

 El resultado final del proyecto, hoy nos indica que el uso de equipos y dispositivos remotos en el entorno empresarial y en el mundo de la gestión de proyectos informáticos, supone la necesidad de búsqueda y utilización de herramientas funcionales que de forma colaborativa presten servicios de comunicación instantánea o soporte a un ambiente de información actualizado y compartido.

 El despliegue del sistema en la empresa, suministrará a corto plazo una utilidad para el control interno de sus proyectos actuales y a futuro. Por otra parte, ayudará a la organización en su objetivo comercial y productivo al otorgar mecanismos para la mejora en la precisión de las estimaciones de tiempo, costo y recursos (humanos, tecnológicos).

 La integración de aplicaciones web con herramientas móviles extiende el nivel

de calidad de una solución informática y actualmente provee un desafío para el desarrollo de nuevos sistemas de información empresariales, geográficos y de automatización.

 Se comprueba, que la utilización del marco de desarrollo de software UP (Proceso unificado) puede proveer un mecanismo factible para la consecución de proyectos al proporcionar una guía detallada que minimiza los riesgos del mismo y se centra en la arquitectura de un sistema, otorgando mecanismos metodológicos para el análisis, diseño, implementación y prueba de una aplicación. Así mismo, asegura la calidad del desarrollo al anticiparse al cambio de requerimientos y promover la interacción continúa con el usuario al entregar una parte del producto durante sus fases.

 El uso de tecnologías de desarrollo como JAX-RS (servicios web basados en

recursos) y EJB, puede facilitar la elaboración de componentes esenciales para establecer un modelo de comunicación entre aplicaciones y controlar problemas de concurrencia de transacciones o solicitudes por parte de los usuarios. Además de esto, indica que estas herramientas de construcción de sistemas, pueden proveer características como sincronización, seguridad, consumo de servicios, manipulación de datos, tiempos de respuesta, entre otros.

 El sistema desarrollado es susceptible a mejoras en el futuro de acuerdo al contexto empresarial interno y el clima laboral de la compañía. El uso de tecnologías web flexibles y la documentación generada, proporcionan un mecanismo para la implementación de cambios simples y asequibles a corto plazo.

88

RECOMENDACIONES

 Actualmente se requiere de nuevas herramientas y creación de

componentes interoperables que puedan funcionar en diversos ambientes o lenguajes dentro de las organizaciones. Es de gran importancia reducir la complejidad que se tiene en la gestión y manejo de equipos o servidores, por esta razón es de aconsejable el propiciar la fomentación hacia nuevas investigaciones de este tipo de sistemas, que promuevan la búsqueda de conocimiento a través de la experiencia humana o laboral; contribuyendo a que la Universidad Distrital como ente educativo, crezca en el dominio empresarial y sea reconocida dentro del país por su calidad en el campo tecnológico.

 Se considera importante y se propone como resultado final de este

proyecto, la investigación sobre nuevas tecnologías y herramientas de desarrollo de software. El uso de nuevos componentes y utilidades actuales, como la creación de aplicaciones móviles, demuestran que existe una tendencia al empleo frecuente de dispositivos portátiles en el ámbito productivo de las organizaciones y compañías.

 El desarrollo de este proyecto de grado es una pequeña parte, de nuevas implementaciones funcionales que se pueden realizar para el manejo y control de sistemas Linux. Es conveniente remitir este proyecto como punto de partida hacia nuevas herramientas para la gestión de ambientes de virtualización y otros artefactos que se tienen en el ámbito organizacional.

89

María Paula Espinosa Velez, Carlos Gabriel Córdova Erreis, Gestión de proyectos informáticos: Guía didáctica. Editorial UOC. Octubre, 2014

JENDROCK, Eric; CERVERA-NAVARRO, Ricardo; EVANS Ian; HAASE, Kim; MARKITO, William. The Java EE 7 Tutorial, Release 7 for Java EE Platform. Mayo 2014.

MONTERO Miguel, Roberto. Android, desarrollo de aplicaciones. Sistema operativo Android. 2015 Bogotá: Ediciones de la U.

Jacobson, I.; Booch, G. y Rumbaugh, J.; “El Proceso Unificado de Desarrollo de software”.2012. Addison-Wesley

TENIENTE, Ernest; COSTAL, Dolors; SANCHO, M. Ribera. Especificación de Sistemas de software en UML. Edición 2016.

ALONSO, Fernando; MARTINEZ, Loic; SEGOVIA, Javier. Introducción a la ingeniería de software: modelo de desarrollo de programas. Publicaciones. Delta Publicaciones Universitarias. Primera edición 2014.

Anaisa Hernández González. Aplicación del Proceso Unificado de Desarrollo a proyectos de software. Addison Wesley. Madrid, Mayo 2014.

Jesús David Quintero, Eliana Fernanda Tacan y Fernando Augusto España. Diseño e Implementación de un Sistema de Control y Monitoreo Remoto para la Iluminación de una Vivienda a través de un Teléfono Móvil con Sistema OperativoAndroid y Board ARM mini2440. Mayo 2015. Revista Ingeniería y Región.

Oracle. The Java EE 7 Tutorial. Septiembre, 2013.

Lawrence Putnam, Ware Myers. Five Core Metrics, Julio, 2013

Medellín Cabrera, Enrique. Construir la innovación: gestión de tecnología en la empresa. México. Siglo veintiuno editores. 2013

Bermejo, José Manuel. López, Máxima. La innovación continua en el éxito empresarial. Marzo, 2014

Rohaut, Sebastien. Linux: Dominar la administración del sistema. Editions ENI. Mayo 2015

Dordoigne, José. Las redes: Administre una red en Windows o en Linux. Editions ENI. Enero 2015

Gulabani, Sunil. Developing RestFul Web Services with Jersey 2.0. Packt Publishing. Noviembre, 2013

Dickey, Jeff. Write Modern Web Apps with the Mean Stack. PeachPit Press. 2015 Fox, Richards. Linux with Operating System Concepts. Taylor & Francis Group. 2015

90

Sanchez, Baldomero. Cuaderno Practico de Linux. Segunda Edición. 2015 Rios, Sergio. JSF 2+ Hibernate 4+ Spring 4. 2015

Toro, Francisco. Administración de proyectos de informática. ECOE Ediciones. Bogotá, 2013

Robledo, David. Desarrollo de Aplicaciones para Android II. 2014

91 INFOGRAFÍA:

Formulación y gestión de proyectos en:

http://www.virtual.unal.edu.co/cursos/agronomia/2007841/lecciones/01_03.html Administración de proyectos informáticos en

https://sites.google.com/site/admdeproyectinginf

10 herramientas de software libre para gestionar proyectos en

http://bitelia.com/2012/11/herramientas-software-libre-gestionar-proyectos Factibilidad técnica, operativa y económica en

http://www.slideshare.net/helodtk1/factibilidad-tecnica-operativa-y-economica- 20908957

Programación en Android: http://www.sgoliver.net/blog/

10 herramientas de software libre para gestionar proyectos en

92 ANEXOS

LISTA DE ANEXOS

Anexo A. MANUAL DEL USUARIO

Anexo B. MANUAL DEL PROGRAMADOR Anexo C. ARCHIVOS DE PRUEBAS POSTMAN

93

ANEXO A

94

APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS, CONTROL DE ARCHIVOS Y FLUJOS DE OPERACIONES A TRAVÉS DE UNA TERMINAL PORTÁTIL EN AMBIENTES LINUX CON HERRAMIENTAS DE GESTIÓN DE

AUDITORÍA Y SEGURIDAD CRIPTOGRÁFICA

BRANDON ALEXIS CASTILLO PINZÓN CRISTHIAN CAMILO CANGREJO SÁENZ

MANUAL DEL USUARIO

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS INGENIERÍA EN TELEMÁTICA

FACULTAD TECNOLÓGICA BOGOTÁ D.C.

95 TABLA DE CONTENIDO INTRODUCCION ... 97 1. OBJETIVOS ... 98 1.1. OBJETIVO GENERAL ... 98 1.2. OBJETIVOS ESPECIFICOS ... 98 2. REQUERIMIENTOS ... 100 2.1. REQUERIMIENTOS DE LA APLICACIÓN MOVIL ... 100 3. FUNCIONALIDADES ... 101 3.1. FUNCIONALIDADES DE LA APLICACIÓN MÓVIL ... 101 3.1.1. Pantalla Login (inicio de sesión)... 101 3.1.2. Menú de Consola ... 103 3.1.3. Menú Grupos... 104 3.1.4. Menú Usuarios ... 105 4. CONCLUSIONES ... 106

96

TABLA DE ILUSTRACIONES

Ilustración 1: Pantalla de inicio de sesión de la aplicación móvil ... 102 Ilustración 2: Pantalla de inicio de la aplicación Android. ... 102 Ilustración 3: Interfaz de Consola. ... 103 Ilustración 4: Visualización de archivos. ... 104 Ilustración 5: Grupos SO Linux. ... 105 Ilustración 6: Visualización Maquina Remotas. ... 105

97

INTRODUCCION

“RemoteLinux” fue el nombre designado para el aplicativo final desarrollado, esto a juicio de sus creadores.

RemoteLinux es una aplicación compuesta de dos componentes (aplicación web y aplicación móvil) que provee herramientas para el seguimiento y control remoto de servidores con ambientes Linux. Incorpora una serie de funcionalidades que tienen por objeto brindar una alternativa intuitiva y fácil de usar para la ejecución de operaciones de forma remota y sin pérdida de información.

A través de un conjunto de grupos de SO Linux y una definición de privilegios, el sistema provee un nivel de acceso a las funcionalidades de la aplicación a cada uno de los equipos vinculados a un usuario en particular. Dentro de RemoteLinux, los usuarios podrán visualizar cualquier tipo de cambio o actualización realizada a un archivo especifico por medio del componente de auditoria.

El presente manual pretende dar a lector una guía fácil para hacer un uso correcto de la aplicación y para describir el acceso a las herramientas o servicios que provee RemoteLinux como Aplicación de software. Con una serie de requerimientos, y siguiendo cada uno de los pasos de este documento, el lector podrá ejecutar satisfactoriamente las funcionalidades de la aplicación en general. Este documento está diseñado para ser comprendido por usuarios sin experiencia previa en los sistemas y que deseen conocer el ámbito del sistema.

98

1. OBJETIVOS

1.1. OBJETIVO GENERAL

Proporcionar a los potenciales usuarios de la aplicación una guía rápida con la información necesaria para hacer uso del aplicativo “RemoteLinux”, señalando cada uno de los aspectos más importantes como menús y funcionalidades.

1.2. OBJETIVOS ESPECIFICOS

 Presentar los distintos medios de acceso por los cuales la aplicación podrá ser

ejecutada.

 Guiar al usuario a través de las funcionalidades de los diferentes módulos del

sistema, mostrando con ilustraciones el proceso efectivo de ejecución de las mismas.

 Especificar que funciones se encuentran presentes en la aplicación móvil de acuerdo a los requerimientos del sistema.

100

2. REQUERIMIENTOS

2.1. REQUERIMIENTOS DE LA APLICACIÓN MOVIL

Para hacer uso de la aplicación móvil RemoteLinux, se deberá contar con los siguientes aspectos:

 Una conexión a internet alcanzable desde el dispositivo Android a través de

Wireless o red de datos.

 Sistema operativo Android con versión 4.0 o superiores y con los servicios

de Google Play configurados (Generalmente ya vienen instalados por defecto).

Nota: Si desea consultar como obtener o instalar la aplicación móvil, por favor dirigirse al anexo “manual del programador”

101

3. FUNCIONALIDADES

Las funcionalidades de los módulos de la aplicación varían de acuerdo a los menús dentro del aplicativo. La mayoría de las funcionalidades en la aplicación móvil no se encuentran presentes en la aplicación Web esto teniendo en cuenta los requerimientos inicialmente planteados en los cuales de solicita únicamente la visualización de auditoria.

Teniendo en cuenta que el usuario final es el único actor en el sistema, a continuación se detallan, las funcionalidades generales de la aplicación por cada menú implementado.

3.1. FUNCIONALIDADES DE LA APLICACIÓN MÓVIL

3.1.1. Pantalla Login (inicio de sesión)

La pantalla de inicio de sesión está compuesta por un conjunto de elementos que hacen posible el ingreso del sistema a través de una serie de credenciales de acceso. Esta es la visualización inicial:

102

Una vez ingresado unas credenciales válidas para el sistema, la aplicación mostrara la siguiente pantalla:Ilustración 1: Pantalla de inicio de sesión de

la aplicación móvil

Ilustración 2: Pantalla de inicio de la aplicación Android.

103 3.1.2. Menú de Consola

Desde este menú es posible tipear y ejecutar cualquier tipo de comando para trabajar en la Shell de Linux, como si se estuviese directamente en el servidor accedido. Para desplegarla tendremos que hacer click sobre el símbolo o logo de la Ventana Negra.

104

Menú de Archivos: Desde este menú es posible visualizar cualquier tipo de archivo ubicado dentro de la maquina a la cual se tiene control. Desde aquí mismo, también es posible actualizar, modificar y eliminar dichos archivos, esto sin

importar el tipo de extensión que posean. Para desplegar este funcionalidad

tendremos que hacer click sobre el símbolo o logo de los Cajones para archivos.

3.1.3. Menú Grupos

Desde este menú es posible visualizar y crear grupos para SO Linux, desde los cuales se relacionaran las diferentes maquinas o servidores a los que se requiera control por acceso remoto.

105 3.1.4. Menú Usuarios

Desde este menú es posible visualizar, agregar, editar y eliminar usuarios al sistema. Para desplegar esta funcionalidad es necesario que hacer click sobre el símbolo de usuario.

Ilustración 5: Grupos SO Linux.

106

4. CONCLUSIONES

El aplicativo “RemoteLinux” está compuesto en gran medida por una serie de

Documento similar