Introducción a las Pruebas de Software (Testing software)

Una de las partes más importantes de un buen programador es la calidad de su código. Para obtener dicho resultado, existen multitud de factores. Algunos de ellos pueden ser: buenas prácticas, limpieza del código, metodologías utilizadas, la experiencia del programador, realizar testing…

En este caso, nos vamos a centrar en el último mencionado, el testing. El QA Tester (Quality Assurance), no es nada menos que la persona que verifica o el asegurador de la calidad sobre un código.

Las empresas que contrataban servicios IT, hasta hace poco veían el testing como algo no muy importante y que encima les costaba dinero. Entre otros aspectos, algunas por desconocimiento, otras por un mal planteamiento. Pero en los últimos años, se ha generado un BOOM y cada vez hay más demanda de especialistas del testing. Esto se produce, debido a que se ha producido un cambio en el pensamiento de las empresas. Debido a que se han dado cuenta que invertir en testing, es muy beneficioso para ellas ¡En todos los ámbitos!

Anteriormente, las empresas solían desconocer los beneficios que el testing otorga tanto a nivel de calidad, como de seguridad, de fiabilidad, etc. Por si todo los motivos anteriores fueran pocos, no nos podemos olvidar otro igual de importante, el beneficio de económico que ahorra la empresa gracias a la combinación de todas las ventajas anteriores.

Tipos de pruebas de software

Existen multitud de pruebas. En este artículo, nos vamos a centrar en explicar el explicar el siguiente mapa. Conocer las diferentes pruebas de testing que existen, nos permitirá saber en qué punto estamos situados en cada momento.

Categorias de las pruebas (Nivel 1)

Después de ver el mapa. Vamos a ver las diferentes subcategorías que existen, para después entrar en cada una de las categorías con más detalle.

  • Pruebas funcionales (Functional Testing): también son conocidas como pruebas de caja negra (black-box testing). Se centran en analizar los datos de entrada y salida para definir unos casos de prueba que estarán listos antes del inicio de estas. Las pruebas se realizan habitualmente de forma manual, aunque existe la posibilidad de automatizarlas con una serie de scripts. Su fin es validar que el software cumple con el nivel de calidad requerido para entrar en producción.
  • Pruebas no funcionales (Non-Functional Testing): Son pruebas no funcionales, prueban los atributos de un componente o de un sistema que no se refieren a la funcionalidad. Algunos ejemplos pueden ser: seguridad, fiabilidad, eficiencia, escalabilidad, usabilidad, mantenibilidad, instalación, portabilidad, etc.

Tipos de pruebas funciones (Nivel 2)

Las principales pruebas funcionales son:

  • Pruebas unitarias (Unit Testing): el objetivo de estas pruebas es probar los componentes de un programa individualmente (un ejemplo podría ser el testing de una función o de una clase).
  • Pruebas de integración (Integration Testing): el objetivo de estas pruebas es verificar el correcto ensamblaje de un conjunto de componentes en el entorno. Los cuales, ya han sido probados anteriormente de forma individual mediante a las pruebas unitarias.
  • Pruebas de regresión (End to End Testing): el objetivo de estas pruebas es verificar el correcto funcionamiento de un componente modificado, y a su vez, verificar que el componente modificado no a afectado al correcto funcionamiento del resto de componentes. Se realiza con la finalidad de detectar posibles bugs (fallos) tanto en dicho componente, como en otros componentes. Se ejecutan cuando se implementa un nuevo componente dentro del entorno.
  • Pruebas de aceptación o (User Acceptance Testing): el objetivo de estas pruebas es que clientes testeen el software para verificar que cumple las expectativas.

Tipos de pruebas no funcionales (Nivel 2)

