Close

Pruebas de software para una entrega continua

Descubre qué ventajas ofrecen las pruebas de software y qué papel tienen en la entrega continua.

¿Qué son las pruebas de software?

Las pruebas de software son un proceso organizativo dentro del desarrollo de software en el que se verifica la corrección, la calidad y el rendimiento del software crucial para el negocio Las pruebas de software sirven para garantizar que las funciones de producto y los sistemas empresariales previstos se comporten correctamente como se esperaba.

Las pruebas de software pueden ser manuales o automatizadas.

  • Un equipo o una persona se encarga de llevar a cabo las pruebas de software manuales: trabaja manualmente con un producto de software y se asegura de que se comporte según lo previsto.
  • Las pruebas de software automatizadas se componen de muchas herramientas distintas, cada una con diferentes funciones que van desde comprobar que el código aislado sea correcto hasta simular una experiencia de prueba manual completamente humana.

Artículos relacionados con las pruebas de software

[CONTINUACIÓN]

Ventajas de las pruebas de software

Las pruebas de software permiten ahorrar tiempo y dinero a la organización, ya que reducen los costes de desarrollo y mantenimiento del software. Además, aportan una garantía de estabilidad al desarrollo de funciones nuevas. Con estas pruebas se garantiza que una función se comporte según lo previsto y que los usuarios no detecten errores.

El tiempo de desarrollo de funciones nuevas disminuye, ya que se especifica un conjunto de casos de prueba que la función nueva debe cumplir para que se considere terminada y lista para entregar. De este modo, los desarrolladores pueden trabajar con un único objetivo para obtener estimaciones más precisas del cronograma y minimizar la aparición de nuevos errores. Una vez implementados esos casos de prueba, se reducen los costes generales de mantenimiento. Las pruebas se pueden ejecutar con una función ya entregada para garantizar que se siga comportando según lo previsto.

Niveles de pruebas de software

Existen diversos niveles fundamentales en las pruebas de software y cada uno de ellos examina las funciones del software desde un punto de vista único dentro del proceso de desarrollo. Veamos cada tipo de prueba y en qué casos funcionarían mejor.

Pruebas unitarias

El nivel fundamental de las pruebas de software son las pruebas unitarias. Este tipo de pruebas consiste en instrumentar comprobaciones de corrección de entrada y salida en unidades individuales de código. En este caso, la unidad de medida utilizada son las funciones o métodos de código independientes.

Mientras se realizan las pruebas unitarias, las funciones de código de producción se ejecutan en un entorno de prueba con una entrada simulada. A continuación, la salida de la función se compara con la salida esperada de esa entrada. Si la salida de la función coincide con la salida esperada, la prueba se supera. Si no, no se supera. Las pruebas unitarias son perfectas para validar las funciones de datos obtenidas.

Un ejemplo hipotético de una historia de usuario de prueba unitaria tendría este aspecto: "función 2VAL, los 2 valores dados x e y siempre devuelven x+y". Luego la prueba unitaria ejecutaría 2VAL con dos valores y confirmaría que la salida es x+y. Las pruebas unitarias son muy útiles para confirmar la corrección de un código que utilice valores monetarios.

Niveles de pruebas de software: pruebas unitarias, pruebas de integración, pruebas funcionales y pruebas exploratorias

Pruebas de integración

Cuando un caso de prueba de software incluye más de una unidad, se considera una prueba de integración. Mientras se desarrolla un caso de prueba de software, las pruebas unitarias pueden evolucionar rápidamente hasta convertirse en pruebas de integración. A veces se puede desarrollar una prueba unitaria que funciona con una dependencia de código de terceros. En ese caso no será necesario probar la dependencia, y la integración será ficticia o se falsificará.

Pruebas funcionales o de extremo a extremo

Los casos de prueba que simulan una experiencia de usuario completa se denominan "pruebas funcionales" o "pruebas de extremo a extremo". Las pruebas de extremo a extremo se sirven de herramientas que simulan el comportamiento humano real de los usuarios. Estos son los pasos que se siguen habitualmente en las pruebas de extremo a extremo:

  • Haz clic en este botón.
  • Lee este texto.
  • Envía este formulario.

