• No se han encontrado resultados

Reclutech: plataforma de pruebas técnicas para desarrolladores

N/A
N/A
Protected

Academic year: 2023

Share "Reclutech: plataforma de pruebas técnicas para desarrolladores"

Copied!
310
0
0

Texto completo

Aunque Reclutech se desarrolló a partir de la encuesta de requisitos planteada por representantes de Effectus Software en base a la suya propia. API; AWS; Caso de prueba; Panel Administrativo; desarrollo ágil; editor de código; Software de efectos; Evaluación; marcos ágiles; IDE; Invitación;.

Introducción

  • Estructura del documento
  • Presentación del equipo
  • Descripción del cliente
  • Elección del Proyecto
  • Objetivos
    • Académicos
    • Del equipo
    • Del producto
    • Del proceso

Meta El equipo acordó como primera meta académica adoptar el proyecto de grado para completar la carrera y lograr el título. Objetivo El equipo intentó aplicar los conocimientos adquiridos a lo largo de la competición, combinarlos y lograr un resultado nivelado.

Tabla 1 - Objetivo académico 1  Aplicar conocimientos de ingeniería.
Tabla 1 - Objetivo académico 1 Aplicar conocimientos de ingeniería.

Problema y solución

  • Contexto
  • Problema
  • Interesados
  • Desafíos del proyecto
  • Solución propuesta
    • Usuarios del sistema
    • Componentes de la solución
    • Entidades de la solución
    • Operaciones del Dashboard Administrativo
    • Operaciones web de candidatos

Juan Pablo es uno de los tres representantes de la empresa cliente con quienes interactuó el equipo. Al entregar la solución, usted será el principal responsable de liderar el mantenimiento de la plataforma realizado por el equipo de desarrollo de Effectus Software.

Ilustración 1 - Matriz de interesados
Ilustración 1 - Matriz de interesados

Marco metodológico

Características del proyecto

Características del equipo

Principales decisiones

  • Etapas del proyecto
  • Roles
  • Ciclo de vida
  • Scrum
  • Reglamento interno

También se redactaron acuerdos iniciales como el acuerdo de alcance con el cliente y el reglamento interno del equipo. Como segunda decisión marco, se asignaron los roles que se consideraron más adecuados a las características del proyecto y de acuerdo con los intereses de cada miembro del equipo.

Ilustración 10 - Principales etapas del proyecto  Etapa 1: Análisis y relevamiento
Ilustración 10 - Principales etapas del proyecto Etapa 1: Análisis y relevamiento

Ingeniería de requerimientos

  • Relevamiento y análisis inicial
    • Análisis de plataformas similares
    • Entrevistas con el cliente
    • Identificación de actores y abstracciones iniciales
  • Especificación y validación
    • Escenarios de uso principales
    • Story Map
    • Prototipos y wireframes
    • Historias de usuario
  • Acuerdo de alcance
    • Milestones acordadas
    • Listado de requerimientos
    • Entregables acordados
    • Firma del acuerdo de alcance
  • Evolución de requerimientos durante el proyecto
    • Mecanismo de validación y obtención de feedback
    • Pruebas de aceptación

El sistema debe permitir a los usuarios administrativos crear y ver casos de prueba para un problema algorítmico. El sistema permitirá a los usuarios administradores crear una evaluación para enviarla a un candidato.

Tabla 10 - Escenarios de uso principales
Tabla 10 - Escenarios de uso principales

Tecnologías utilizadas

  • Lenguaje de programación
  • Librerías y entorno de ejecución
    • Frontend
    • Backend
  • Servicios
  • Hosting
  • Almacenamiento
  • Ambiente de desarrollo
  • Integración y despliegue continuo (CI/CD)

70 React [7] se utilizó como biblioteca base para crear aplicaciones web utilizando su estructura de componentes reutilizables. Se utilizó la biblioteca Material UI [8] para que los estilos de los componentes implementados fueran profesionales y visualmente atractivos.

Arquitectura y desarrollo

Descripción general

Load Balancer: Es el componente responsable de responder a las solicitudes HTTP (Protocolo de transferencia de hipertexto) de los clientes web y distribuirlas a diferentes instancias del servidor API. Servidor API: Es un servicio back-end que se encarga de satisfacer las necesidades de dos clientes web que llegan en forma de solicitudes HTTP a través de un balanceador de carga.

