En verificacion y validacion, la verificacion evalua si el producto se construye conforme a sus especificaciones ("construir bien el producto"), mientras que la validacion evalua si el producto satisface la necesidad y el uso previsto del usuario ("construir el producto correcto") (Boehm, 1981; ISO/IEC/IEEE 24765:2017). El estandar de referencia para planear las actividades y tareas de V&V por fase del ciclo de vida y por nivel de integridad es IEEE 1012-2016. Las pruebas estaticas examinan artefactos sin ejecutar el codigo (revisiones y analisis estatico) y las dinamicas ejecutan el software para observar su comportamiento (ISO/IEC/IEEE 29119-1).
Para seleccionar la plataforma de despliegue por concepto, la nube (NIST SP 800-145) define 5 caracteristicas esenciales, 3 modelos de servicio y 4 modelos de despliegue (privada, comunitaria, publica e hibrida). En IaaS el cliente administra el SO y las aplicaciones sobre infraestructura del proveedor; en PaaS el proveedor administra ademas la plataforma de ejecucion y el cliente solo la app y sus datos; en SaaS se consume la aplicacion completa como servicio. Las APIs REST y el middleware comunican componentes web y moviles. Los contenedores comparten el kernel del anfitrion (virtualizacion a nivel de SO), a diferencia de las maquinas virtuales, que incluyen un SO invitado sobre un hipervisor (NIST SP 800-190). La tuberia de despliegue separa desarrollo, pruebas, staging y produccion; la paridad dev/prod reduce defectos (Twelve-Factor App; Humble & Farley, 2010).
Los niveles de prueba dinamica son cuatro: unitaria, integracion, sistema y aceptacion. El modelo en V empareja requisitos con aceptacion, diseno del sistema con prueba de sistema, diseno arquitectonico con integracion y diseno detallado con prueba unitaria (ISTQB).
TDD escribe primero la prueba y luego el codigo que la satisface; BDD describe el comportamiento esperado en lenguaje comun. La CI integra y verifica cambios con construccion y pruebas automatizadas, y la CD mantiene el software siempre desplegable a produccion (Humble & Farley, 2010). Las revisiones formales se clasifican en 5 tipos (IEEE 1028-2008): gestion, tecnica, inspeccion, walkthrough y auditoria; la inspeccion Fagan (IBM, 1976) asigna roles para detectar defectos temprano.
1. Según la definición estándar de cómputo en la nube, ¿cuáles son los tres modelos de servicio que se ofrecen a los clientes?
El NIST SP 800-145 define exactamente tres modelos de servicio: IaaS, PaaS y SaaS. DaaS, FaaS y BaaS son modelos reales del mercado, pero no forman parte de esta clasificación estándar. (NIST Special Publication 800-145, The NIST Definition of Cloud Computing (2011))
2. ¿Cuáles son los cuatro modelos de despliegue de la nube reconocidos por el NIST?
El NIST SP 800-145 define cuatro modelos de despliegue de la nube: privada, comunitaria, pública e híbrida; las demás combinaciones no corresponden a esta clasificación estándar. (NIST Special Publication 800-145 (2011))
3. Una empresa desea desplegar su aplicación web sin instalar ni administrar el sistema operativo, el servidor de aplicaciones ni el entorno de ejecución; su equipo solo escribirá y subirá el código fuente. ¿Qué modelo de servicio en la nube debe contratar?
En PaaS el proveedor administra el sistema operativo y el entorno de ejecución, y el cliente solo se encarga de su aplicación y sus datos; en IaaS el cliente seguiría administrando el sistema operativo. (NIST Special Publication 800-145)
4. Un administrador de infraestructura requiere control total sobre el sistema operativo, sus parches y las bibliotecas instaladas, pero no quiere comprar ni mantener servidores físicos propios. ¿Qué modelo de servicio en la nube satisface mejor esta necesidad?
IaaS entrega recursos virtualizados de cómputo, almacenamiento y red, dejando al cliente la administración del sistema operativo y sus aplicaciones; en PaaS esa administración recae en el proveedor. (NIST Special Publication 800-145)
5. En el modelo de servicio SaaS, ¿qué administra típicamente el usuario final de la aplicación?
En SaaS la aplicación completa se consume como servicio; el proveedor administra la infraestructura, el sistema operativo y la plataforma, mientras que el usuario final solo usa y, en su caso, configura la aplicación. (NIST Special Publication 800-145)
6. ¿Cuál de las siguientes afirmaciones describe correctamente la diferencia de responsabilidades entre IaaS y PaaS?
IaaS deja al cliente la administración del sistema operativo hacia arriba; PaaS traslada esa responsabilidad al proveedor, dejando al cliente solo la aplicación y sus datos. Las demás opciones invierten esta relación. (NIST Special Publication 800-145)
7. ¿Cuál de las siguientes NO es una de las características esenciales del cómputo en la nube según el NIST (SP 800-145)?
El NIST define cinco características esenciales: autoservicio por demanda, acceso amplio a la red, agrupación de recursos, elasticidad rápida y servicio medido; la portabilidad entre proveedores es deseable, pero no forma parte de esta lista. (NIST Special Publication 800-145)
8. ¿Qué distingue principalmente a los contenedores de las máquinas virtuales como mecanismo de virtualización de aplicaciones?
Los contenedores usan virtualización a nivel de sistema operativo y comparten el kernel del anfitrión, lo que los hace más ligeros que las máquinas virtuales, que ejecutan un sistema operativo invitado completo sobre un hipervisor. (NIST Special Publication 800-190, Application Container Security Guide (2017))
9. Un equipo despliega su aplicación en un entorno de pruebas que usa una versión distinta del motor de base de datos y variables de configuración diferentes a las de producción; todas las pruebas pasan en ese entorno, pero al liberar a producción aparecen fallas no detectadas previamente. ¿Qué principio de las tuberías de despliegue se incumplió?
Mantener paridad entre los entornos de desarrollo, pruebas y producción reduce el riesgo de comportamientos distintos al desplegar; usar versiones y configuraciones diferentes rompe ese principio y oculta defectos hasta producción. (The Twelve-Factor App, factor X (Dev/prod parity); Humble, J. & Farley, D. (2010), Continuous Delivery)
10. ¿Cuántos niveles de prueba dinámica se reconocen típicamente en el ciclo de vida de pruebas de software?
Los niveles de prueba dinámica se organizan típicamente en cuatro: unitaria, integración, sistema y aceptación; la regresión es un tipo de prueba aplicable en cualquier nivel, no un nivel adicional. (ISTQB Certified Tester Foundation Level Syllabus; ISO/IEC/IEEE 29119-2)
11. ¿Cuál de las siguientes describe correctamente el objetivo de la prueba unitaria (o de componente)?
La prueba unitaria aísla un componente individual del resto del sistema; las otras opciones describen, respectivamente, integración, sistema y aceptación. (ISTQB Certified Tester Foundation Level Syllabus)
12. ¿Cuál es el objetivo principal de la prueba de integración?
La prueba de integración se enfoca en las interfaces y la interacción entre componentes o sistemas integrados, a diferencia de la prueba unitaria, que aísla un único componente. (ISO/IEC/IEEE 29119-2; ISTQB Foundation Level Syllabus)
13. ¿Qué evalúa específicamente la prueba de sistema dentro del ciclo de vida de pruebas?
La prueba de sistema valora el sistema completo e integrado contra sus requerimientos funcionales y no funcionales; las demás opciones describen la prueba unitaria, la integración y la aceptación. (ISTQB Certified Tester Foundation Level Syllabus)
14. ¿Cuál es el propósito principal de la prueba de aceptación?
La prueba de aceptación busca confirmar que el sistema cumple los criterios de aceptación del cliente o usuario y está listo para su uso; las otras opciones describen niveles distintos. (ISTQB Certified Tester Foundation Level Syllabus; ISO/IEC/IEEE 29119-2)
15. En un proyecto que sigue el modelo en V, el equipo documentó los requerimientos del usuario durante la fase inicial de análisis. Según este modelo, ¿con qué nivel de prueba se empareja esa fase para su verificación posterior?
En el modelo en V, los requerimientos del usuario se emparejan con la prueba de aceptación, mientras que el diseño del sistema, el diseño arquitectónico y el diseño detallado se emparejan respectivamente con sistema, integración y unitaria. (ISTQB Foundation Level Syllabus (modelos de ciclo de vida de desarrollo y prueba))
16. Durante la fase de diseño arquitectónico, el equipo definió los módulos del sistema y las interfaces de comunicación entre ellos. De acuerdo con el modelo en V, ¿qué nivel de prueba corresponde específicamente a esta fase de diseño?
El modelo en V empareja el diseño arquitectónico con la prueba de integración, pues en ambos se trabaja sobre los módulos y sus interfaces; el diseño detallado corresponde a la prueba unitaria y el diseño del sistema a la prueba de sistema. (ISTQB Foundation Level Syllabus (modelos de ciclo de vida de desarrollo y prueba))
17. Un defecto solo se manifiesta cuando el módulo de facturación se comunica con el módulo de inventario a través de una interfaz compartida; cada módulo funciona correctamente cuando se ejecuta de forma aislada. ¿En qué nivel de prueba es más probable detectar este defecto antes de llegar a producción?
El defecto surge específicamente en la interfaz entre dos módulos integrados, que es justo lo que evalúa la prueba de integración; la prueba unitaria no lo detectaría porque cada módulo funciona bien de forma aislada. (ISO/IEC/IEEE 29119-2; ISTQB Foundation Level Syllabus)
18. ¿Cuál de las siguientes NO es uno de los cuatro niveles de prueba reconocidos en el ciclo de vida de pruebas de software?
La prueba de regresión es un tipo de prueba que puede ejecutarse en cualquier nivel para confirmar que los cambios no introdujeron nuevos defectos, pero no constituye uno de los cuatro niveles reconocidos. (ISTQB Certified Tester Foundation Level Syllabus; ISO/IEC/IEEE 29119-2)
19. El equipo interno de calidad certifica que el sistema completo cumple todos los requerimientos funcionales y no funcionales especificados en el diseño; después, el cliente ejecuta sus propios escenarios de uso real para decidir si aprueba la entrega. ¿A qué dos niveles de prueba corresponden, en ese orden, ambas actividades?
Certificar el cumplimiento de los requerimientos del sistema completo corresponde a la prueba de sistema, y la validación final por parte del cliente corresponde a la prueba de aceptación; invertir el orden es un error común de confusión entre ambos niveles. (ISTQB Certified Tester Foundation Level Syllabus)
20. El desarrollo guiado por pruebas (TDD, Test-Driven Development) organiza el trabajo en un ciclo iterativo conocido comúnmente como...
El ciclo característico de TDD es rojo (prueba que falla), verde (código mínimo que la pasa) y refactorización (mejora del diseño sin cambiar el comportamiento observable). (Beck, K. (2003), Test-Driven Development: By Example)
21. Dentro de un ciclo de TDD, ¿en qué orden se realizan las siguientes actividades?
TDD exige escribir primero una prueba que falle (rojo), luego el código mínimo que la haga pasar (verde) y solo después refactorizar; invertir este orden contradice el principio de 'test-first'. (Beck, K. (2003), Test-Driven Development: By Example)
22. Un desarrollador que afirma practicar TDD codifica primero la función 'calcularDescuento()' por completo y solo después agrega pruebas unitarias para verificarla. ¿Qué principio fundamental de TDD está incumpliendo?
El principio central de TDD es escribir la prueba antes que el código de producción; programar primero y probar después invierte ese orden, aunque después se agreguen pruebas unitarias. (Beck, K. (2003), Test-Driven Development: By Example)
23. ¿Qué caracteriza principalmente al desarrollo guiado por comportamiento (BDD, Behavior-Driven Development)?
BDD expresa el comportamiento esperado del sistema en lenguaje natural y estructurado (por ejemplo, Dado-Cuando-Entonces), de forma que personas técnicas y de negocio compartan una misma especificación. (North, D. (2006), 'Introducing BDD')
24. ¿Cuál es la principal diferencia conceptual entre TDD y BDD?
BDD nace como una evolución de TDD que traslada el enfoque técnico de 'probar primero' hacia especificaciones de comportamiento en lenguaje natural, compartidas entre desarrolladores y áreas de negocio. (North, D. (2006), 'Introducing BDD'; Beck, K. (2003), Test-Driven Development: By Example)
25. Un equipo redacta, junto con el área de negocio, escenarios en formato Dado-Cuando-Entonces para validar que una nueva funcionalidad de compra en línea satisface las necesidades reales del usuario antes de liberarla a producción. ¿A qué nivel de prueba se asocia más naturalmente esta práctica de BDD?
Los escenarios BDD redactados con el negocio para validar que el software satisface la necesidad real del usuario se usan típicamente como criterios de aceptación, por lo que se asocian con la prueba de aceptación. (North, D. (2006), 'Introducing BDD'; ISTQB Foundation Level Syllabus)
26. Un equipo aplica TDD de forma estricta y todas sus pruebas unitarias pasan; sin embargo, al integrar el sistema completo, este no cumple varios requerimientos de negocio porque las pruebas unitarias no reflejaban escenarios reales de uso. ¿Qué práctica complementaria ayudaría a cerrar esa brecha?
BDD complementa a TDD al expresar el comportamiento esperado en escenarios de negocio compartidos con las partes interesadas, reduciendo el riesgo de que las pruebas técnicas ignoren necesidades reales del usuario. (North, D. (2006), 'Introducing BDD')
27. En una API que sigue el estilo arquitectónico REST, la restricción de 'ausencia de estado' (statelessness) significa que:
La restricción de statelessness de REST exige que cada solicitud sea autocontenida; el servidor no conserva el contexto del cliente entre solicitudes. (Fielding, R. (2000), Architectural Styles and the Design of Network-based Software Architectures, cap. 5 (REST).)
28. ¿Cuál de los siguientes métodos HTTP usados en una API REST NO es idempotente, de modo que invocarlo varias veces puede crear un recurso distinto en cada llamada?
POST se usa para crear recursos y, por convención, no es idempotente: cada invocación puede generar un nuevo recurso; PUT, DELETE y GET sí son idempotentes. (RFC 9110, HTTP Semantics (semántica de idempotencia de los métodos HTTP).)
29. En una API REST, cuando el servidor procesa correctamente una solicitud y crea un nuevo recurso, el código de estado HTTP que debe devolver es:
El código 201 Created indica que la solicitud tuvo éxito y se creó un nuevo recurso; 200 se usa para éxito general, 204 cuando no hay contenido y 202 cuando el procesamiento será asíncrono. (RFC 9110, HTTP Semantics, códigos de estado 2xx.)
30. Un cliente envía una solicitud a una API REST con un token de autenticación válido, pero el usuario asociado no tiene permiso para acceder al recurso solicitado. El código de estado HTTP que el servidor debe devolver es:
403 Forbidden indica que el servidor autenticó al usuario pero rechaza el acceso por falta de permisos; 401 se reserva para cuando la autenticación falta o es inválida. (RFC 9110, HTTP Semantics, definiciones de 401 y 403.)
31. En arquitecturas de software, se denomina 'middleware' al software que:
El middleware es el software intermedio que provee servicios comunes de comunicación, mensajería o transacciones entre el sistema operativo y las aplicaciones, o entre aplicaciones distribuidas. (ISO/IEC/IEEE 24765:2017, Systems and software engineering — Vocabulary (término middleware).)
32. Una organización necesita centralizar la autenticación, el enrutamiento de solicitudes y la limitación de tasa (rate limiting) para varios microservicios expuestos como APIs REST, sin modificar la lógica interna de cada servicio. El componente de middleware más adecuado es:
El API Gateway es el patrón de middleware que centraliza el enrutamiento, la autenticación y el control de tráfico de múltiples APIs sin alterar la lógica interna de los microservicios. (Richardson, C. (2018), Microservices Patterns (Manning), patrón API Gateway.)
33. A diferencia de una llamada REST síncrona, en la que el cliente espera la respuesta inmediata del servidor, el middleware orientado a mensajes (message-oriented middleware) permite la comunicación entre componentes mediante:
El middleware orientado a mensajes (MOM) desacopla temporalmente a productor y consumidor mediante colas o tópicos, permitiendo comunicación asíncrona, a diferencia de una llamada REST síncrona. (Hohpe, G. y Woolf, B. (2003), Enterprise Integration Patterns (Addison-Wesley); middleware orientado a mensajes.)
34. Dentro de las restricciones del estilo arquitectónico REST, el principio que establece que las respuestas del servidor deben incluir enlaces que indiquen al cliente las transiciones de estado disponibles a partir del recurso actual se conoce como:
HATEOAS es la restricción de REST según la cual las respuestas incluyen hipervínculos que guían al cliente hacia las transiciones de estado disponibles, distinta de statelessness o cacheable. (Fielding, R. (2000), Architectural Styles and the Design of Network-based Software Architectures, cap. 5.)
35. La técnica de prueba de caja negra que agrupa los valores del dominio de entrada en clases que, según la especificación, deberían producir un comportamiento equivalente del sistema se conoce como:
La partición de equivalencia divide el dominio de entrada en clases que, por especificación, deben tratarse de forma equivalente, reduciendo el número de casos de prueba necesarios. (ISO/IEC/IEEE 29119-4 (Test techniques); ISTQB Foundation Level Syllabus.)