Debido al contexto de experiencia completa en el que se realizan estas pruebas, se verifica la corrección en todas las capas de una pila de software.

Pruebas exploratorias

Las pruebas exploratorias consisten en asignar a los testers una tarea general que deben completar utilizando el software que se va a probar. Con ellas puedes descubrir muchas cosas sobre cómo utiliza la gente tu producto. En las sesiones de pruebas exploratorias incluso se puede incentivar a los usuarios con recompensas para aquellos que encuentren más incidencias o el peor defecto, o bien hagan algo inesperado con el producto.

Una de las ventajas de las pruebas exploratorias de software es que cualquiera puede participar en ellas, ya que lo único que hay que hacer es navegar por el producto de forma libre. Las pruebas exploratorias no son aleatorias, pero tampoco siguen un guion, como es el caso de las pruebas manuales.

Las pruebas de software en la entrega continua

La entrega continua aprovecha todas las estrategias de prueba anteriores para crear una canalización fluida que entrega automáticamente las tareas de código completadas. Con una configuración óptima, los desarrolladores pueden enviar el código completado recientemente a la canalización de entrega continua para que se evalúe. A continuación, la canalización ejecuta todos los niveles de pruebas en ese código. Si el código supera las pruebas, se fusionará e implementará automáticamente en la producción. De lo contrario, el código se rechazará y el desarrollador recibirá automáticamente una notificación con los pasos que debe seguir para corregirlo.

Los ecosistemas más populares de desarrollo de lenguaje de software cuentan con ecosistemas secundarios para pruebas. Existen muchas herramientas con distintas funciones que ayudan a instrumentar y desarrollar conjuntos de pruebas. Estas herramientas se suelen instalar mediante el gestor de paquetes específico del lenguaje de programación utilizado en el proyecto.

Aparte de esas herramientas, también existen otras para realizar y desarrollar pruebas. Se pueden instalar varios ejecutores de pruebas para proporcionar datos de salida de un conjunto de pruebas. Algo que se suele hacer habitualmente es medir la cobertura de las pruebas a lo largo de un proyecto. Se puede utilizar una herramienta de cobertura de código para indicar qué parte de una base de código está cubierta adecuadamente.

Una vez que se ha desarrollado un conjunto de pruebas y este funciona correctamente en un proyecto local, suele ser bastante fácil integrarlo en una canalización de CD. La mayoría de los sistemas de CD y CI alojados disponen de guías sobre cómo integrar un conjunto de pruebas en una canalización.

Cómo incorporar las pruebas a una canalización de CD

Una canalización de CD que sea realmente práctica y útil debe tener unos fundamentos de prueba sólidos. Estos fundamentos parten de empezar por casos de prueba manuales para luego pasar a soluciones automatizadas.

Haz hincapié en la calidad en cada fase de la canalización

Todos somos responsables de la relación de calidad que tenemos con el cliente, ya seamos desarrolladores, testers, etc. Cada línea de código mejora la experiencia del cliente o la empeora. El conjunto de pruebas de una canalización de CD es una herramienta polifacética para desarrollar código correcto y de alta calidad. Durante la fase de diseño de un producto, se puede recurrir al conjunto de pruebas para fundamentar las consideraciones que se deban tener en cuenta al desarrollar una determinada función. El conjunto de pruebas sirve principalmente para agilizar el proceso de desarrollo, pero también se puede utilizar en entornos de ensayo y producción para garantizar la calidad ahí también.

Capacita a los desarrolladores para que demuestren la calidad de las funciones

La metodología de pruebas tradicional sostiene que las pruebas son un proceso independiente, ajeno a los desarrolladores. Si no involucramos al equipo de desarrollo en el control de calidad, le costará empatizar con el cliente. Además, las incidencias que haya en la base de código pueden agudizarse con el tiempo, y corregirlas acabaría saliendo más caro. Esta metodología también sale cara a nivel de organización, ya que fomenta la contratación de un equipo de control de calidad específico para que se haga cargo de la calidad.

La entrega continua promueve en los desarrolladores la concienciación y la empatía que se debe tener con la experiencia del usuario final. Los desarrolladores se encargan de ofrecer una cobertura de pruebas de las funciones que producen, así como de supervisarlas desde el entorno de desarrollo hasta el de producción. De esta forma, tienen la oportunidad de hacerse responsables de la calidad de una función (y de demostrarla).

Incorpora el feedback de los clientes

La entrega continua permite implementar cambios rápidamente en un proyecto de software y actualizarlo según convenga. De este modo, se puede incorporar el feedback de los clientes inmediatamente en la siguiente publicación. En caso de que un usuario informe de una incidencia, se puede consultar el conjunto de pruebas de la canalización de CD para acotar el alcance de los posibles vectores de incidencias. Los equipos de desarrollo y pruebas que responden rápidamente al feedback de los clientes suelen obtener mejores resultados.

¿Quieres crear tu propio entorno de entrega continua? Deja que te ayudemos a empezar.

Diseña una estrategia sólida de pruebas de software

A la hora de diseñar una estrategia de pruebas de software, ten presente el producto, el usuario y la estrategia global de la empresa. Habrá que tomar algunas decisiones con respecto a qué objetivos de cobertura de pruebas son más valiosos.

En un mundo ideal, un proyecto de software intentaría alcanzar el 100 % de la cobertura de pruebas y garantizaría que el código no contiene errores y funciona según lo previsto. Lamentablemente, esta visión no es muy realista en el mundo empresarial, donde siempre hay limitaciones de tiempo y presupuesto.

También hay que tener en cuenta diferentes estrategias de pruebas en función del tipo de software que se vaya a entregar. Si se trata de una aplicación con una interfaz de usuario gráfica, las pruebas de extremo a extremo serán de gran utilidad. Los proyectos de software libre de Headless UI renuncian a las pruebas de extremo a extremo y prefieren las pruebas unitarias.

Estas son las líneas generales que toda estrategia debe tener en el caso de las aplicaciones para usuarios que utilizan una interfaz gráfica:

  1. Instrumentar pruebas de extremo a extremo en todos los flujos de usuario principales, como el inicio de sesión, el registro, la tramitación de compras, etc.
  2. Instrumentar pruebas unitarias en todas las funciones de código que utilicen información sensible, como las herramientas para realizar transacciones monetarias.
  3. Instrumentar pruebas de integración en cualquier punto de una integración externa para garantizar que se compartan datos con esa integración y evitar que se propaguen errores.

Mejora las pruebas de software con una entrega continua

Implementar un flujo de trabajo con entrega continua aporta muchos beneficios para la organización. Para empezar, los costes de contratación y gestión de distintos equipos para controlar la calidad, gestionar las publicaciones y realizar pruebas se pueden reducir significativamente apostando por un flujo de trabajo de CD.

La entrega continua ofrece una visión más completa de la calidad del producto que los flujos de trabajo tradicionales de pruebas de control de calidad. Las pruebas de CD fomentan el compromiso entre los desarrolladores e influyen tanto en la experiencia del usuario final como en la calidad de las funciones que desarrollan. Estas pruebas establecen un marco que permite a las empresas centrarse en las áreas prioritarias y hablar sobre la calidad de las publicaciones.

Implementar una estrategia sólida de pruebas de software es la base de la entrega continua, y la automatización es clave para que una canalización de entrega continua dé buenos resultados.

¿Todo listo para reforzar tus pruebas de software? Consulta más información sobre las pruebas en un entorno de CD.

Claire Maynard
Claire Maynard

Claire es una empleada sénior de marketing de Atlassian que ha trabajado en crecimiento, rendimiento y marketing de productos a lo largo de su trayectoria. En este momento, está al frente de la estrategia de marca, contenido y comercialización de Confluence Cloud. Le gusta dedicar su tiempo libre a surfear, salir a correr o descubrir restaurantes en San Francisco o en ciudades de todo el mundo.