Ilustración 18 – Diagrama arquitectura bajo nivel
Ilustración 18 – Diagrama arquitectura bajo nivel

Desafíos de arquitectura

  • Ejecutar código de terceros
  • Garantizar la integridad de los resultados
  • Autenticación passwordless para candidato
  • Ciclo de vida de una invitación
  • Vigencia de una invitación
  • No perder el progreso durante una evaluación
  • Privacidad entre organizaciones
  • Setup de herramientas para despliegue automatizado

Para reducir la probabilidad de que un usuario malintencionado cambie los resultados de su evaluación, se decidió cifrar el resultado en la aplicación web antes de enviarlo al servidor. De todas formas, a partir de la posibilidad de contar con un usuario en la organización Effectus Software dentro de la plataforma AWS y la capacitación del equipo en torno a la documentación disponible en dicha plataforma, la aplicación se implementó sin mayores inconvenientes.

Ilustración 19 - Ciclo de vida de una invitación
Ilustración 19 - Ciclo de vida de una invitación

Atributos de calidad

  • Modificabilidad
  • Testeabilidad
  • Seguridad
  • Disponibilidad
  • Performance

Entre las acciones específicas tomadas por el equipo se encuentra la decisión de utilizar la arquitectura en capas en el backend, descrita en la sección anterior, ya que permite probar cada capa en función de las entradas y salidas esperadas. Una vez más, la decisión arquitectónica de ejecutar código de terceros en la aplicación web favoreció el rendimiento del sistema porque.

Ilustración 21 - Diagrama de módulos de la entidad users en el backend  Dentro de los objetivos de usar esta arquitectura se encuentra:
Ilustración 21 - Diagrama de módulos de la entidad users en el backend Dentro de los objetivos de usar esta arquitectura se encuentra:

Modelo de datos

Finalmente, el rendimiento también se tuvo en cuenta al evaluar diferentes opciones de ejecución de código de terceros durante la fase de prueba de concepto, donde se utilizó la herramienta jMeter [35] para realizar la medición antes mencionada. Los detalles de la prueba mencionada y sus resultados se pueden encontrar en el Anexo 16 - Prueba de concepto para la ejecución de código de terceros.

Análisis de decisiones tecnológicas

  • Editor de texto en el navegador
  • Ejecución de código sin bloquear la UI
  • Encriptar datos desde el frontend
  • Tablero para visualizar datos
  • Lenguaje Markdown

Si bien se acordó que los algoritmos debían resolverse utilizando un tiempo de ejecución finito configurable de unos pocos segundos, el objetivo en este sentido era que el candidato pudiera seguir usando la aplicación o escribir su solución mientras esperaba que finalizara la ejecución de la misma. para terminar. código o validación de casos de prueba del sistema. Debido a que la ejecución de código de terceros se realiza en el front-end, el equipo tuvo que buscar alternativas para garantizar la integridad de los resultados generados allí.

Ilustración 29 - Pantalla del tablero con gráficos
Ilustración 29 - Pantalla del tablero con gráficos

Gestión de calidad

Objetivos de calidad

En particular, se fijó el objetivo de entregar el backend con un porcentaje de cobertura de código mayor o igual al 95%.

Plan de calidad

111 Investigación: se desarrolló un plan de capacitación para involucrarse y aprender sobre las tecnologías a utilizar en el proyecto. En particular, la tecnología clave en el plan de formación fue React ya que el equipo no tenía conocimientos previos y era necesario superar la curva de aprendizaje para construir un producto de calidad.

Atributos de calidad

  • Mantenibilidad
  • Usabilidad

Finalmente, el equipo escribió pruebas con alta cobertura de código, con el objetivo de brindar confianza al realizar cambios en el sistema y detectar posibles regresiones. Un ejemplo de esto ocurre en particular cuando un usuario candidato está a punto de enviar su solución a una evaluación, y antes de hacerlo, el sistema solicita confirmación y le avisa que no hay vuelta atrás si continúa.

Ilustración 32 - Automatizaciones en el pipeline
Ilustración 32 - Automatizaciones en el pipeline

Aseguramiento de la calidad

  • Estándares
  • Pruebas
  • Revisiones
  • Validaciones
  • Gestión de incidentes

Métricas de calidad

  • Objetivos y resultados

