RIOS VALLE - Reporte - Investigación
RIOS VALLE - Reporte - Investigación
RIOS VALLE - Reporte - Investigación
SOFTWARE
INVESTIGACIÓN
P á g i n a 1 | 25
INGENIERIA DE S.
INDICE
INTRODUCCIÓN ......................................................................................................................................................................... 3
ING. SOFTWARE ......................................................................................................................................................................... 4
PLAN DE PRUEBAS............................................................................................................................................................................... 4
1.1- Analizar los requerimientos de desarrollo de software...................................................................................................... 4
1.2.- Identificar las funcionalidades nuevas a probar ............................................................................................................... 6
1.3.- Identificar las funcionalidades de sistemas existentes que deben probarse ..................................................................... 6
1.4.- Definir la estrategia de pruebas ........................................................................................................................................ 6
1.5.- Definir los criterios de inicio, aceptación y suspensión de pruebas................................................................................... 7
1.6.- Identificar los entornos (ambientes) requeridos ............................................................................................................... 8
1.8.- Establecer la metodología y procedimientos de prueba ................................................................................................. 10
1.9.- Elaborar la planificación de las pruebas ......................................................................................................................... 10
1.10.- Identificar los riesgos y definir planes de respuesta...................................................................................................... 11
1.11.- Pruebas funcionales vs. pruebas no funcionales ........................................................................................................... 12
12.-Enfoques ágiles de pruebas y DevOps ............................................................................................................................... 13
13.- Automatización de pruebas y pruebas continuas ............................................................................................................ 14
2.-PROCESO DE IMPLEMETACIÓN......................................................................................................................................................... 16
2.1.- Mejores Prácticas y Consideraciones .............................................................................................................................. 18
3.-PROGRAMA DE CAPACITACIÓN ........................................................................................................................................................ 20
3.1.-Componentes de un Programa de Capacitación en Ingeniería de Software .................................................................... 21
CONCLUSIÓN ........................................................................................................................................................................... 23
REFERENCIAS ........................................................................................................................................................................... 24
LIBRO: ............................................................................................................................................................................................ 24
WEB: ............................................................................................................................................................................................. 24
Introducción
Una introducción adecuada en un plan de pruebas de ingeniería de software debe establecer
el contexto y los objetivos generales de las pruebas. Además, debe proporcionar una visión general
de los principales componentes del plan. Aquí se presenta una introducción que abarca estos
aspectos:
"El presente plan de pruebas de ingeniería de software establece la estrategia y los
procedimientos para garantizar la calidad del software en el proyecto [nombre del proyecto]. El
objetivo de este plan es proporcionar una descripción detallada de las actividades de prueba que
se llevarán a cabo, los recursos involucrados y los resultados esperados.
El software desarrollado en el proyecto [nombre del proyecto] desempeña un papel crucial en
[descripción del rol o función del software]. Por lo tanto, es fundamental asegurar que el software
cumpla con los requisitos funcionales y no funcionales establecidos, y que sea confiable y de alta
calidad.
Este plan de pruebas se centrará en verificar la funcionalidad del software, su rendimiento, su
capacidad para manejar situaciones de estrés y su seguridad. Además, se prestará atención a la
usabilidad y la compatibilidad con diferentes plataformas.
El plan de pruebas se llevará a cabo en varias etapas del ciclo de vida del desarrollo de
software, incluyendo pruebas unitarias, pruebas de integración, pruebas de sistema y pruebas de
aceptación. Cada etapa se centrará en diferentes aspectos del software y se realizará en
colaboración con los diferentes equipos de desarrollo y stakeholders relevantes.
El equipo de pruebas estará compuesto por profesionales con experiencia en pruebas de
software y se apoyará en herramientas de pruebas automatizadas y manuales para garantizar una
cobertura exhaustiva y eficiente.
Además, se establecerán métricas de calidad y criterios de aceptación claros para evaluar el
rendimiento del software durante las pruebas. Se documentarán los resultados de las pruebas, los
problemas encontrados y las acciones correctivas tomadas.
El plan de pruebas se basará en estándares y mejores prácticas reconocidas en la industria de
la ingeniería de software, como IEEE 829 y ISTQB. También se tomará en cuenta la metodología
de desarrollo utilizada en el proyecto, en este caso, [nombre de la metodología].
A lo largo de este documento, se describirán en detalle los objetivos específicos de cada etapa
de prueba, las actividades a realizar, los roles y responsabilidades, los recursos necesarios y los
entregables esperados.
ING. SOFTWARE
Plan de pruebas
Todo desarrollo de productos de software independientemente de la metodología que se está
implementando, es necesario que se incluya la fase de pruebas, la cual nos permitirá determinar
si el producto a entregar cumple con la calidad especificada y esperada por el cliente. En la
actualidad las personas que nos dedicamos a las pruebas de software (Testing), necesitamos de
un Plan de Pruebas de Software, el cual tiene como propósito comunicar a todos los involucrados
del proyecto los entregables, las características a ser o no ser probadas, los aspectos de criterios
de aprobación y fallo, criterios de suspensión y reanudación, las necesidades ambientales, las
capacitaciones requeridas para los integrantes del equipo de pruebas, los riesgos y el laboratorio
de usabilidad.
El Plan de Pruebas de Software se puede aplicar a todo proyecto de software, se ajusta a las
necesidades de cada empresa de software considerando el tamaño del proyecto, el tiempo, el
costo, el ciclo de vida del software, los involucrados, que son algunos por mencionar. Cada
empresa puede definir su propio Plan de Pruebas de Software basándose en las buenas prácticas
y en la mejora continua.
Entonces, el plan de pruebas de software se elabora para atender los objetivos de calidad en
un desarrollo de sistemas, encargandose de definir aspectos como por ejemplo los módulos o
funcionalidades sujeto de verificación, tipos de pruebas, entornos, recursos asignados, entre otros
aspectos.[1]
Pruebas funcionales
Se determinan los conjuntos de pruebas a realizar, correspondiente con cada funcionalidad
nueva o existente que se esté modificando.
Se tienen distintos tipos de pruebas funcionales, por ejemplo, las pruebas de sistema (o
pruebas integradas de sistemas), que se realizan después que el equipo de desarrollo ha integrado
los componentes de distintas capas.
Las pruebas funcionales son definidas por el ISTQB como pruebas basadas en especificación. Son
diseñadas usando técnicas de diseño de pruebas de caja negra. Aquí te compartimos un artículo
interesante que habla sobre el tema.
Pruebas no funcionales
Se define un conjunto de pruebas no funcionales para cada requisito de este tipo. Aquí se
pueden incluir pruebas sobre el desempeño, tiempo de respuesta, mantenibilidad, Pruebas de
seguridad de software, entre otros aspectos, según la clasificación de requisitos no funcionales
que se tenga para el proyecto.[1]
Pruebas de regresión
Se definen sobre las funcionalidades modificadas en sus componentes internos.
Para definir los criterios de aceptación o rechazo, es necesario definir el nivel de tolerancia a
fallos de calidad. Si la tolerancia a fallos es muy baja puede definirse como criterio de aceptación
que el 100% de los casos de prueba estén sin incidencias. Lograr este margen en todos los casos
de prueba principales y caso borde será muy difícil, y podría comprometer los plazos del proyecto
(incrementa los riesgos), pero asegura la calidad del producto.
Por otra parte, puede ser que la intención sea realizar un Soft Launch, o un mínimo producto
viable, en ese caso se podría definir como criterio de aceptación el 100% de los casos de prueba
principales (considerados claves) y 20% de casos de prueba no principales (casos bordes).
Una vez logradas las condiciones, se darán por aceptadas las pruebas y el desarrollo de
software.[1]
Criterios de suspensión:
Las condiciones van a depender de los acuerdos de nivel de servicio (SLAs) internos de la
organización y también de los acuerdos establecidos en cada proyecto individual.
Por ejemplo, si se tiene un equipo de pruebas que comparte su esfuerzo entre varios proyectos,
se puede definir un criterio de suspensión exigente, un determinado porcentaje de casos fallidos
que resulten en incidencias. Si la condición se cumple, se detienen las pruebas y se dedica el
personal a otras actividades,
Por otra parte, si se tiene un equipo de pruebas con personal dedicado, el criterio de
suspensión puede ser poco exigente, por ejemplo, solo ocurriendo si se bloquean por incidencia
todos los casos de prueba.
También deben definirse los requisitos de harware y software para los siguientes componentes:
Requisitos de entrenamiento
Por ejemplo:
Puede usarse una Matriz RACI o Matriz RAM como plantilla. Esta se define con perfiles
genéricos o inclusive con el equipo de trabajo si ya se conoce cuál es el que será asignado.
Las tareas del plan de pruebas deben estar alineadas con las habilidades y conocimientos de
cada persona.
Cronograma:
Elaborado a partir de la estimación de las actividades de Software Testing realizada por el
equipo.
Para elaborar un cronograma real, es importante definir actividades críticas como por ejemplo
los tiempos de instalación de versiones en los entornos de pruebas, pruebas de validación de
ambientes antes de comenzar a hacer las pruebas y las iteraciones por incidencias, que es el
tiempo invertido en volver a probar los casos de prueba fallidos.
Premisas:
Son las condiciones que deben cumplirse para que el cronograma sea realizable, estas se
determinan a partir de la documentación de entornos y de los requisitos de personal. Por ejemplo,
disponibilidad de ciertos entornos, disponibilidad de personal con algún conocimiento técnico
especifico, la metodología que se va a utilizar, premias que deben cumplirse para poder aplicarla,
entre otros.
Para el Software Testing, los riesgos por lo general están vinculados con factores como:
Para identificar los riesgos es necesario enumerar cada una de estas dependencias y por
medio de mesas de trabajo y tormentas de ideas pensar en las posibilidades de que algo salga
mal (u oportunidades para que salga bien).
Luego de la identificación, es necesario también definir planes de respuesta, los cuales deben
ser específicos para cada situación particular y riesgo. [2]
Algunos aspectos importantes de las pruebas continuas son: Integración de pruebas en el flujo
de trabajo: Las pruebas se integran en el flujo de trabajo de desarrollo y despliegue, lo que significa
que se ejecutan automáticamente en cada etapa, desde la integración hasta la entrega del
software. Esto permite detectar problemas rápidamente y corregirlos de manera oportuna.
Pruebas unitarias continuas: Las pruebas unitarias se ejecutan automáticamente cada vez que
se realiza un cambio en el código fuente. Esto asegura que los componentes individuales del
software funcionen correctamente y sigan siendo coherentes a medida que se realizan
modificaciones.
Pruebas de integración continua: Las pruebas de integración se realizan automáticamente para
verificar la interacción adecuada entre los componentes del software y detectar problemas de
compatibilidad o comunicación.
Pruebas de regresión continua: Las pruebas de regresión se ejecutan automáticamente para
verificar que los cambios y las nuevas funcionalidades no hayan introducido errores en áreas
previamente probadas. Esto asegura que el software siga funcionando correctamente incluso
después de las modificaciones. La automatización de pruebas y las pruebas continuas permiten
reducir el tiempo y los recursos necesarios para ejecutar pruebas, mejorar la velocidad de entrega
del software y garantizar una mayor calidad al detectar problemas de manera temprana. Estas
prácticas son especialmente beneficiosas en entornos ágiles y de DevOps, donde se prioriza la
entrega rápida y frecuente de software de alta calidad. [3]
2.-Proceso de implemetación
El proceso de implementación en ingeniería de software es una etapa crítica que implica la
entrega y puesta en marcha del software desarrollado en un entorno de producción. Consiste en
llevar el sistema desde el ambiente de desarrollo y pruebas a un entorno real donde los usuarios
finales pueden utilizarlo de manera efectiva. A continuación, se describen los pasos clave del
proceso de implementación en ingeniería de software:
La implementación es parte del proceso en el que los ingenieros de software programan el
código para el proyecto. Las pruebas de software son parte esencial del proceso de desarrollo del
software. Esta parte del proceso tiene la función de detectar los errores de software lo antes
posible. La documentación del diseño interno del software con el objetivo de facilitar su mejora y
su mantenimiento se realizará a lo largo del proyecto. Esto puede incluir la documentación, tanto
interior como exterior.[3]
Todo proyecto en la ingeniería de software deberá pasar por tres fases, las cuales componen
la visión genérica de esta ingeniería.
La primera es el que de la aplicación por construir. En esta fase, el ingeniero recabase los
requisitos y planteara, a partir de una investigación analítica, las posibles soluciones al problema
planteado. Generalmente este análisis se conoce como análisis.
La segunda fase es el cómo de la aplicación. En ella se diseña los componentes técnicos
de la solución por construir: módulos que reflejen los procedimientos de entrada y salida, bases de
datos, controles, etc.
Como tercera fase está la implementación de la solución, donde se incluyen:
Preventivo: Se modifican componentes del software o del sistema para prevenir situaciones
anómalas.
Como se ha estudiado en los parámetros deseables para la ingeniería de software, el producto
deberá cumplir con muchos de estos para minimizar los costos del mantenimiento.[4]
Preparación: En esta etapa, se realiza una planificación adecuada para asegurar el éxito de
la implementación. Esto implica definir los recursos necesarios, como hardware, software y
personal, así como establecer un cronograma para las diferentes actividades. Además, se asignan
roles y responsabilidades a los miembros del equipo y se establece una comunicación clara de los
objetivos y expectativas del proyecto.
Instalación y configuración: En esta etapa, el software desarrollado se instala en los
servidores o equipos finales del entorno de producción. Esto puede implicar la ejecución de un
programa de instalación que copia los archivos necesarios y configura los parámetros básicos del
software. Además, se configuran las opciones y ajustes necesarios para que el software funcione
correctamente en el entorno de producción. Por ejemplo, se pueden configurar bases de datos,
servidores web, conexiones de red, seguridad, integración con otros sistemas, entre otros.
Pruebas y verificación: Una vez que el software está instalado y configurado, se realizan
pruebas exhaustivas para verificar su correcto funcionamiento en el entorno de producción. Esto
implica realizar diferentes tipos de pruebas, como pruebas de funcionalidad, rendimiento,
seguridad y compatibilidad. Se busca identificar y corregir posibles problemas antes de que el
software sea utilizado por los usuarios finales. Además, se verifica que el software cumpla con los
requisitos establecidos durante el proceso de desarrollo.
Migración de datos: Si el software implica la migración de datos desde un sistema anterior,
esta etapa se encarga de transferir los datos al nuevo sistema. En primer lugar, se extraen los
datos del sistema antiguo, asegurándose de que se obtenga toda la información relevante. Luego,
los datos se transforman y se adaptan para que sean compatibles con el formato requerido por el
nuevo sistema. Finalmente, los datos se cargan en el nuevo sistema, asegurándose de que se
conserven la integridad y la consistencia de los datos.
Capacitación y documentación: Antes de que los usuarios finales comiencen a utilizar el
software, es esencial proporcionar capacitación adecuada para que puedan familiarizarse con las
funcionalidades y el uso del sistema. Esto puede incluir sesiones de entrenamiento,
demostraciones prácticas y materiales educativos. Además, se crea documentación detallada,
como manuales de usuario, guías de referencia y preguntas frecuentes, que los usuarios pueden
consultar en caso de dudas o problemas. La capacitación y la documentación son clave para
garantizar que los usuarios utilicen el software de manera efectiva y aprovechen al máximo sus
funcionalidades.
3.-Programa de capacitación
El programa de capacitación en ingeniería de software puede abarcar una amplia gama de
temas relevantes para el desarrollo de habilidades y conocimientos en este campo.[5] A
continuación, se presentan algunos de los temas comunes que suelen estar incluidos en un
programa de capacitación en ingeniería de software:
Avance Tecnológico: La industria de la ingeniería de software está en constante evolución,
con la aparición de nuevas tecnologías, metodologías y herramientas. Los programas de
capacitación brindan a los profesionales la oportunidad de mantenerse actualizados y
familiarizarse con las últimas tendencias y avances en el campo.
Competencias Técnicas: Los programas de capacitación permiten a los profesionales
desarrollar y mejorar sus competencias técnicas en áreas clave de la ingeniería de software, como
programación, arquitectura de software, diseño de bases de datos, desarrollo de aplicaciones
móviles, pruebas de software, entre otros. Esto les brinda la capacidad de enfrentar proyectos más
complejos y desafiantes.
Adaptabilidad a los Cambios: La capacitación en ingeniería de software ayuda a los
profesionales a adaptarse rápidamente a los cambios tecnológicos y a las demandas del mercado.
Les permite adquirir nuevas habilidades y conocimientos, lo que les permite asumir roles y
responsabilidades en proyectos emergentes y adoptar enfoques innovadores en el desarrollo de
software.
Mejora de la Calidad del Software: Los programas de capacitación también se centran en la
mejora de la calidad del software. Los profesionales capacitados adquieren conocimientos sobre
buenas prácticas de desarrollo, estándares de codificación, pruebas de software y aseguramiento
de la calidad, lo que se traduce en la entrega de productos de software de mayor calidad y menor
cantidad de errores.
Desarrollo Profesional y Oportunidades Laborales: La participación en programas de
capacitación en ingeniería de software brinda a los profesionales la oportunidad de desarrollar su
carrera y aumentar sus oportunidades laborales. La adquisición de nuevas habilidades y
certificaciones reconocidas en el mercado mejora su perfil profesional y los hace más atractivos
para las empresas en búsqueda de talento.
Fundamentos de programación: Una introducción a los lenguajes de programación comunes
y los conceptos básicos de programación, como variables, estructuras de control, funciones y
estructuras de datos.
Metodologías de desarrollo de software: Exposición a diferentes metodologías de desarrollo
de software, como el enfoque en cascada, desarrollo ágil, SCRUM, Kanban, entre otros. Se pueden
explorar las características, ventajas y desafíos de cada enfoque.
Análisis y diseño de software: Una introducción a las técnicas y herramientas utilizadas para
el análisis y diseño de software, incluyendo la identificación de requisitos, modelado de sistemas,
diseño de arquitectura y diagramas de flujo.
Gestión de proyectos de software: Una visión general de los principios y prácticas de gestión
de proyectos de software, incluyendo la planificación, estimación de tiempos y recursos, asignación
de tareas, seguimiento del progreso y gestión de riesgos.
Desarrollo de software orientado a objetos: Un enfoque en la programación orientada a
objetos, incluyendo conceptos como encapsulamiento, herencia, polimorfismo y principios SOLID.
Calidad de software y pruebas: Una exploración de las técnicas y herramientas utilizadas
para garantizar la calidad del software, incluyendo pruebas de software, pruebas unitarias, pruebas
de integración, pruebas de sistema y pruebas de aceptación.
Gestión de configuración y control de versiones: Una introducción a la gestión de
configuración de software y el control de versiones, incluyendo el uso de sistemas de control de
versiones como Git y Subversion.
Seguridad de software: Un enfoque en los principios de seguridad de software y las mejores
prácticas para proteger los sistemas contra vulnerabilidades y ataques.
Mantenimiento y evolución del software: Una discusión sobre las estrategias y prácticas
para el mantenimiento y la evolución de software a largo plazo, incluyendo la corrección de errores,
la implementación de mejoras y la gestión del cambio.
Interfaz de usuario y experiencia de usuario (UI/UX): Una introducción a los conceptos de
diseño de interfaces de usuario y experiencia de usuario, incluyendo principios de diseño,
prototipado y pruebas de usabilidad.
Desarrollo web y tecnologías relacionadas: Una visión general de las tecnologías y
herramientas utilizadas en el desarrollo web, incluyendo lenguajes de programación web,
frameworks, bases de datos, servidores web y estándares de seguridad.
Diseño del Plan de Capacitación: El diseño del plan de capacitación implica la selección de
los contenidos, métodos de enseñanza, recursos didácticos y duración del programa. Es
importante considerar diferentes modalidades de capacitación, como cursos presenciales,
seminarios, talleres prácticos, e-learning, entre otros.
Implementación del Programa: Una vez diseñado el plan de capacitación, se lleva a cabo su
implementación. Esto incluye la asignación de instructores calificados, la provisión de materiales y
recursos, la organización de sesiones de capacitación y el seguimiento del progreso de los
participantes.
Evaluación y Retroalimentación: Es esencial realizar una evaluación continua del programa
de capacitación para medir su efectividad y realizar mejoras. Se pueden utilizar encuestas,
exámenes, evaluaciones de desempeño y retroalimentación de los participantes para recopilar
información y ajustar el programa en consecuencia.
Evaluación Continua del Programa: Realizar evaluaciones regulares del programa de
capacitación permite identificar áreas de mejora y realizar ajustes necesarios. Esto se logra a
través de la recopilación de comentarios de los participantes, el seguimiento de su desempeño en
el trabajo y la evaluación del impacto del programa en la organización.
Promoción de la Cultura de Aprendizaje: Fomentar una cultura de aprendizaje continuo en
la organización es fundamental. Esto se puede lograr mediante la promoción de la participación en
programas de capacitación, el reconocimiento de los logros de los participantes y la creación de
oportunidades para compartir conocimientos y experiencias entre los profesionales.
Conclusión
En conclusión, el plan de pruebas, el proceso de capacitación y la implementación en ingeniería
de software son componentes fundamentales para garantizar la calidad y el éxito de los proyectos
de desarrollo de software.
El plan de pruebas es una guía integral que establece la estrategia y los procedimientos para
llevar a cabo las pruebas de calidad. Proporciona una estructura clara para el equipo de pruebas
y otros stakeholders, asegurando que se realicen las actividades de prueba necesarias y se
alcancen los resultados esperados. El plan de pruebas se basa en estándares reconocidos y
adopta mejores prácticas de la industria para garantizar la cobertura y eficiencia de las pruebas.
Por otro lado, el proceso de capacitación en ingeniería de software es esencial para desarrollar
las habilidades y conocimientos necesarios en este campo. A través de cursos teóricos, talleres
prácticos, estudios de caso y proyectos prácticos, los profesionales pueden adquirir una base
sólida en los fundamentos de la ingeniería de software, así como aprender sobre metodologías,
herramientas y mejores prácticas actuales. La capacitación permite a los equipos de desarrollo de
software mantenerse actualizados y competentes en un entorno tecnológico en constante
evolución.
La implementación de ingeniería de software implica aplicar los conocimientos y habilidades
adquiridos en proyectos reales. Con un enfoque en la planificación, el diseño, el desarrollo, las
pruebas y la entrega del software, se busca asegurar que el producto final cumpla con los requisitos
establecidos, funcione correctamente y sea confiable. La implementación también implica la
gestión de proyectos, el control de calidad y la colaboración efectiva entre los miembros del equipo.
En conjunto, el plan de pruebas, el proceso de capacitación y la implementación en ingeniería
de software son elementos cruciales para lograr el éxito en el desarrollo de software. El plan de
pruebas garantiza la calidad del software a través de pruebas exhaustivas y bien estructuradas,
mientras que la capacitación proporciona a los profesionales las habilidades y conocimientos
necesarios para enfrentar los desafíos del desarrollo de software. La implementación efectiva se
logra mediante la aplicación de metodologías y prácticas adecuadas, asegurando la entrega de un
producto final confiable y de alta calidad.
REFERENCIAS
Libro:
[1] Pressman, Software Engineering (McGraw-Hill International Editions: Computer Science
Series). McGraw-Hill Education, 2000.
Web:
[2]PmInformatica. "Pruebas de software: 10 pasos para elaborar el plan de pruebas". La Oficina
de Proyectos de Informática. http://www.pmoinformatica.com/2016/01/elaborar-plan-pruebas-
software.html (accedido el 12 de junio de 2023).
[3]V. G. Adán. "Detallando un plan de pruebas". QALovers.
https://www.qalovers.com/2019/01/detallando-un-plan-de-pruebas.html (accedido el 12 de junio de
2023).
[4]MarcoTeorico. "Implementación y mantenimiento | MarcoTeorico.com". MarcoTeorico.com.
https://www.marcoteorico.com/curso/91/ingenieria-de-software/864/implementacion-y-
mantenimiento (accedido el 12 de junio de 2023).
[5]IBN. "Implementación de software". Applicatta.
https://www.applicatta.cl/index.php/soluciones/metodologia-applicatta/implementacion-de-
software#:~:text=La%20implantación%20es%20una%20de,de%20manera%20productiva%20y%
20eficaz. (accedido el 12 de junio de 2023).