FrameworkAmbientes - shiomar-salazar/MISW-PF-Grupo1-Backend GitHub Wiki

Frameworks y Ambientes

Framework para pruebas

WEB Cypress

image

Cypress es una herramienta de prueba front-end de próxima generación creada para la web moderna. Aborda los puntos clave que enfrentan los desarrolladores y los ingenieros de control de calidad al probar aplicaciones modernas.

Hacemos posible:

  • Configurar pruebas
  • Escribir pruebas
  • Ejecutar pruebas
  • Pruebas de depuración Cypress se compara con mayor frecuencia con el selenio; sin embargo, Cypress es fundamental y arquitectónicamente diferente. Cypress no está sujeto a las mismas restricciones que Selenium.

Esto permite escribir pruebas más rápidas , más fáciles y más confiables .

MOBILE Espresso

Las pruebas de Espresso exponen claramente las expectativas, las interacciones y las afirmaciones sin la distracción del contenido estándar, la infraestructura personalizada o los complicados detalles de implementación que se interponen en el camino.

Las pruebas de Espresso se ejecutan con una rapidez óptima. Te permiten dejar atrás esperas, sincronizaciones, tiempos inactivos y sondeos, mientras manipulan y afirman en la IU cuándo están en reposo.

PERFORMANCE Jmeter

image

La aplicación Apache JMeter™ es un software de código abierto, una aplicación Java 100% pura diseñada para probar el comportamiento funcional de carga y medir el rendimiento. Originalmente fue diseñado para probar aplicaciones web, pero desde entonces se ha expandido a otras funciones de prueba. Apache JMeter se puede utilizar para probar el rendimiento tanto en recursos estáticos como dinámicos, aplicaciones web dinámicas. Se puede utilizar para simular una carga pesada en un servidor, grupo de servidores, red u objeto para probar su resistencia o analizar el rendimiento general bajo diferentes tipos de carga. Las características de Apache JMeter incluyen:

  • Capacidad para cargar y probar el rendimiento de muchas aplicaciones/servidores/tipos de protocolos diferentes:
  • Web: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET,…)
  • Servicios web SOAP/REST
  • ftp
  • Base de datos vía JDBC
  • LDAP
  • Middleware orientado a mensajes (MOM) a través de JMS
  • Correo: SMTP(S), POP3(S) e IMAP(S)
  • Comandos nativos o scripts de shell
  • tcp
  • Objetos Java

Framework para el componente web, alineado con test e internacionalización

Angular

Para el proyecto final se realizará la implementación de la aplicación Web tipo SPA (Single Page Application) haciendo uso de Angular, ya que es un framework de desarrollo web que está bien estructurado, permite la creación de interfaces de usuario interactivas y escalables, cuenta con bastante soporte y que es una herramienta con la que el equipo se encuentra cómodo de trabajar, debido a los conocimientos adquiridos en las materias cursadas con anterioridad.


Cypress

Por otra parte, como framework de pruebas para la interfaz de usuario (GUI) haremos uso de Cypress, el cual dadas sus características nos permitirá realizar la creación diferentes pruebas, como lo son las pruebas de extremo a extremo (E2E), en donde el objetivo será validar flujos parciales o completos dentro de la aplicación, y pruebas de internacionalización (i18n), que tienen como finalidad validar que nuestra aplicación soporte varios idiomas.

Nota: esta imagen fue tomada de la página https://www.bitovi.com/blog/testing-angular-applications-end-to-end-e2e-with-cypress

Framework para el componente móvil, alineado con test e internacionalización

Para el proyecto final se realizara la paltaforma Movil como una aplicacion Nativa en Android escrita en Kotlin, esto nos permitira hacer mejor uso de los perifericos del dispositivo, asi como aplicar de mejor manera los conocimientos de las materias anteriormente cursadas.

Si bien no es un framework como tal haremos uso de los paquetes de AndroidJetPack y AndroidX, las cuales son librerias que nos ayudaran a construir las aplicaciones un poco mas rapida, siguiente los estandares que se utilizan en el mercado.

Tambein aunque no es un Framworks, estaremos utilizando Android Material Design, que corresponde a la guia de sieño visual y componentes graficos oficial de Android.

Para el Framework de Pruebas, estaremos haciendo uso de Espresso, el cual nos permire hacer pruebas E2E y pruebas Unitarias ya que esta basado en el Framework de Automatizacion de Pruebas JUnit con el cual podres hacer tanto pruebas unitarias de las componentes movil, como pruebas de Navegacion

Para las pruebas de internacionalizacion se utilizara el Software ITDroid, que es un software para decteccion de errores de internacionalizacion (i18n).

Por ultimo utilizaremos Firebase Test Lab, el cual nos permitira realizar algunas pruebas de reconocimiento, la cual nos permitira tener un benchmark del progreso de la aplicacion en temas como:

  • Analisis de Accesibilidad
  • Rendimiento
  • Grafica de Rastreo
  • Estadistica en general

Ambiente cloud para backend, herramientas para test

El backend del proyecto se desarrollará en Google Cloud Platform que ofrece un conjunto de servicios modulares en la nube tales como computo, almacenamiento de datos, análisis de datos, aprendizaje automático, entre otros, junto con un conjunto de herramientas de gestión. GCP

