OPE 2025 TFA INF. Tema 42. Construcción de sistemas de información. Pruebas: tipologías. Formación. Conceptos, participantes, métodos y técnicas. Reutilización de componentes software.

Servicio Andaluz de Salud EXAMEN INFORMÁTICA JUNTA DE ANDALUCÍA Exámenes SAS 2025 OPE 2025. TFA INFORMÁTICA
Tema 42 – Construcción de Sistemas de Información – TFA-STI SAS

Tema 42

Construcción de Sistemas de Información. Pruebas: Tipologías. Formación. Conceptos, Participantes, Métodos y Técnicas. Reutilización de Componentes Software

Oposición Técnico/a de Función Administrativa – Opción Sistemas y Tecnología de la Información (TFA-STI) del Servicio Andaluz de Salud

Introducción

La construcción de sistemas de información es un proceso fundamental en la ingeniería del software que abarca diseño, desarrollo, pruebas, implementación y mantenimiento. Su éxito depende de la correcta aplicación de metodologías de desarrollo, técnicas de prueba exhaustivas y reutilización estratégica de componentes software. Este tema aborda los principales enfoques en la construcción de sistemas de información, las pruebas de software y su tipología, la formación de equipos multidisciplinarios, los métodos y técnicas empleadas, así como la importancia de la reutilización de componentes para mejorar la eficiencia y reducir costes de desarrollo.

1. Fundamentos de la Construcción de Sistemas de Información

1.1 Concepto y Objetivos

La construcción de sistemas de información es el proceso mediante el cual se materializa el diseño del software mediante la codificación, integración y prueba de componentes. Este proceso forma parte del ciclo de vida del desarrollo de software (SDLC) y tiene como objetivos principales:

  • Materializar las especificaciones de diseño en código fuente funcional.
  • Garantizar la calidad del software mediante pruebas sistemáticas.
  • Asegurar la integración correcta de todos los componentes del sistema.
  • Reducir costes y tiempos de desarrollo mediante reutilización de componentes.
  • Cumplir con los requisitos funcionales y no funcionales especificados.
  • Facilitar el mantenimiento futuro del sistema mediante código limpio y documentado.

1.2 Fases del Proceso de Construcción

Según MÉTRICA versión 3, el proceso de Construcción del Sistema de Información (CSI) incluye:

Fase Actividades Principales Entregables
Preparación del Entorno Configurar infraestructura, herramientas y lenguajes de programación Entorno de desarrollo configurado
Generación de Código Codificación de componentes según especificaciones de diseño Código fuente de componentes
Pruebas Unitarias Verificar componentes individuales Componentes validados
Integración de Componentes Combinación e integración de módulos Sistema integrado
Pruebas de Integración Validar funcionamiento conjunto de componentes Sistema integrado validado
Pruebas del Sistema Verificar comportamiento completo del sistema Sistema validado y listo para implantación

2. Pruebas de Software: Tipologías y Enfoques

2.1 Definición y Objetivos de las Pruebas

Las pruebas de software son un conjunto de actividades sistemáticas que garantizan que un sistema cumple con los requisitos funcionales y no funcionales establecidos. El objetivo principal es detectar y reportar defectos antes de que el sistema llegue a los usuarios finales, garantizando la calidad, fiabilidad y seguridad del software.

Principios Fundamentales de las Pruebas:
  • Las pruebas deben realizarse desde fases tempranas del desarrollo
  • La detección temprana de defectos reduce costes de corrección
  • No es posible probar exhaustivamente todo el software (imposibilidad de cobertura al 100%)
  • Las pruebas deben ser planificadas y ejecutadas de forma sistemática
  • Las pruebas requieren de casos de prueba bien diseñados

2.2 Clasificación de Pruebas según el Momento de Ejecución

Pruebas Estáticas

Se realizan sin ejecutar el código, mediante técnicas de análisis y revisión:

  • Revisión de código: Análisis manual del código fuente por pares
  • Análisis estático: Herramientas automatizadas que detectan errores sin ejecutar
  • Inspecciones: Revisión formal de documentación y diseño
  • Walkthrough: Presentación de código a un grupo de revisores

Pruebas Dinámicas

Se ejecuta el software para evaluar su comportamiento:

  • Pruebas de caja blanca (cristal): Conocimiento del código interno
  • Pruebas de caja negra: Sin conocimiento del código interno
  • Pruebas de caja gris: Combinación de ambas aproximaciones

2.3 Clasificación según la Caja de Prueba

Tipo de Prueba Características Enfoque
Caja Blanca Examina estructura interna, flujo de datos y lógica Basada en código (Orientada a estructura)
Caja Negra Evalúa entradas y salidas sin conocer código Basada en comportamiento (Orientada a especificación)
Caja Gris Acceso parcial a código y conocimiento de arquitectura Híbrida (Combinación de ambas)

2.4 Clasificación según el Nivel de Prueba