Las principales pruebas no funcionales son:

  • Pruebas de Rendimiento (Performance): el objetivo de estas pruebas es garantizar el funcionamiento bajo una carga de trabajo esperada.
    • Pruebas de carga (Load Testing): el objetivo de estas pruebas es testear la capacidad de la aplicación bajo cargas previstas por el cliente.
    • Pruebas de Estrés (Stress Testing): el objetivo de estas pruebas es testear cómo reacciona la aplicación a cargas de trabajo extremas, como son: un tráfico elevado o una gran cantidad de procesamiento de datos.
    • Pruebas de Escalabilidad (Scalability Testing): el objetivo de estas pruebas es determinar la capacidad de adaptación de la aplicación al aumento de carga de de usuarios (escalabilidad).
    • Pruebas de Volumen (Volume Testing): el objetivo de estas pruebas es determinar el rendimiento de la aplicación según el volumen de datos que contiene la BBDD.
  • Pruebas de seguridad (Segurity Testing): el objetivo de estas pruebas es tratar de descubrir vulnerabilidades, tanto de la aplicación, como de los datos que contenga el sistema.
  • Pruebas de documentación (Documentation Testing): el objetivo de estas pruebas es almacenar cualquier información (escrita o ilustrativa) que describa o defina procedimientos o resultados.
  • Pruebas de instalación (Installacion Testing): el objetivo de estas pruebas es verificar que la instalación de la aplicación se realice satisfactoriamente.
  • Pruebas de confiabilidad (Reliability Testing): el objetivo de estas pruebas es determinar el grado de confiabilidad que ofrecerá la aplicación durante un período determinado en un entorno específico.

Coste de las pruebas por nivel

Conforme más arriba respecto al nivel de jerarquía de testing se detecte un error en una aplicación, más lento, costoso y difícil es solventarlo. Por tanto, todo esto, se traduce en un coste más elevado. Para reducir esto mismo, es aconsejable además de realizar todos los test que hemos visto, el trabajar con la metodología de software TDD, de la que ya hemos hablado recientemente en el blog.

En esta imagen, podemos ver lo que nos puede costar introducir una gran cantidad de errores en un futuro no muy lejano.

Y en la siguiente, como podemos ver como se incrementa el coste de estos errores si más arriba jerárquicamente hablando se encuentren.

Espero que está introducción os haya servido, para adquirir una visión sobre los test. Aunque este artículo, solamente es una introducción . Nos vemos en próximas clases.

4 comentarios

  1. Link exchange is nothing else except it is simply placing the other person’s weblog link on your page at proper place and other person will
    also do same in support of you.

  2. This post is in fact a nice one it helps new net users,
    who are wishing for blogging.

  3. I pay a visit everyday a few websites and websites to read content, except
    this web site gives feature based writing. quest bars http://bitly.com/3jZgEA2 quest bars

  4. Wow, this paragraph is good, my sister is analyzing these kinds of things,
    thus I am going to inform her. cheap flights http://1704milesapart.tumblr.com/ cheap flights

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La Ley 34/2002 nos obliga a avisarte de que usamos cookies propias y de terceros con objetivos estadísticos y de sesión y para mostrarte la 'publi' que nos da de comer. Tranquilo, este mensaje solo sale una vez. Más información

Java desde 0 comunica a los usuarios, a través de este aviso, que puede utilizar cookies cuando el usuario navega por las diferentes pantallas y páginas del sitio. Durante el uso de nuestra página Web usted acepta y autoriza expresamente el uso de cookies, de acuerdo con nuestra Política de Privacidad. Este sitio web utiliza las siguientes cookies propias: - Cookies de sesión, para garantizar que los usuarios que escriban comentarios en el blog sean humanos y no aplicaciones automatizadas. De esta forma se combate el spam. Este sitio web utiliza las siguientes cookies de terceros: - Google AdManager y AdSense: Utiliza cookies para mejorar la publicidad. Entre otros fines, suelen utilizarse para segmentarla según el contenido que sea relevante para los usuarios o su ubicación, mejorar los informes de rendimiento de las campañas y evitar mostrar anuncios que los usuarios ya hayan visto. Las cookies no contienen información personal identificable. Consulta cómo utiliza Google la información de sitios web o aplicaciones. y cómo bloquear determinados anuncios. - Google Analytics: Almacena cookies para poder elaborar estadísticas sobre el tráfico y volumen de visitas de esta web. Al utilizar este sitio web está consintiendo el tratamiento de información acerca de usted por Google. Por tanto, el ejercicio de cualquier derecho en este sentido deberá hacerlo comunicando directamente con Google. - Redes sociales: Cada red social utiliza sus propias cookies para que usted pueda pinchar en botones del tipo Me gusta o Compartir.

Cerrar