Los principales servicios que se van a utilizar para el desarrollo del backend son los siguientes:

  • Computo:
  1. Compute Engine: Infraestructura como servicio para ejecutar máquinas virtuales Microsoft Windows y Linux.
  2. Google Kubernetes Engine: entorno administrado para implementar aplicaciones con contenedores.
  3. Cloud Run: plataforma de procesamiento administrada que permite ejecutar contenedores.
  4. Cloud Functions: permite ejecutar código en respuesta a eventos sin tener que aprovisionar o administrar servidores.
  • Redes:
  1. VPC: nube privada virtual para gestionar la red de recursos de la nube definida por software.
  2. Cloud Load Balancing: servicio gestionado y definido por software para equilibrar la carga del tráfico.
  • Almacenamiento y bases de datos:
  1. Cloud SQL: Servicio de base de datos relacional totalmente gestionado.
  • Analítica:
  1. Pub/Sub: servicio de mensajería asíncrono y escalable que desacopla los servicios que producen mensajes de los servicios que los procesan.
  • CI/CD:
  1. Cloud Source: control de versiones Git para respaldar el desarrollo colaborativo de cualquier aplicación o servicio.
  2. Cloud Build: plataforma de integración, entrega e implementación continua totalmente administrada que permite ejecutar compilaciones automatizadas rápidas, consistentes y confiables.
  3. Cloud Deploy: Servicio gestionado que automatiza la entrega de aplicaciones a una serie de entornos de destino en una secuencia de promoción definida.
  4. Container Registry: repositorio (o colección de repositorios) que se utiliza para almacenar y acceder a imágenes de contenedores.

Pruebas de carga y de estres

Las pruebas de rendimiento permiten estudiar el desempeño de un sistema o de una aplicación cuando el mismo se enfrenta a escenarios de carga o escenarios de estrés, similares a los que pueden suceder en producción. Estas pruebas permiten conocer, la cantidad de usuarios simultáneos que soporta una aplicación, obtener datos para el dimensionamiento de la infraestructura requerida, así como brindar información para mejorar los tiempos de respuesta del sistema. Estas pruebas son la herramienta para minimizar los riesgos en producción, como por ejemplo tiempos de respuesta elevados, consumo inadecuado de recursos, o interrupciones en el servicio.

Las pruebas de carga se realizan para evaluar el comportamiento del sistema, bajo una cantidad esperada de usuarios concurrentes, que realizan un número específico de transacciones durante un tiempo predefinido.

Las pruebas de estrés se realizan para determinar el comportamiento del sistema cuando se enfrenta a cargas extremas. Se realizan aumentando el número de usuarios concurrentes y el número de transacciones que ejecutan, sobrepasando la carga esperada. Permiten conocer cómo es el rendimiento del sistema, en caso de que la carga real supere la carga esperada, determinando cuales son los componentes y/o recursos que fallan primero y limitan el desempeño del sistema.

JMeter

JMeter es una herramienta de pruebas de rendimiento basada en Java de código abierto extremadamente popular para ejecutar pruebas de carga y estres basadas en protocolos en varios servicios web y de software, API (SOAP y REST), aplicaciones web y otros servicios web.

  • Flujo de trabajo

jmeter

Ambientes de Desarrollo

Visual Studio Code

Visual Studio Code (también llamado VS Code) es un editor de código fuente desarrollado por Microsoft para Windows, Linux, macOS y Web. Incluye soporte para la depuración, control integrado de Git, resaltado de sintaxis, finalización inteligente de código, fragmentos y refactorización de código. También es personalizable, por lo que los usuarios pueden cambiar el tema del editor, los atajos de teclado y las preferencias. Es gratuito y de código abierto, aunque la descarga oficial está bajo software privativo e incluye características personalizadas por Microsoft.

Android Studio

Android Studio es el entorno de desarrollo integrado oficial para la plataforma Android. Fue anunciado el 16 de mayo de 2013 en la conferencia Google I/O, y reemplazó a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android. La primera versión estable fue publicada en diciembre de 2014.

Está basado en el software IntelliJ IDEA de JetBrains y ha sido publicado de forma gratuita a través de la Licencia Apache 2.0. Está disponible para las plataformas GNU/Linux, macOS, Microsoft Windows y Chrome OS. Ha sido diseñado específicamente para el desarrollo de Android.

Desde el 7 de mayo de 2019, Kotlin es el lenguaje preferido de Google para el desarrollo de aplicaciones de Android. Aun así, Android Studio admite otros lenguajes de programación, como Java y C ++.

Google SDK de Cloud Shell

Crea y administra recursos y servicios de Google Cloud directamente en la línea de comandos o mediante secuencias de comandos con la Google Cloud CLI. Gracias a una amplia compatibilidad con la plataforma y cobertura de servicio, podrás realizar tareas comunes en la plataforma con mayor rapidez y controlar tus recursos en la nube a gran escala.

Algunas Caracteristicas:

  • Organiza los recursos de Google Cloud de forma detallada y a gran escala
  • Emuladores locales para acelerar el desarrollo de software
  • Instaladores multiplataforma o ejecutarse en Cloud Shell basado en la Web
  • Implementa aplicaciones en App Engine o Cloud Functions
  • Texto de ayuda incorporado y documentación web integral