Pruebas Unitarias

Verifican componentes individuales del sistema. Son las pruebas de más bajo nivel, realizadas por desarrolladores:

  • Prueban funciones, métodos, procedimientos o módulos aislados
  • Utilizan datos de prueba específicos (stubs y mocks)
  • Son automatizables y ejecutables rápidamente
  • Ejemplos: Pruebas JUnit en Java, Pytest en Python

Pruebas de Integración

Comprueban la interacción entre módulos del sistema:

  • Verifican que componentes integrados funcionan correctamente
  • Detectan problemas de interfaces entre módulos
  • Pueden ser de abajo a arriba (bottom-up), de arriba a abajo (top-down) o en sándwich
  • Requieren configuración de ambiente más complejo que pruebas unitarias

Pruebas de Sistema

Evalúan el comportamiento del sistema completo integrado:

  • Verifican todas las funciones contra especificaciones
  • Prueban comunicaciones e interfaces del sistema
  • Evalúan rendimiento, volumen y seguridad
  • Se realizan en ambiente similar a producción

Pruebas de Aceptación

Realizadas por el usuario final para validar requisitos funcionales:

  • Verifican que el sistema cumple con las necesidades del negocio
  • Basadas en escenarios reales de uso
  • Realizadas antes de la implementación final
  • También llamadas UAT (User Acceptance Testing)

2.5 Clasificación según el Objetivo de Prueba

Pruebas Funcionales

Validan que el sistema cumple con los requisitos funcionales establecidos:

  • Verifican que cada función del sistema opera correctamente
  • Incluyen pruebas de interfaces de usuario
  • Prueban el flujo de datos a través del sistema

Pruebas No Funcionales

Evalúan atributos del sistema distintos a la funcionalidad:

  • Rendimiento (Performance): Velocidad, escalabilidad, estabilidad
  • Carga: Comportamiento bajo alto volumen de solicitudes simultáneas
  • Estrés: Sistema bajo condiciones extremas y fuera de límites normales
  • Seguridad: Vulnerabilidades, controles de acceso, encriptación
  • Confiabilidad: Recuperación ante fallos, disponibilidad
  • Usabilidad: Facilidad de uso e interfaz de usuario
  • Compatibilidad: Funcionamiento en diferentes plataformas y navegadores
  • Mantenibilidad: Facilidad de realizar cambios y correcciones

2.6 Pruebas Específicas Importantes

Pruebas de Regresión

Aseguran que nuevas modificaciones no afecten funcionalidades previas:

  • Se ejecutan cuando se realizan cambios en el código
  • Repetidas en cada nuevo release o actualización
  • Altamente automatizables y eficientes
  • Críticas en ambientes de integración continua (CI/CD)

Pruebas de Interfaz

Validan la interfaz gráfica de usuario según requisitos:

  • Verifican tamaño y posición de elementos
  • Prueban navegación y flujo de pantallas
  • Validan mensajes de error y confirmación
  • Pueden ser manuales o automatizadas con herramientas

Pruebas Exploratorias

Basadas en la experiencia del tester sin plan predefinido:

  • El tester identifica errores mediante exploración activa
  • Complementan las pruebas planificadas
  • Efectivas para encontrar defectos inesperados
  • Requieren testers con experiencia y conocimiento del dominio

3. Formación en Construcción de Sistemas de Información

3.1 Importancia de la Formación

La formación del equipo de desarrollo es aspecto crítico para el éxito de proyectos de sistemas de información. Un equipo bien formado garantiza:

  • Código de mayor calidad y menor número de defectos
  • Mejora en tiempos de desarrollo y productividad
  • Cumplimiento de estándares y mejores prácticas
  • Innovación y adaptabilidad a nuevas tecnologías
  • Satisfacción y retención del personal

3.2 Áreas de Formación Esencial

Formación Técnica

  • Lenguajes de programación
  • Frameworks y librerías
  • Bases de datos
  • Desarrollo web/móvil
  • Herramientas de desarrollo (IDEs)
  • Control de versiones (Git)
  • Pruebas automatizadas

Formación en Metodologías

  • Metodologías Ágil (Scrum, Kanban)
  • MÉTRICA versión 3
  • SDLC y ciclo de vida del software
  • DevOps y CI/CD
  • Mejores prácticas de desarrollo
  • Arquitectura de software
  • Patrones de diseño

Formación en Gestión

  • Gestión de proyectos
  • Gestión de requisitos
  • Seguimiento y control
  • Comunicación de equipos
  • Liderazgo técnico
  • Toma de decisiones

Formación en Calidad y Seguridad

  • Aseguramiento de calidad (QA)
  • Pruebas de software
  • Seguridad informática
  • Ciberseguridad
  • Cumplimiento normativo (RGPD)
  • Auditoría de sistemas

3.3 Participantes en la Formación

La formación debe diseñarse considerando los diferentes roles en el equipo de desarrollo:

Rol Responsabilidades Formación Prioritaria
Desarrollador Codificación e implementación de funcionalidades Lenguajes, frameworks, pruebas unitarias, patrones de diseño
QA/Tester Diseño e implementación de pruebas Metodologías pruebas, automatización, herramientas, caja blanca/negra
Analista de Sistemas Validar requisitos y especificaciones funcionales Análisis de requisitos, BPMN, modelado de datos, especificaciones
Product Owner Priorizar funcionalidades y gestionar requisitos Gestión de requisitos, Agile, comunicación con stakeholders
Scrum Master/Gestor Proyecto Coordinación y seguimiento del equipo Gestión de proyectos, Agile, liderazgo, comunicación
Arquitecto Software Diseño de arquitectura técnica del sistema Arquitectura, patrones, escalabilidad, tecnologías emergentes
DevOps Infraestructura, automatización, despliegue CI/CD, contenedores, orquestación, automatización, monitoreo

4. Métodos y Técnicas de Construcción de Software

4.1 Métodos de Desarrollo

Desarrollo Ágil

Enfoque iterativo basado en ciclos cortos (sprints) de 1-4 semanas:

  • Scrum: Framework ágil más popular. Define roles (Product Owner, Scrum Master), artefactos (Product Backlog, Sprint Backlog) y ceremonias (Sprint Planning, Daily Standup, Sprint Review)
  • Kanban: Sistema de flujo continuo con tableros de trabajo. Limita trabajo en progreso (WIP) y optimiza el flujo
  • Extreme Programming (XP): Énfasis en calidad mediante pair programming, TDD, refactorización continua
  • Ventajas: Flexibilidad, feedback temprano, adaptación a cambios, entregas frecuentes

Desarrollo Tradicional/Cascada

Modelo secuencial lineal con fases claramente definidas:

  • Requisitos → Diseño → Implementación → Pruebas → Despliegue → Mantenimiento
  • Cada fase debe completarse antes de la siguiente
  • Documentación exhaustiva al final de cada fase
  • Menos flexible frente a cambios
  • Usado en proyectos de requisitos claros y estables

Desarrollo en V

Modelo que enfatiza la verificación y validación:

  • Lado izquierdo: descomposición de requisitos en subcomponentes
  • Lado derecho: integración y pruebas progresivas
  • Cada nivel de desarrollo tiene su correspondiente nivel de prueba
  • Efectivo para sistemas de seguridad crítica

Desarrollo Iterativo/Espiral

Combina iteraciones con gestión proactiva de riesgos:

  • Ciclos repetitivos de planificación, análisis de riesgos, implementación, evaluación
  • Prototipado temprano reduce riesgos
  • Flexible y adaptable para proyectos grandes
  • Mayor costo inicial de gestión

Desarrollo Basado en Componentes (CBD)

Metodología que enfatiza reutilización de componentes:

  • Construcción mediante componentes existentes o nuevos módulos independientes
  • Interfaces bien definidas entre componentes
  • Facilita mantenimiento y evolución del sistema
  • Requiere repositorio de componentes reutilizables

4.2 Técnicas de Desarrollo

Test-Driven Development (TDD)

Paradigma donde las pruebas se escriben antes del código:

  • Ciclo Red-Green-Refactor: Escribir prueba fallida (red) → Código mínimo para pasar (green) → Mejorar código (refactor)
  • Asegura que código está probado desde inicio
  • Mejora diseño del código y reduce defectos
  • Requiere disciplina y experiencia del desarrollador

Behavior-Driven Development (BDD)

Extensión de TDD enfocada en comportamiento esperado del sistema:

  • Pruebas escritas en lenguaje natural cercano a negocios (Gherkin)
  • Facilita comunicación entre técnicos, testers y stakeholders
  • Ejemplo: «Dado que soy usuario, cuando realizo acción X, entonces debería ver resultado Y»
  • Herramientas: Cucumber, Behat, SpecFlow

Integración Continua (CI)

Práctica de integrar código frecuentemente en repositorio compartido:

  • Cambios integrados varias veces al día
  • Compilación automática y pruebas ejecutadas inmediatamente
  • Detección temprana de conflictos y errores
  • Reduce tiempos de integración y mejora calidad
  • Herramientas: Jenkins, GitLab CI, GitHub Actions

Despliegue Continuo (CD)

Extensión de CI que automatiza despliegue a producción:

  • Código integrado se despliega automáticamente tras pasar pruebas
  • Despliegues frecuentes minimizan cambios y reducen riesgos
  • Permite feedback rápido de usuarios reales
  • Requiere alta confianza en automatización de pruebas

DevOps

Cultura y conjunto de prácticas que integra desarrollo y operaciones:

  • Automatización de infraestructura y despliegues
  • Monitoreo continuo y feedback en tiempo real
  • Mejora de colaboración entre desarrolladores y operaciones
  • Reduce ciclo de entrega y mejora confiabilidad
  • Incluye CI/CD, Infrastructure as Code, containerización

