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.

OPE 2025. TFA INFORMÁTICA

1.1 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 y reutilización de componentes software.

Este tema aborda los principales enfoques en la construcción de sistemas, las pruebas de software y su tipología, la formación de equipos, los métodos y técnicas utilizadas, así como la importancia de la reutilización de componentes para mejorar la eficiencia y reducir costes.


2. Pruebas de Software: Tipologías y Enfoques

Las pruebas de software son un conjunto de actividades sistemáticas que garantizan que un sistema cumpla con los requisitos funcionales y no funcionales. Se pueden clasificar según diferentes criterios.

2.1 Clasificación de las Pruebas de Software

A. Según el Momento de Ejecución
  • Pruebas Estáticas: Se realizan sin ejecutar el código, como revisiones de código y análisis estático.
  • Pruebas Dinámicas: Se ejecuta el software para evaluar su comportamiento y detectar defectos.
B. Según la Caja de Prueba
  • Pruebas de Caja Blanca: Se examina la estructura interna del código, analizando flujo de datos y lógica interna.
  • Pruebas de Caja Negra: Se evalúan entradas y salidas sin conocimiento del código fuente.
  • Pruebas de Caja Gris: Combinación de caja blanca y negra, con acceso parcial al código.
C. Según el Nivel de Prueba
  1. Pruebas Unitarias: Verifican componentes individuales del sistema.
  2. Pruebas de Integración: Comprueban la interacción entre módulos del sistema.
  3. Pruebas de Sistema: Evalúan el comportamiento del sistema completo.
  4. Pruebas de Aceptación: Realizadas por el usuario para validar requisitos funcionales.
D. Según su Objetivo
  • Pruebas Funcionales: Validan que el sistema cumple con los requisitos establecidos.
  • Pruebas de Rendimiento: Evalúan la velocidad, escalabilidad y estabilidad.
  • Pruebas de Seguridad: Detectan vulnerabilidades y fallos de seguridad.
  • Pruebas de Usabilidad: Verifican la facilidad de uso e interacción.
  • Pruebas de Regresión: Aseguran que nuevas modificaciones no afecten funcionalidades previas.

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

La formación del equipo de desarrollo es un aspecto clave para el éxito del proyecto. Incluye:

  • Capacitación en metodologías de desarrollo (Ágil, Waterfall, DevOps).
  • Conocimiento en herramientas y tecnologías (lenguajes de programación, bases de datos, frameworks).
  • Desarrollo de habilidades técnicas y de gestión (arquitectura de software, gestión de proyectos, pruebas automatizadas).

3.1 Participantes en la Formación

  • Desarrolladores: Deben estar capacitados en buenas prácticas de codificación y pruebas.
  • Testers / QA Engineers: Responsables de diseñar e implementar pruebas de calidad.
  • Analistas de Sistemas: Validan requerimientos y diseño funcional.
  • Product Owners: Priorizan funcionalidades y gestionan requisitos.

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

4.1 Métodos de Desarrollo

Los métodos de desarrollo más comunes incluyen:

  • Desarrollo Ágil: SCRUM, Kanban, Extreme Programming (XP).
  • Desarrollo Tradicional: Modelo en Cascada, Desarrollo en V.
  • Desarrollo basado en Componentes (CBD): Enfocado en la reutilización de software.

4.2 Técnicas de Desarrollo y Prueba

  • Refactorización: Mejora del código sin cambiar su funcionalidad.
  • Integración Continua (CI/CD): Automatización del desarrollo y despliegue.
  • TDD (Test-Driven Development): Desarrollo basado en pruebas previas.
  • BDD (Behavior-Driven Development): Pruebas basadas en comportamiento esperado.

5. Reutilización de Componentes Software

La reutilización de software mejora la eficiencia y reduce tiempos de desarrollo. Puede darse en diferentes niveles:

  • Reutilización de código fuente: Uso de librerías y funciones ya existentes.
  • Reutilización de componentes: Uso de módulos o servicios previamente desarrollados.
  • Reutilización de servicios: Arquitectura basada en microservicios y APIs reutilizables.

Ventajas:

  • Reducción de costes y tiempos de desarrollo.
  • Menos errores gracias al uso de código probado.
  • Mayor interoperabilidad y mantenimiento simplificado.

2. CUESTIONARIO (20 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: A
Explicación: Las pruebas garantizan la calidad y fiabilidad del software, detectando defectos y verificando el cumplimiento de los requisitos.

 

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: B

Explicación: 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.


Pregunta 3: ¿En qué nivel del proceso de pruebas se validan los módulos individualmente?

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

Respuesta: C

Explicación: Las pruebas unitarias evalúan componentes individuales del software, 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: C

Explicación: Las pruebas de regresión verifican que las actualizaciones o modificaciones no afecten negativamente las funcionalidades existentes del sistema.


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

A) Desarrollo basado en componentes (CBD)
B) Desarrollo en cascada
C) Desarrollo en espiral
D) Desarrollo ágil

Respuesta: A

Explicación: El desarrollo basado en componentes (CBD) permite construir sistemas a partir de módulos reutilizables, optimizando el tiempo y los 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: B

Explicación: Test-Driven Development (TDD) implica escribir pruebas antes del desarrollo, asegurando que el código cumpla con los 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: B

