Carreras Tecnológicas

Todo lo que necesita saber sobre los métodos de prueba de software

Probador de software enfocado que trabaja en una computadora portátil en la oficina

••• Imágenes de héroe/imágenes de Getty

Tabla de contenidoExpandirTabla de contenido

Antes de que el software se envíe para uso público o comercial, los programadores pasan horas solucionando cada error y el producto permanece en el limbo hasta que todas las partes interesadas estén satisfechas.

Los gigantes del software de Silicon Valley como Google y Facebook a menudo envían productos populares al mercado a pesar de los errores de baja prioridad de su software. Los inversores y millones de usuarios leales tolerarán actualizaciones de software y problemas temporales en los productos que ofrecen estas empresas.

La mayoría de las empresas de software no tienen este lujo. Los clientes quieren que los productos funcionen como se anuncia y, con razón, se alarman si hay vulnerabilidades no abordadas.

¿Por qué son necesarias las habilidades de prueba?

Con tantas opciones de desarrollo de software disponibles, los clientes no lo piensan dos veces antes de abandonar el barco si el producto apesta a tiempo y dinero perdidos. Las empresas de software deben realizar pruebas rigurosas en sus productos antes de lanzarlos a los clientes. Estas pruebas ofrecen los siguientes conocimientos:

  • Destacan las diferencias entre el concepto original y el resultado final.
  • Verifican que el software funcione como lo planearon los diseñadores.
  • Ellos evalúan las características y la calidad.
  • Validan que el producto final cumpla con los requisitos del cliente.

Las pruebas siguen un plan estricto para optimizar la carga de trabajo, el tiempo y el dinero, al tiempo que brindan a las partes interesadas información esencial para hacer avanzar el producto. El objetivo es facilitar una experiencia positiva para el usuario final al mantener una minuciosa seguro de calidad (programa de control de calidad). Dado lo mucho que está en juego para los desarrolladores, los gerentes de control de calidad son algunos de los los que más ganan en la industria de la tecnología. Las pruebas generalmente siguen estos pasos:

  1. Realice un análisis de requisitos, en el que los gerentes describan un plan para implementar una estrategia de prueba adecuada.
  2. Comience las pruebas y analice los resultados.
  3. Corrija cualquier defecto y someta el software a pruebas de regresión (un sistema para verificar que el programa aún funciona después de las modificaciones).
  4. Cree un informe de cierre de prueba que detalle el proceso y los resultados.

Las personas pueden convertirse en probadores de software certificados a través de BCS, The Chartered Institute for IT, DETENER (Junta Internacional de Calificaciones de Pruebas de Software), y ASQ (Sociedad Americana para la Calidad).

Métodos de prueba de software

Las pruebas de caja blanca y negra son dos métodos fundamentales para juzgar el comportamiento y el rendimiento del producto. Las pruebas de caja negra, también llamadas pruebas funcionales o basadas en especificaciones, se centran en la salida. Los probadores no están preocupados por los mecanismos internos. Solo verifican que el software haga lo que se supone que debe hacer. El conocimiento de la codificación no es necesario, y los evaluadores trabajan en el nivel de la interfaz de usuario.

Pruebas de caja blanca utiliza la experiencia de codificación como parte del procedimiento de prueba. Cuando un producto falla, los probadores profundizan en el código para encontrar la causa. Los desarrolladores de software harán esto ellos mismos porque los clientes esperan que hagan que un producto funcione. La prueba de caja blanca también se conoce como prueba 'basada en la estructura' o 'caja de cristal'.

Las pruebas estáticas examinan el código fuente y cualquier documentación que lo acompañe, pero no ejecutan el programa. Las pruebas estáticas comienzan temprano en el desarrollo del producto durante el proceso de verificación.

Las pruebas dinámicas utilizan varias entradas cuando el software se está ejecutando y los evaluadores comparan las salidas con el comportamiento esperado. Las pruebas de la interfaz gráfica de usuario evalúan el formato del texto, los cuadros de texto, los botones, las listas, el diseño, los colores y otros elementos de la interfaz. Las pruebas de GUI requieren mucho tiempo y las empresas de terceros a menudo asumen la tarea en lugar de los desarrolladores.

Niveles de prueba

Se utilizan diferentes niveles de prueba para identificar áreas de debilidad y superposición en cada fase del Ciclo de vida del desarrollo de programas . Los niveles de prueba son:

  • Prueba de unidad
  • Pruebas de integración
  • Pruebas del sistema
  • Test de aceptación

Cuando se realizan pruebas unitarias, los desarrolladores prueban las partes más básicas del código, como clases, interfaces y funciones/procedimientos. Saben cómo debe responder su código y pueden hacer ajustes según el resultado.