Refactorización

Mejora del código sin cambiar funcionalidad:

  • Aumenta legibilidad y mantenibilidad del código
  • Reduce complejidad y elimina código duplicado
  • Facilita futuras modificaciones
  • Debe realizarse de forma incremental y con pruebas que lo amparen

5. Reutilización de Componentes Software

5.1 Concepto y Beneficios

La reutilización de software es la práctica de usar componentes o artefactos de software existentes en nuevos proyectos, en lugar de desarrollarlos desde cero. Esta práctica ofrece múltiples beneficios:

Beneficios Principales:
  • Reducción de costes: Menos código a desarrollar y mantener
  • Aceleración del desarrollo: Componentes ya probados y listos para usar
  • Mejora de calidad: Componentes reutilizados han sido probados en múltiples contextos
  • Mayor fiabilidad: Menos probabilidad de errores en código probado
  • Consistencia: Mismo comportamiento en múltiples aplicaciones
  • Facilita mantenimiento: Correcciones benefician a todas las aplicaciones que usan el componente
  • Mejora interoperabilidad: Componentes estandarizados facilitan integración

5.2 Niveles de Reutilización

Reutilización de Código Fuente

Uso de librerías y funciones ya implementadas:

  • Bibliotecas estándar del lenguaje (stdlib)
  • Librerías de terceros disponibles públicamente (npm, PyPI, Maven)
  • Funciones y utilidades internas reutilizables
  • Frameworks que proporcionan estructura base

Reutilización de Componentes

Uso de módulos o servicios previamente desarrollados:

  • Componentes de negocio reutilizables (autenticación, logging, auditoría)
  • Componentes UI (botones, diálogos, controles reutilizables)
  • Módulos de integración con sistemas externos
  • Componentes empaquetados en librerías específicas del dominio

Reutilización de Servicios (SOA y Microservicios)

Uso de servicios accesibles mediante APIs:

  • Microservicios independientes y desplegables
  • APIs REST o GraphQL para comunicación
  • Servicios en la nube (cloud services)
  • Integración mediante orquestación de servicios

Reutilización de Patrones y Arquitecturas

Aplicación de soluciones probadas en nuevos proyectos:

  • Patrones de diseño (Strategy, Observer, Factory, etc.)
  • Patrones arquitectónicos (MVC, MVVM, hexagonal)
  • Arquitecturas de referencia para dominios específicos
  • Best practices y convenciones de codificación

5.3 Tipos de Componentes Reutilizables

Tipo de Componente Características Ejemplos
Componentes Propios Desarrollados internamente en la organización, con control total Utilidades internas, componentes negocio, servicios internos
Open Source Libres, generalmente gratuitos, comunidad activa Linux, Apache, MySQL, Node.js, React
COTS (Commercial Off-The-Shelf) Productos comerciales listos para usar Microsoft Office, Oracle Database, Salesforce
Middleware Software que conecta aplicaciones y componentes Message brokers, API gateways, integration platforms
Frameworks Estructura base para desarrollo de aplicaciones Spring, Django, Angular, NestJS

5.4 Estrategias de Reutilización

Reutilización Fortuita

Cuando un componente desarrollado para un proyecto es aprovechado en otros de forma no planificada:

  • Menos formal y estructurada
  • Requiere documentación y comunicación dentro de la organización
  • Bajo costo inicial pero requiere gestión

Reutilización Planificada

Cuando se diseñan componentes específicamente para reutilización:

  • Se documentan interfaces claramente
  • Se crean repositorios centralizados de componentes
  • Se establecen estándares de calidad y empaquetado
  • Mayor inversión inicial pero beneficios a largo plazo

5.5 Gestión de Componentes Reutilizables

Elementos Clave en Gestión de Componentes:
  • Catalogación: Inventario de componentes disponibles con descripción clara
  • Versionado: Control de versiones de componentes, compatibilidad hacia atrás
  • Documentación: API clara, ejemplos de uso, casos de prueba
  • Empaquetado: Distribución estándar (contenedores, paquetes, dependencias)
  • Mantenimiento: Actualizaciones, correcciones de seguridad, soporte
  • Licencias: Cumplimiento legal de licencias de software
  • Calidad: Pruebas obligatorias, métricas de cobertura y defectos

6. Integración en MÉTRICA Versión 3

MÉTRICA versión 3 es la metodología estándar para el ciclo de vida de sistemas de información en administraciones públicas españolas, incluyendo el Servicio Andaluz de Salud. El proceso de Construcción del Sistema de Información (CSI) en MÉTRICA 3 incluye:

6.1 Actividades del Proceso CSI

  • CSI 1: Preparación del Entorno de Generación y Construcción – Configurar infraestructura necesaria
  • CSI 2: Generación del Código de los Componentes y Procedimientos – Codificación según especificaciones
  • CSI 3: Construcción del Sistema – Integración de componentes
  • CSI 4: Pruebas Unitarias – Verificación de componentes individuales
  • CSI 5: Pruebas de Integración – Validación de integración de módulos
  • CSI 6: Elaboración de Manuales – Documentación de usuario y explotación
  • CSI 7: Definición de la Formación de Usuario – Planificación de capacitación

7. Mapa Conceptual

╔════════════════════════════════════════════════════════════════════════╗
║           CONSTRUCCIÓN DE SISTEMAS DE INFORMACIÓN                      ║
╚════════════════════════════════════════════════════════════════════════╝

┌─────────────────────────────────────────────────────────────────────┐
│                      PROCESOS PRINCIPALES                           │
├─────────────────────────────────────────────────────────────────────┤
│                                                                       │
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐  │
│  │   DISEÑO Y       │  │   PRUEBAS DE     │  │   FORMACIÓN DE   │  │
│  │ CODIFICACIÓN     │  │    SOFTWARE      │  │     EQUIPOS      │  │
│  │                  │  │                  │  │                  │  │
│  │ • Componentes    │  │ • Unitarias      │  │ • Técnica        │  │
│  │ • Módulos        │  │ • Integración    │  │ • Metodologías   │  │
│  │ • Servicios      │  │ • Sistema        │  │ • Gestión        │  │
│  │ • APIs           │  │ • Aceptación     │  │ • Calidad        │  │
│  └──────────────────┘  └──────────────────┘  └──────────────────┘  │
│                                                                       │
└─────────────────────────────────────────────────────────────────────┘

                              │
                              ▼

┌─────────────────────────────────────────────────────────────────────┐
│                    MÉTODOS Y TÉCNICAS                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                       │
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐  │
│  │  Desarrollo      │  │   Técnicas de    │  │  Reutilización   │  │
│  │    Ágil          │  │   Desarrollo     │  │  de Componentes  │  │
│  │                  │  │                  │  │                  │  │
│  │ • Scrum          │  │ • TDD            │  │ • Código fuente  │  │
│  │ • Kanban         │  │ • BDD            │  │ • Componentes    │  │
│  │ • Extreme Prog.  │  │ • CI/CD           │  │ • Servicios      │  │
│  │ • Iterativo      │  │ • DevOps         │  │ • Patrones       │  │
│  │ • Cascada        │  │ • Refactoring    │  │ • Arquitecturas  │  │
│  └──────────────────┘  └──────────────────┘  └──────────────────┘  │
│                                                                       │
└─────────────────────────────────────────────────────────────────────┘

                              │
                              ▼

┌─────────────────────────────────────────────────────────────────────┐
│                      PRUEBAS DE SOFTWARE                            │
├─────────────────────────────────────────────────────────────────────┤
│                                                                       │
│  SEGÚN MOMENTO        SEGÚN CAJA        SEGÚN NIVEL                 │
│  ├─ Estáticas         ├─ Blanca         ├─ Unitarias               │
│  └─ Dinámicas         ├─ Negra          ├─ Integración             │
│                       └─ Gris           ├─ Sistema                 │
│                                         └─ Aceptación              │
│                                                                       │
│  SEGÚN OBJETIVO                                                      │
│  ├─ Funcionales                                                      │
│  └─ No Funcionales: Rendimiento, Carga, Estrés, Seguridad,         │
│                     Confiabilidad, Usabilidad, Compatibilidad       │
│                                                                       │
└─────────────────────────────────────────────────────────────────────┘

                              │
                              ▼

┌─────────────────────────────────────────────────────────────────────┐
│                      CALIDAD Y ENTREGA                              │
├─────────────────────────────────────────────────────────────────────┤
│                                                                       │
│           ┌──────────────────────────────────────┐                  │
│           │  PRODUCTO DE CALIDAD ENTREGABLE      │                  │
│           │  - Funcionalidades probadas          │                  │
│           │  - Documentación completa            │                  │
│           │  - Equipo capacitado                 │                  │
│           │  - Componentes reutilizables         │                  │
│           │  - Mantenibilidad garantizada        │                  │
│           └──────────────────────────────────────┘                  │
│                                                                       │
└─────────────────────────────────────────────────────────────────────┘
            

8. Cuestionario de Evaluación (25 Preguntas)

Pregunta 1: ¿Cuál es el objetivo principal de las pruebas de software?

A) Asegurar que el sistema cumple con los requisitos funcionales y no funcionales
B) Detectar errores exclusivamente en la fase de mantenimiento
C) Minimizar la cantidad de código escrito
D) Aumentar la documentación del sistema
Respuesta Correcta: A

Las pruebas de software tienen como objetivo principal garantizar que el sistema cumple con los requisitos establecidos tanto funcionales como no funcionales, detectando y reportando defectos antes de que llegue a usuarios finales.