Explicación: La reutilización de software mejora la eficiencia al reducir el tiempo de desarrollo, permitiendo aprovechar módulos ya probados en otros proyectos.


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

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: C

Explicación: En desarrollo ágil, se realizan pruebas automatizadas y manuales en cada iteración para garantizar la calidad del software en todas las fases del desarrollo.


Pregunta 9: ¿Qué se evalúa 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: B

Explicación: Las pruebas de carga miden la capacidad del sistema para gestionar un alto volumen de solicitudes, evaluando su rendimiento bajo demanda.


Pregunta 10: ¿Qué 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: C

Explicación: 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.


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: D

Explicación: Las pruebas de usabilidad evalúan la facilidad de uso del software mediante pruebas con usuarios reales, verificando la experiencia de usuario.


Pregunta 12: ¿En qué fase del ciclo de vida del software se realizan 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
D) Durante la planificación del proyecto

Respuesta: C

Explicación: Las pruebas de aceptación se realizan antes de la implementación final, asegurando que el software cumpla con los requisitos del cliente.


Pregunta 13: ¿Cuál de los siguientes elementos NO forma parte de la reutilización de componentes software?

A) Bibliotecas y frameworks
B) Diseño de código optimizado
C) Código propietario sin licencias de reutilización
D) Microservicios y APIs

Respuesta: C

Explicación: El código propietario sin licencias de reutilización no se puede compartir ni reutilizar sin autorización, limitando su aprovechamiento en nuevos proyectos.


Pregunta 14: ¿Qué herramienta se utiliza comúnmente en la automatización de pruebas de software?

A) GitHub
B) Selenium
C) MySQL
D) Docker

Respuesta: B

Explicación: Selenium es una herramienta ampliamente utilizada para la automatización de pruebas de interfaz gráfica en aplicaciones web.


Pregunta 15: ¿Qué ventaja tiene la integración continua (CI/CD) en el desarrollo de software?

A) Reduce la necesidad de realizar pruebas.
B) Permite detectar errores de manera temprana en el desarrollo.
C) Elimina la necesidad de documentación.
D) Aumenta los tiempos de entrega.

Respuesta: B

Explicación: La Integración Continua (CI/CD) permite detectar y corregir errores de manera temprana, garantizando despliegues frecuentes y de calidad.


Pregunta 16: ¿Qué es una prueba exploratoria?

A) Una prueba sin planificación previa, basada en la experiencia del tester.
B) Una prueba exclusiva para bases de datos.
C) Una prueba automatizada repetitiva.
D) Un tipo de prueba de aceptación.

Respuesta: A

Explicación: En las pruebas exploratorias, los testers identifican errores sin un plan de pruebas estructurado, confiando en su experiencia y conocimiento del sistema.


Pregunta 17: ¿Cuál es un beneficio de la modularidad en el software?

A) Reduce la escalabilidad del sistema.
B) Facilita la reutilización de componentes.
C) Aumenta la complejidad del mantenimiento.
D) Obliga a escribir código sin estructuras predefinidas.

Respuesta: B

Explicación: La modularidad permite dividir el software en componentes independientes, facilitando su reutilización y mantenimiento.


Pregunta 18: ¿Qué significa CI/CD en desarrollo de software?

A) Continuous Integration / Continuous Deployment
B) Cybersecurity Integration / Cloud Development
C) Critical Interface / Component Design
D) Code Integration / Component Distribution

Respuesta: A

Explicación: CI/CD (Continuous Integration / Continuous Deployment) es un enfoque de automatización para integrar y desplegar software de forma continua.


Pregunta 19: ¿Qué técnica de pruebas permite validar la respuesta del sistema ante condiciones extremas?

A) Pruebas de estrés
B) Pruebas unitarias
C) Pruebas de seguridad
D) Pruebas de aceptación

Respuesta: A

Explicación: Las pruebas de estrés evalúan el comportamiento del sistema bajo cargas extremas para detectar posibles fallos.


Pregunta 20: ¿Qué lenguaje de programación es más utilizado para pruebas automatizadas?

A) JavaScript
B) Python
C) C++
D) Cobol

Respuesta: B

Explicación: Python es ampliamente utilizado en pruebas automatizadas debido a su sintaxis sencilla y compatibilidad con herramientas como Selenium.

 


4. MAPA CONCEPTUAL

                     ┌────────────────────────────────────────────┐  
                     │   Construcción de Sistemas de Información  │  
                     └────────────────────────────────────────────┘  
                                   │  
      ┌───────────────────────────┼─────────────────────────────┐  
      │                           │                             │  
      │  Pruebas de Software       │  Métodos de Desarrollo     │  Reutilización de Componentes  
      │  - Funcionales            │  - Desarrollo Ágil          │  - Código fuente reutilizable  
      │  - Seguridad              │  - Desarrollo Tradicional   │  - Módulos preconstruidos  
      │  - Rendimiento            │  - Integración Continua     │  - Microservicios y APIs  
      │  - Usabilidad             │  - DevOps                   │  - Reducción de costes  
      │                           │                             │  
      ├───────────────────────────┴─────────────────────────────┤  
      │  Formación en Desarrollo de Software                    │  
      │  - Capacitación en herramientas                         │  
      │  - Desarrollo de habilidades técnicas                   │  
      │  - Prácticas en metodologías ágiles                     │  
      └─────────────────────────────────────────────────────────┘  

 

Deja una respuesta

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