Calidad de software: pruebas, automatización y certificación

7 min read
28 de septiembre de 2023

Los desarrollos tecnológicos necesitan pruebas, antes de salir a producción.  De lo contrario, podrían tener errores, reprocesos, mala experiencia de usuario, pérdida de tiempo y de inversión.

En este artículo, exploraremos la importancia de las pruebas de software, la automatización de pruebas utilizando herramientas como Selenium, y la certificación de calidad en el desarrollo tecnológico. Para lograrlo abordaremos los siguientes temas: 


Cuando se habla de certificación, se abarcan distintos tipos de pruebas como funcionales y no funcionales. Entre las funcionales se encuentran las más importantes: las manuales que se complementan con las automatizadas, ambas tienen como objetivo ir probando los diferentes escenarios que podría tener un usuario final, y así, localizar los errores o vulnerabilidades que tiene un sistema en su vida de desarrollo.

Las manuales son ejecutadas por personas y las automatizadas, por ‘robots’, configurados y desarrollados, de tal forma que localizan por sí mismos la gran mayoría de errores de funcionalidad. Además, encuentran fallas que expertos pasan por alto y acortan hasta en un 70 por ciento el tiempo de la ejecución en comparación con las pruebas manuales.

Las pruebas normalmente se hacen a sitios web, App, software de escritorio, videojuegos, entre otros desarrollos que muchas personas usan. Antes de que uno de estos productos salga a producción, debe cumplir con todas las expectativas que espera el cliente y con los estándares de calidad que exigen las normas.

Si una herramienta no tiene pruebas, antes de salir a producción, puede tener muchos errores, reprocesos, mala experiencia de usuario, pérdida de tiempo y de inversión, tanto por el cliente como por los desarrolladores.

¿Qué es calidad de software?

La calidad de software es un complemento necesario en la vida de desarrollo de un sistema porque garantiza que el producto final tenga valor y cumpla con las expectativas esperadas por el usuario final.

La calidad del software es sinónimo de eficiencia, por ello, las empresas dedicadas a desarrollos de tecnologías deben tener expertos conocidos como QA o analistas de Pruebas, quienes conforman los equipos de Certificación para analizar plataformas antes de que salgan a producción o se actualicen.

Quieres saber más sobre los QA o analistas de pruebas, lee Conoce la importante labor de los testers en desarrollo web.

La calidad del software es el  “grado con el que un sistema, componente o proceso cumple los requisitos especificados y las necesidades o expectativas del cliente o usuario final” (IEEE 6.10-1990).

También, es el “proceso eficaz de software que se aplica de manera que crea un producto útil que proporciona valor medible a quienes los producen y a lo utilizan” (Bolaños, Sierra, & Alarcón, 2008).

¿Qué son pruebas de software?

Las pruebas de software abordan la aplicación de técnicas y herramientas apropiadas dentro de un proceso de desarrollo que determina la calidad del software. De esta manera, garantiza que se construya el sistema correcto y de la forma adecuada.

Mientras más rápido apliques los mecanismos de pruebas en un proceso de desarrollo, evitas que el proyecto se salga del tiempo y del presupuesto planeado, ya que se detectan errores en etapas tempranas del proceso.

¿Para qué realizar pruebas de software? Las pruebas son el ‘filtro de calidad’ de un  desarrollo tecnológico, antes de hacerle un despliegue de versión o pasar a la producción, es decir, cuando esté listo para ser probado por los usuarios.

De acuerdo con la necesidad del producto, los QA o analistas realizan diferentes tipos de pruebas, pero antes de iniciarlas, definen una estrategia para evaluar cuántas personas se necesitan para desempeñar el rol de QA en el proyecto; cómo se manejará la información de las pruebas y cómo será el proceso para ejecutarlas.

Las pruebas son clave para conocer el nivel de calidad de los productos, actuar a tiempo, minimizar riesgos y costos en los procesos, disminuir usuarios insatisfechos por un sistema entregado de forma incorrecta. Mejoran la imagen y la credibilidad de la empresa que desarrolla la tecnología.

Para saber más sobre la importancia de las pruebas, lee Claves a tener en cuenta antes de realizar una prueba performance.

Tipos de pruebas

  • Funcionalidad
    • Funcionales manuales / automatizadas
    • De humo
    • De regresión
  • Usabilidad
  • Confiabilidad
    • De seguridad
  • Performance
    • De carga
    • De stress
    • De desempeño
  • Soportabilidad
    • De instalación
  • Pruebas a lo largo del ciclo de vida
    • De componentes
    • Del sistema
    • De integración
    • De aceptación

¿Qué son pruebas automatizadas?

Un método de ejecución de las mismas pruebas funcionales sin intervención humana. A la hora de hacer una prueba automatizada ten en cuenta que esta puede ser semejante a una prueba funcional, con la diferencia de que al ejecutarla, no requiere de personas, puede valerse por sí misma para el hallazgo de errores que pasan desapercibidos por los ojos humanos.

¿Para qué realizar pruebas automatizadas? La principal razón es el tiempo. Se puede reducir hasta en un 70 por ciento en la ejecución en comparación con las manuales. Además, al automatizar las actividades comunes que no requieren de inteligencia humana, los analistas pueden dedicar mayor tiempo a pruebas más críticas y caminos más elaborados, dejando los básicos a las pruebas automatizadas.

Los beneficios de las pruebas automatizadas son:

  • Rapidez
  • Fiabilidad
  • Repetición
  • Programable
  • Reusabilidad