Pregunta 2: ¿Cuál de las siguientes pruebas se enfoca en validar la funcionalidad del software sin conocer su estructura interna?

A) Pruebas de caja blanca
B) Pruebas de caja negra
C) Pruebas unitarias
D) Pruebas de integración
Respuesta Correcta: B

Las pruebas de caja negra evalúan el software analizando sus entradas y salidas sin considerar su código interno, garantizando que cumple con los requisitos funcionales especificados.

Pregunta 3: ¿En qué nivel del proceso de pruebas se validan los componentes individuales?

A) Pruebas de integración
B) Pruebas de sistema
C) Pruebas unitarias
D) Pruebas de aceptación
Respuesta Correcta: C

Las pruebas unitarias son las pruebas de más bajo nivel y evalúan componentes individuales del software (funciones, métodos, módulos), verificando su correcto funcionamiento antes de la integración.

Pregunta 4: ¿Cuál es el propósito de las pruebas de regresión?

A) Identificar vulnerabilidades en la seguridad del software
B) Evaluar la compatibilidad con diferentes plataformas
C) Asegurar que nuevas modificaciones no introduzcan errores en funcionalidades previas
D) Medir el tiempo de respuesta del sistema bajo carga
Respuesta Correcta: C

Las pruebas de regresión verifican que las actualizaciones o modificaciones realizadas en el sistema no afecten negativamente las funcionalidades existentes previamente probadas.

Pregunta 5: ¿Qué metodología de desarrollo prioriza específicamente la reutilización de componentes software?

A) Desarrollo basado en componentes (CBD)
B) Desarrollo en cascada
C) Desarrollo en espiral
D) Desarrollo ágil Scrum
Respuesta Correcta: A

El Desarrollo Basado en Componentes (CBD) es una metodología que enfatiza específicamente la construcción de sistemas mediante componentes reutilizables, optimizando tiempo y costos de desarrollo.

Pregunta 6: ¿Qué técnica de pruebas se basa en escribir casos de prueba ANTES de desarrollar el código?

A) Pruebas exploratorias
B) Desarrollo guiado por pruebas (TDD)
C) Pruebas de aceptación
D) Pruebas de estrés
Respuesta Correcta: B

Test-Driven Development (TDD) implica escribir las pruebas antes de implementar el código, siguiendo el ciclo Red-Green-Refactor, asegurando que el código cumple requisitos desde su implementación.

Pregunta 7: ¿Cuál de las siguientes afirmaciones es una ventaja de la reutilización de software?

A) Aumenta la complejidad del mantenimiento del sistema
B) Reduce el tiempo y costo de desarrollo
C) Disminuye la interoperabilidad con otros sistemas
D) Obliga a escribir código desde cero en cada proyecto
Respuesta Correcta: B

La reutilización de software mejora significativamente la eficiencia al reducir el tiempo de desarrollo y los costos, permitiendo aprovechar módulos ya probados de otros proyectos.

Pregunta 8: En el desarrollo ágil, ¿qué tipo de pruebas se integran en cada iteración o sprint?

A) Solo pruebas de seguridad
B) Pruebas de sistema únicamente
C) Pruebas automatizadas y manuales en todas las fases
D) Pruebas al final del ciclo de desarrollo
Respuesta Correcta: C

En metodologías ágiles, se realizan pruebas automatizadas y manuales de forma continua durante cada iteración para garantizar la calidad del software en todas las fases del desarrollo.

Pregunta 9: ¿Qué se evalúa principalmente en una prueba de carga?

A) La seguridad del software ante ataques
B) La capacidad del sistema para manejar múltiples solicitudes simultáneas
C) La usabilidad de la interfaz gráfica
D) La estructura de la base de datos
Respuesta Correcta: B

Las pruebas de carga miden la capacidad del sistema para gestionar un alto volumen de solicitudes simultáneas, evaluando su rendimiento, estabilidad y escalabilidad bajo demanda.

Pregunta 10: ¿Qué tipo de prueba de software permite detectar vulnerabilidades de seguridad en el código?

A) Pruebas de caja blanca
B) Pruebas de carga
C) Pruebas de seguridad
D) Pruebas de regresión
Respuesta Correcta: C

Las pruebas de seguridad identifican vulnerabilidades en el sistema, asegurando que no haya brechas que comprometan la información y el acceso a los datos, incluyendo pruebas de inyección SQL, XSS, etc.

Pregunta 11: ¿Qué técnica permite evaluar la usabilidad de una aplicación con usuarios reales?

A) Pruebas de integración
B) Pruebas de aceptación
C) Pruebas de interfaz gráfica
D) Pruebas de usabilidad
Respuesta Correcta: D

Las pruebas de usabilidad evalúan la facilidad de uso del software mediante pruebas con usuarios reales, verificando que la experiencia de usuario es intuitiva y satisfactoria.