Pruebas de integración también se conoce como prueba de 'módulo' o 'programa'. Es similar a las pruebas unitarias pero contiene un mayor nivel de integración. Los módulos del software se prueban en busca de defectos para verificar su función. Las pruebas de integración identifican errores cuando los módulos se integran. Los diferentes métodos para las pruebas de integración incluyen 'de abajo hacia arriba', 'de arriba hacia abajo' e 'incremental funcional'.

Las pruebas del sistema prueban los componentes de un proyecto como un todo en diferentes entornos. La prueba del sistema cae bajo el método de la caja negra y es una de las pruebas finales del proceso. Determinará si el sistema está preparado para satisfacer las necesidades del negocio y del usuario.

En general, hay dos tipos de pruebas de aceptación. En las pruebas alfa, el software se ejecuta internamente en el sitio del desarrollador en un entorno real o simulado. El software se ejecuta como si los usuarios finales en vivo lo estuvieran usando. Los desarrolladores toman notas de cualquier problema y comienzan a corregir errores y otros problemas.

También bajo el alcance de las pruebas de caja negra, en las pruebas de aceptación, los clientes prueban el software para averiguar si el desarrollador ha desarrollado completamente el programa para que se ajuste a las especificaciones deseadas.

Las pruebas beta, o pruebas de campo, permiten a los clientes probar el producto en sus sitios en condiciones reales. Los clientes pueden ofrecer a un grupo de usuarios finales la oportunidad de probar el software a través de versiones preliminares o beta. La prueba beta tiene como objetivo obtener comentarios reales de los usuarios, que se envían al desarrollador.

Tipos de prueba

Los diferentes tipos de pruebas de software están diseñados para enfocarse en objetivos específicos. El ingeniero de pruebas y el administrador de configuración utilizan las pruebas de instalación para garantizar que el usuario final pueda instalar y ejecutar el programa. Cubre áreas como archivos de instalación, ubicaciones de instalación y privilegios administrativos.

Las pruebas de desarrollo implementan una variedad de estrategias sincronizadas para detectar y prevenir defectos. Incluye análisis de código estático, revisiones de código por pares, trazabilidad y análisis de métricas. El objetivo es reducir riesgos y ahorrar costes.

La experiencia del usuario es el centro de atención con las pruebas de usabilidad. Mide la facilidad de uso de la GUI. Comprueba la precisión y eficiencia de las funciones y las respuestas emocionales de los sujetos de prueba.

Una prueba de cordura indica si el software vale la pena el tiempo y el costo para continuar con más pruebas. Si hay demasiados defectos, no seguirán pruebas más agresivas.

Las pruebas de cordura se realizan durante la fase de lanzamiento del software, donde se realizan pruebas de humo para ver si el software se ejecutará lo suficiente como para que se pueda probar.

Las pruebas de humo revelan fallas fundamentales que son lo suficientemente graves como para evitar la liberación. Cuando los desarrolladores prueban una nueva compilación, se denomina prueba de 'verificación de compilación'. Cuando el sistema sufre modificaciones, las pruebas de regresión monitorean el comportamiento inesperado. Señala efectos adversos en módulos o componentes.

Los evaluadores ingresan entradas anormales y disciernen la capacidad del software para administrar entradas inesperadas en pruebas destructivas. Esto muestra a los desarrolladores cuán robusto es el programa en la gestión de errores.

Cuando el hardware u otras funciones fallan, las pruebas de recuperación muestran qué tan bien el software puede recuperarse y continuar funcionando.

La automatización realiza funciones que son difíciles de implementar manualmente. Las pruebas implican el uso de software específico para ejecutar pruebas y proporcionar datos sobre los resultados reales frente a los esperados.

El software debe ejecutarse en varios entornos informáticos, por lo que las pruebas de compatibilidad verifican cómo responde el software a diferentes sistemas. Por ejemplo, los programadores prueban el software con varios sistemas operativos y navegadores web.

Las pruebas deben ser exhaustivas y abordar todas las inquietudes de los clientes, o el proyecto se convierte rápidamente en un desperdicio de recursos.

Las pruebas de rendimiento examinan el rendimiento del software en diferentes escenarios. Se recopila información sobre la capacidad de respuesta, la estabilidad, la asignación de recursos y la velocidad. Las subpruebas, como las pruebas de volumen, capacidad y picos, juegan un papel importante en este proceso.

Las pruebas de seguridad miden la capacidad del software para proteger la seguridad de los usuarios. Las funciones de autorización, autenticación, confidencialidad, integridad, disponibilidad y no repudio son ejemplos de características que deben probarse.

Las pruebas de accesibilidad son diferentes a las pruebas de usabilidad. Esto determina la medida en que los usuarios de diversas capacidades pueden utilizar el software.

Los resultados de las pruebas de internalización y localización muestran cómo el software puede adaptarse a diferentes idiomas y demandas regionales. Esto incluye agregar componentes para ubicaciones específicas y traducción de texto.