Todo lo que debes saber sobre certificación de software

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.

 

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.

Índice

¿Qué es calidad de software?
¿Qué son pruebas de software?
¿Qué son pruebas automatizadas?
¿Qué conocimientos técnicos necesitas para automatizar?
Conoce las Herramientas de Selenium
¿Qué son pruebas no funcionales?

¿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.

calidad de software

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.

Java screen

Path

¿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.

Testers

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.  Aquí te explicamos las herramientas más usadas de SeleniumHQ:

Para saber más  de automatización de software, lee cuatro herramientas de Selenium para crear tus pruebas automatizadas. 

1. Selenium IDE

Es un entorno de desarrollo integrado para scripts de Selenium. Se implementa como una extensión de Firefox que solo funciona en la versión 55 e inferiores. Esta herramienta permite grabar, editar y depurar todos los eventos del navegador. Con esta información, las personas pueden reproducir pruebas de manera fácil y rápida en el entorno real en el que se ejecutarán.

2. Selenium Core

Es una herramienta más que nos proporciona SeleniumHQ. Una clara desventaja que lo identifica es que no se pueden grabar ni editar scripts como lo hace Selenium IDE.

Si queremos usar Selenium Core, debemos tener acceso a la escritura del sitio web porque para poder capturar los elementos, tenemos que disponer de un identificador que nos facilite esto. Además, hay navegadores que nos permiten buscar los identificadores que necesitamos.

Una ventaja de esta herramienta para automatizar pruebas es que tiene una fácil integración con Selenium Remote Control. Esto quiere decir que cuando capturamos un elemento, podemos pedirle una acción que haría un usuario común y así la visualizamos en un tiempo determinado. Con esto podemos integrar las pruebas funcionales sobre aplicaciones web. Las pruebas automatizadas nos ahorrarían una gran cantidad de tiempo y harían que la ejecución de pruebas funcionales sea mucho más simple. 

3. Selenium Remote Control (RC)

Es una herramienta de prueba que permite escribir pruebas de UI de aplicaciones web automatizadas en los lenguajes de programación: Java, C#, Ruby, Pytho, Javascript (Node)

Esta herramienta puede usarse contra cualquier sitio web HTTP utilizando algún navegador compatible con JavaScript.

4. Selenium WebDriver

El mayor cambio que ha tenido Selenium recientemente ha sido la inclusión de la API de WebDriver. Conducir un navegador de forma nativa como usuario, ya sea localmente o en una máquina remota que utiliza el Servidor Selenium, supone un avance en cuanto a la automatización del navegador.

Selenium WebDriver encaja en la misma función que RC. Se refiere tanto a los enlaces de idioma como a las implementaciones del código de control del navegador individual, esto se conoce comúnmente como "WebDriver" o, algunas veces, como Selenium 2.

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.

Más sobre Selenium WebDriver

Esta herramienta permite al usuario reproducir el ambiente real de la aplicación. A  lo que se suma, que a través de una extensión se pueden crear los scripts de prueba de manera sencilla. 

Para conocer más de Selenium lee, Descubre las funcionalidades de Selenium WebDriver

Las ventajas de del Selenium WebDriver son: 

  • WebDriver está diseñado en una interfaz de programación más simple y concisa junto con algunas limitaciones en la API de Selenium-RC.
  • Comparada con Selenium 1.0, WebDriver es una API compacta orientada a objetos.
  • Impulsa el navegador de manera mucho más efectiva y supera las limitaciones de Selenium 1.x, que afectó la cobertura de prueba funcional, como la carga o descarga de archivos, ventanas emergentes y barreras de diálogo.
  • WebDriver supera la limitación de la política de origen de host único de Selenium RC.

¿Y cómo funciona en aplicaciones móviles?

Usar Selenium WebDriver mobile no tiene mucha diferencia que hacerlo con el Selenium WebDriver para navegadores. Lo único que cambia son los drivers y la interfaz, que simula un Android. Aunque hay muy pocas herramientas estables que podemos aprovechar, aún así es posible hacerlas.

App

¿Qué podemos automatizar con Selenium WebDriver? Como Selenium WebDriver nos sirve tanto para navegadores como para móviles, podemos capturar cualquier cosa que un usuario final pueda hacer en cualquier dispositivo.

Con Selenium WebDriver podemos automatizar aquellos procesos críticos que nos tomarían mucho tiempo ejecutar manualmente. Por ejemplo, un formulario con más de cuatro pasos y un proceso largo que esté en constante revisión.

¿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

Nuevo llamado a la acción