Pregunta 12: ¿En qué fase del ciclo de vida del software se realizan típicamente las pruebas de aceptación?

A) Antes de la integración del sistema
B) Después de las pruebas unitarias
C) Antes de la implementación final en producción
D) Durante la planificación del proyecto
Respuesta Correcta: C

Las pruebas de aceptación se realizan generalmente antes de la implementación final en producción, realizadas por usuarios o cliente para validar que el software cumple con los requisitos del negocio.

Pregunta 13: ¿Cuál de los siguientes NO es un nivel válido de reutilización de software?

A) Reutilización de código fuente y librerías
B) Reutilización de componentes y módulos
C) Reutilización de servicios y APIs
D) Reutilización de arquitecturas desactualizadas únicamente
Respuesta Correcta: D

La reutilización debe basarse en componentes y arquitecturas vigentes y mantenidas. Reutilizar arquitecturas desactualizadas puede introducir problemas de compatibilidad y seguridad.

Pregunta 14: ¿Cuál es la filosofía central del método Scrum en desarrollo ágil?

A) Completar todo el proyecto en una única fase
B) Desarrollar en ciclos cortos iterativos con entregas frecuentes
C) Priorizar documentación exhaustiva
D) Minimizar interacción con el cliente
Respuesta Correcta: B

Scrum es un framework ágil que se basa en ciclos cortos de 1-4 semanas (sprints), con entregas frecuentes de funcionalidades, permitiendo adaptación a cambios y feedback continuo.

Pregunta 15: ¿Qué es CI/CD en el contexto de desarrollo de software?

A) Code Integration / Continuous Development
B) Continuous Integration / Continuous Deployment
C) Cybersecurity Integration / Cloud Development
D) Component Interface / Configuration Design
Respuesta Correcta: B

CI/CD (Continuous Integration / Continuous Deployment) es un enfoque que automatiza la integración frecuente de código y el despliegue automático en producción tras pasar pruebas.

Pregunta 16: ¿Cuál es el rol principal de un Product Owner en Scrum?

A) Facilitar reuniones y resolver impedimentos del equipo
B) Escribir todo el código del proyecto
C) Priorizar funcionalidades y gestionar el Product Backlog
D) Ejecutar todas las pruebas de software
Respuesta Correcta: C

El Product Owner es responsable de definir y priorizar el Product Backlog, gestionar los requisitos y asegurar que el equipo de desarrollo entiende correctamente las necesidades del negocio.

Pregunta 17: ¿Qué beneficio principal proporciona la integración continua (CI)?

A) Elimina la necesidad de realizar pruebas
B) Permite detectar errores de manera temprana en el ciclo de desarrollo
C) Aumenta la cantidad de código que debe escribirse
D) Requiere que todo sea manual sin automatización
Respuesta Correcta: B

La Integración Continua (CI) automatiza la compilación y pruebas cada vez que se integra código al repositorio compartido, permitiendo detectar errores tempranamente y reducir conflictos.

Pregunta 18: ¿Cuál es el ciclo fundamental de TDD (Test-Driven Development)?

A) Red-Green-Refactor
B) Analyze-Design-Code-Test
C) Plan-Execute-Verify-Maintain
D) Requirement-Implementation-Validation-Deploy
Respuesta Correcta: A

El ciclo TDD es Red-Green-Refactor: Escribir prueba fallida (Red), implementar código mínimo para pasar (Green), mejorar y refactorizar código (Refactor), manteniendo calidad.

Pregunta 19: ¿Qué implica el concepto de DevOps?

A) Una herramienta específica de control de versiones
B) Cultura que integra desarrollo y operaciones con automatización
C) Un lenguaje de programación nuevo
D) Una metodología exclusiva para bases de datos
Respuesta Correcta: B

DevOps es una cultura y conjunto de prácticas que integran desarrollo y operaciones, enfatizando automatización, colaboración, CI/CD, infraestructura como código y monitoreo continuo.

Pregunta 20: ¿Cuál es la diferencia principal entre pruebas estáticas y dinámicas?

A) Las estáticas son más complicadas que las dinámicas
B) Las estáticas no ejecutan código; las dinámicas sí lo hacen
C) Las dinámicas solo se aplican a aplicaciones móviles
D) No hay diferencia significativa entre ellas
Respuesta Correcta: B

Las pruebas estáticas se realizan sin ejecutar el código (revisiones, análisis estático), mientras que las pruebas dinámicas requieren ejecutar el software para evaluar su comportamiento.

Pregunta 21: ¿Qué es Behavior-Driven Development (BDD)?

A) Una forma de gestionar conflictos en equipos
B) Extensión de TDD enfocada en comportamiento esperado en lenguaje natural
C) Un método obsoleto de desarrollo
D) Una técnica exclusiva de ciberseguridad
Respuesta Correcta: B

BDD es una extensión de TDD que enfatiza escribir pruebas en lenguaje natural cercano al negocio (Gherkin), facilitando comunicación entre técnicos, testers y stakeholders sobre comportamiento esperado.