¿Cuándo hacer pruebas automatizadas?

  • En casos de pruebas que se deban correr en cada nueva versión de la aplicación (Sanity Testing).
  • En casos de pruebas que utilicen distintos datos para las mismas acciones. (Data Driven Testing).
  • Cuando haya funcionalidades críticas de la aplicación (Smoke Testing).
  • Igualmente, cuando haya funcionalidades que no cambiarán en un periodo de tiempo relativamente corto.

¿Cuándo no?

En caso de que el sistema esté hecho solo de contenido y no tenga ninguna funcionalidad crítica. Asimismo, cuando los flujos que se quieren automatizar no requieren de tanto tiempo en la ejecución de pruebas manuales. Y si aquellos módulos a automatizar aún no están estables gráficamente.

¿Qué herramientas sirven para automatizar pruebas?

  • Selenium
  • Cucumber
  • Watir
  • Visual Studio Test Proffessional
  • JsTestDriver

¿Qué conocimientos técnicos necesitas para automatizar?

Lo principal es saber algún lenguaje de programación con el que te sientas más cómodo para su desarrollo como Java, Phyton, C#, entre otros.

Además, hay que identificar el elemento que se quiera capturar al automatizar, ya sea por los selectores CSS con los que damos estilo a un sitio web o el selector XPath, que son las coordenadas de la posición del elemento. También existen otras formas de capturar al automatizar, por medio de atributos como su ID, name o su clase de estilos.

¿Qué tipo de aplicaciones puedes automatizar? En el ambiente de sistemas hay una amplia variedad de aplicaciones orientadas a web, móviles y de servicios, ya que son de gran desarrollo y deben tener mayor control en las pruebas para entregar productos estables y con calidad.

¿Qué tanto debes automatizar? Solo lo necesario, no puedes automatizar flujos que no tengan nada que ver con el proceso, no debes complicarte con flujos alternos e innecesarios. Ten presente lo que hay que automatizar para que no hagas scripts sin necesidad.

¿Qué pasa si lo haces? ¿Cuáles son las consecuencias? En caso de que desees hacerlo, ten en cuenta que esto toma un tiempo de desarrollo, lo que va en contravía con el objetivo de ahorrar tiempo a la hora de querer certificar un sistema. Además,  hay sistemas que no podremos automatizar, por ello, hay software para todo.

Un ejemplo claro de ello, es un sistema de contenido, automatizarlo sería completamente innecesario porque no tiene flujos críticos que sean repetitivos, ya que está constantemente cambiando sus elementos.

Conoce las herramientas de Selenium 

Selenium es un conjunto de diferentes herramientas de software, cada una con un enfoque diferente, para apoyar la automatización de pruebas. La mayoría de los ingenieros de QA de Selenium se centran en una o dos herramientas que satisfacen más a las necesidades de su proyecto, sin embargo, aprender todas las herramientas aportará opciones diferentes para abordar distintos problemas de automatización de pruebas.  A continuación las herramientas más usadas de SeleniumHQ:

  1. Selenium IDE
  2. Selenium Core
  3. Selenium Remote Control (RC)
  4. Selenium WebDriver

Con estas herramientas de Selenium podemos reducir considerablemente el tiempo en la creación de las pruebas automatizadas, y estas mismas pruebas pueden ser ejecutadas como un complemento en la ejecución de una prueba funcional. Así, podemos optar por la alternativa que más nos convenga. Lo único que nos queda es usarlas, conocerlas y familiarizarnos con ellas.

Para conocer al detalle información de estas herramientas te invitamos a leer cuatro herramientas de Selenium para crear tus pruebas automatizadas

Conoce más detalles de Selenium WebDriver aquí.

¿Qué son pruebas no funcionales? 

Son las que se hacen desde una perspectiva totalmente diferente a las pruebas automatizadas. Este tipo de pruebas son un medio de control de calidad, que se realiza en aplicaciones de software para asegurarse de que todo funciona bien y poder saber en qué circunstancias podrían fallar. 

Las pruebas no funcionales de software nos permiten conocer qué riesgos corre el producto y nos dicen si tiene un mal desempeño o un bajo rendimiento en los entornos de producción.

En ese sentido, las pruebas no funcionales de software se hacen con el fin de obtener información. Permiten explicar lo que soporta el producto y si cumple con las expectativas de los clientes.

En definitiva, el objetivo principal de este tipo de pruebas es examinar la velocidad del servidor o del sistema para determinar si  responde de inmediato, o no. Asimismo, nos ayudan a establecer cuánta carga puede manejar el servidor o el sistema y así poder saber si este se mantiene estable con diferentes tipos de cargas.

Beneficios

  • Mejora la experiencia de usuario.
  • Aumenta los ingresos en línea.
  • Utiliza métricas importantes para poner a punto tu sistema.
  • Determina los cuellos de botella como la configuración de base de datos.
  • Ayuda a establecer si una nueva versión está preparada para la producción o no.
  • Permite a los interesados conocer el rendimiento real en comparación con sus
    expectativas.  

Si quieres saber más sobre pruebas no funcionales, lee Conoce qué son las pruebas no funcionales de software.

El objetivo principal de este tipo de pruebas es examinar la velocidad del servidor y del sistema para determinar si éstas responden de inmediato, o no. También hay que verificar cuánta carga puede manejar el servidor y el sistema. Asimismo,  comprobar son es estables o tienen diferentes tipos de cargas.

Referencias

Avanzar hacia tus metas es más fácil cuando estás rodeado por un equipo con el que aprendes y mejoras. Consulta nuestras vacantes y descubre lo que significa trabajar en "buena compañía".

Únete a Pragma

Suscríbete al
Blog Pragma

Recibirás cada mes nuestra selección de contenido en Transformación digital.

Imagen form