Las actas de estas reuniones se encuentran en el Anexo 8 – Actas de reuniones de validación. Una correcta gestión de incidencias es fundamental para garantizar la calidad de un producto.

Ilustración 37 – Ejemplo de error de código detectado con ESLint
Ilustración 37 – Ejemplo de error de código detectado con ESLint

Gestión de la configuración

  • Identificación de los elementos de configuración
  • Elección de herramientas
    • Desarrollo de software
    • Documentación
  • Organización del repositorio
    • Código fuente
    • Documentación
  • Control de cambios
    • Desarrollo de software
    • Documentación
  • Gestión de versiones
    • Desarrollo de software
    • Documentación

Versionado de productos de software enfocados al uso de las ramas master y de desarrollo, definiéndose una nueva versión del sistema como la que se produce cuando se realizan cambios en la rama master. A continuación, en la imagen de la carpeta Documentación, vemos el documento final junto con la carpeta de copia de seguridad.

Ilustración 50 - Repositorios del código fuente
Ilustración 50 - Repositorios del código fuente

Gestión del proyecto

Cronograma e hitos

Como mecanismo para validar incrementos y obtener retroalimentación, el equipo realizó pruebas de aceptación con el cliente. En la adaptación de Scrum que implementó el equipo, estas reuniones con el cliente sustituyeron a los Sprint Reviews dada la similitud en el objetivo entre ambos. Sin embargo, el equipo enfrentó el desafío de garantizar la integridad de los resultados de una evaluación.

Para resolver este desafío, el equipo decidió incluir un estado asociado para cada invitación en el modelo de datos. Para ayudar a garantizar la calidad del producto, el equipo consideró de suma importancia realizar pruebas en el sistema en construcción. Por ello, el equipo planificó esta iniciativa con el objetivo de identificar posibles errores y mejoras en el sistema construido hasta el momento.

Tabla 9 - Roles
Tabla 9 - Roles

Plan de capacitación

Anexo 29 – Plan de Capacitación contiene el detalle de las plataformas y herramientas utilizadas para la capacitación e incluye el plan y los objetivos definidos en el mismo.

Gestión de la comunicación

152 actas en la fase de análisis y solicitudes en el Anexo 4 - Actas de reuniones de solicitudes. Para lograrlo, el equipo envió un mensaje de Slack todos los miércoles con el estado actual del proyecto y los próximos pasos en un corto período de tiempo.

Ilustración 57 - Grupos del proyecto en Slack y Teams
Ilustración 57 - Grupos del proyecto en Slack y Teams

Adaptación de Scrum

A modo de revisión del sprint y para validar lo hecho con el cliente, el equipo realizó reuniones de presentación y validación cada dos o tres sprints. Este artefacto fue muy útil para el equipo y un ejemplo de ello fue la reunión donde discutieron el problema de estimación.

Tabla 21 - Sprints del proyecto
Tabla 21 - Sprints del proyecto

Gestión de entregables

Además, cabe recordar que se acordó que las funcionalidades a incluir serían opcionales, tanto las del acuerdo de alcance inicial como las priorizadas junto con el cliente a raíz del feedback obtenido del MVP. Luego, considerando la velocidad estimada del equipo de aproximadamente 25 puntos de historia por sprint y la cantidad de sprints restantes, se informó al cliente sobre el pronóstico de lo que pretendían construir.

Ilustración 60 - Reunión con el cliente para priorizar backlog
Ilustración 60 - Reunión con el cliente para priorizar backlog

Gestión de las tareas

Cuando una tarea llega a esta columna, el código escrito para resolver dicha funcionalidad fue revisado por un colega distinto al que la implementó, y luego se probó la funcionalidad en la rama donde se implementó. En esta última columna del flujo se encuentran las tareas completadas dentro del sprint, luego de haber sido integradas en la rama de desarrollo y así desplegadas en el entorno de prueba.

Métricas de desarrollo

165 Como puedes ver en el gráfico, el equipo comenzó con una velocidad ligeramente baja en comparación con los últimos sprints. Con esta métrica, el equipo obtuvo una representación visual de la cantidad de puntos de la historia completados por la cantidad total de horas dedicadas a las tareas de desarrollo y prueba del proyecto.

Ilustración 64 - Burndown chart story point por sprints
Ilustración 64 - Burndown chart story point por sprints

Dedicación horaria

  • Horas por semana
  • Horas por área
  • Retrabajo
  • Gestión y coordinación

En este caso, el objetivo era dedicar no más del 15% del total de horas a la gestión y coordinación del equipo para maximizar el aprovechamiento de las reuniones de equipo y hacerlas lo más efectivas posible. Finalmente finaliza con una tendencia alcista, que se justifica con el cierre del proyecto.

Ilustración 68 - Dedicación horaria por área  Las áreas en las que el equipo acordó cargar las horas fueron:
Ilustración 68 - Dedicación horaria por área Las áreas en las que el equipo acordó cargar las horas fueron:

Gestión de riesgos

  • Identificación
  • Magnitud
  • Estrategias, planes de contingencia y respuesta
  • Evolución

Gestión del proyecto: Estos fueron los riesgos que afectaron el normal desarrollo de las distintas etapas del proyecto. A continuación se muestra una evolución de los cinco riesgos que creemos fueron los más importantes durante el proyecto.

Ilustración 70 - Evolución de los riesgos más importantes
Ilustración 70 - Evolución de los riesgos más importantes

Conclusiones y lecciones aprendidas

Conclusiones del proyecto

  • Objetivos
  • Entregables acordados

Evidencia: Ir al Anexo 36 – Carta de Cumplimiento del cliente donde se registra el cumplimiento. También nos complace poder comentar que el cliente registra su acuerdo en el Anexo 36 – Carta de conformidad del cliente.

Ilustración 72 - Backlog en Jira  Documento arquitectura
Ilustración 72 - Backlog en Jira Documento arquitectura

Lecciones aprendidas

Durante la fase de análisis y encuesta sólo se mantuvieron dos reuniones personales con el cliente. Finalmente cabe destacar el trato y buena relación que hemos mantenido con el grupo de clientes durante todo este proceso.

Conclusiones del equipo

Se cree que esto aumentó la capacidad de producción del equipo y también resultó en un cliente satisfecho, quien expresa su acuerdo con el equipo y el proyecto en la carta del Apéndice 36: Carta de cumplimiento del cliente. 185 En cuanto al equipo, estamos contentos con el proceso ejecutado, el producto construido y la excelente relación mantenida no solo entre nosotros, sino también con el cliente y el docente.

Glosario

MVP: La primera versión de un producto que incluye los requisitos necesarios para la primera versión funcional implementada en un entorno de prueba. Retrospectiva - Post Mortem: Análisis retrospectivo al final de un proyecto o proceso de desarrollo.

Në dispozicion: https://medium.com/automation-with- batista/improve-the-code-quality-of-your-automated-tests-with-code-.

Principales pantallas del sistema

Reglamento interno

Análisis de plataformas similares

Actas de reuniones de requerimientos

Wireframes del sistema

Historias de usuario

Acuerdo de alcance

Actas de reuniones de validación

Análisis de frameworks CSS

Code Mirror vs Monaco Editor

Resumen sobre elección de JavaScript

Comparativa de Hosting

Comparativa SQL vs NoSQL

Documento previo a reunión con referente en arquitectura

Notas resultado de la reunión con referente de arquitectura

Prueba de concepto para ejecución de código de terceros

Prueba de concepto Code Mirror

Análisis de seguridad y confianza de resultados

Plan de calidad

Análisis de usabilidad de otros sistemas

Estándares de código

Estándares de Git

Plan de pruebas con usuarios beta

Encuestas de usabilidad con usuarios beta

Reunión con referente de calidad

Resultados de las revisiones ORT

Plan de gestión de incidentes

Encuestas de satisfacción del cliente

Plan de capacitación

Evidencia de actualizaciones semanales

Resultados de retrospectiva

Plan de riesgos

Evolución de riesgos

Encuestas de satisfacción del equipo

Investigación para modificabilidad

Carta de conformidad del cliente

Figure

Ilustración 1 - Matriz de interesados
Ilustración 5 - Pantalla para administrar problemas y casos de prueba  Crear caso de prueba
Ilustración 8 - Pantalla de resolver una evaluación  Finalizar evaluación
Ilustración 11 - Ciclo de vida
+7

Referencias

Documento similar

1. Impreso de Solicitud de Plaza SOCRATES/ERASMUS: Se obtendrá en la Secretaría de Alumnos y en la página web, y entregará, una vez cumplimentado, en la Secretaría de Alumnos junto