Pregunta 22: ¿Cuál es un ejemplo de COTS (Commercial Off-The-Shelf)?

A) Código personalizado desarrollado internamente
B) Microsoft Office o Salesforce (software comercial listo para usar)
C) Únicamente software de código abierto
D) Herramientas de desarrollo como compiladores
Respuesta Correcta: B

COTS (Commercial Off-The-Shelf) se refiere a productos software comerciales listos para usar como Microsoft Office, Oracle, Salesforce, que se adquieren sin necesidad de desarrollo personalizado.

Pregunta 23: ¿Qué principio fundamental se busca aplicar en la refactorización de código?

A) Cambiar la funcionalidad del código radicalmente
B) Mejorar la estructura sin cambiar la funcionalidad observable
C) Eliminar todos los comentarios del código
D) Reescribir todo el código desde cero cada mes
Respuesta Correcta: B

La refactorización mejora la estructura interna del código sin cambiar su funcionalidad observable, aumentando legibilidad, reduciendo complejidad y facilitando futuras modificaciones.

Pregunta 24: ¿Cuál es el principal desafío en la gestión de componentes reutilizables?

A) Que los componentes sean demasiado simples
B) Mantener versionado, compatibilidad, documentación y calidad
C) Que no requieren mantenimiento
D) Que son únicamente para empresas grandes
Respuesta Correcta: B

Gestionar componentes reutilizables requiere establecer sistemas de versionado, mantener compatibilidad hacia atrás, documentación clara, control de calidad y plan de mantenimiento actualizado.

Pregunta 25: ¿Qué enfatiza específicamente el modelo de desarrollo en V?

A) Desarrollo completamente ágil sin documentación
B) La verificación y validación en cada nivel de desarrollo
C) Solo pruebas al final del proyecto
D) La eliminación de todas las pruebas
Respuesta Correcta: B

El modelo en V enfatiza que cada nivel de desarrollo tiene su correspondiente nivel de prueba/validación. Lado izquierdo descompone requisitos, lado derecho integra y prueba progresivamente.

9. Referencias Bibliográficas

Referencias Normativas y Metodológicas

  1. Ministerio de Administraciones Públicas. (2008). MÉTRICA Versión 3: Metodología de Planificación, Desarrollo y Mantenimiento de Sistemas de Información. Disponible en administracionelectronica.gob.es
  2. ISO/IEC 25010:2023. Calidad del software y sistemas. Modelos de calidad.
  3. IEEE 829:2021. Standard for Software Test Documentation
  4. SWEBOK (Software Engineering Body of Knowledge) – IEEE 2014

Referencias sobre Testing y Pruebas de Software

  1. Pressman, R. S. (2021). Software Engineering: A Practitioner’s Approach. 9ª edición. McGraw-Hill.
  2. Sommerville, I. (2020). Software Engineering. 10ª edición. Addison-Wesley.
  3. Myers, G. J., Badgett, T., & Sandler, C. (2011). The Art of Software Testing. 3ª edición. Wiley.
  4. Cohn, M. (2009). Succeeding with Agile: Software Development Using Scrum. Addison-Wesley. (Pirámide de Cohn)
  5. Copeland, L. (2004). A Practitioner’s Guide to Software Test Design. Artech House Publishers.

Referencias sobre Metodologías Ágiles

  1. Beck, K. (2000). Extreme Programming Explained: Embrace Change. 1ª edición. Addison-Wesley.
  2. Schwaber, K., & Sutherland, J. (2020). The Scrum Guide. Scrum.org
  3. Anderson, D. J. (2010). Kanban: Successful Evolutionary Change for Your Technology Business. Blue Hole Press.
  4. Poppendieck, M., & Poppendieck, T. (2006). Implementing Lean Software Development. Addison-Wesley.

Referencias sobre Reutilización y Arquitectura de Software

  1. Meyer, B. (2002). Object-Oriented Software Construction. 2ª edición. Prentice Hall. (Componentes y reutilización)
  2. Bass, L., Clements, P., & Kazman, R. (2021). Software Architecture in Practice. 4ª edición. Addison-Wesley.
  3. Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
  4. Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.

Referencias sobre DevOps y Integración Continua

  1. Humble, J., & Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley.
  2. Kim, G., Debois, P., Willis, J., & Humble, J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations. IT Revolution Press.
  3. Fowler, M. (2014). Microservices. Martin Fowler Blog.

Referencias Específicas del Sector Público (SAS)

  1. Junta de Andalucía. Servicio Andaluz de Salud. Políticas de Tecnología de la Información.
  2. Agencia para la Defensa de la Seguridad Informática (CCN-CERT). Guías de seguridad informática en sistemas sanitarios.
  3. Regulación General de Protección de Datos (RGPD) UE 2016/679 – Aplicación a sistemas sanitarios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *