miércoles, 16 de septiembre de 2015


¿Qué es prueba de software?




  • La prueba (testing) es el proceso de ejecutar un programa con la intención de encontrar fallos [Glenford J. Myers]
  • Deben realizar pruebas de todos los artefactos generados durante la construcción de un producto software, lo que incluye en las especificaciones de requisitos, casos de usos diagramas de diversos tipos y por supuesto el código fuente y el resto que forma parte de la aplicación
  • Un buen caso de prueba es el que tiene alta probabilidad de detectar un nuevo error ƒ Un caso de prueba con éxito es el que detecta un error nuevo.




objetivos:

objetivos de las pruebas
                Encontrar defectos en el software
              Una prueba tiene éxito si descubre un defecto
              Una prueba fracasa si hay defectos pero no los descubre
Pruebas de Verificación
 Ver si cumple las especificaciones de diseño
Pruebas de Validación
 Ver si cumple los requisitos del análisis
Pruebas del Software

1. Demostrar al desarrollador al cliente que el software satisface sus requerimientos.
Para el software a medida, significa que debe haber al menos una prueba para cada requerimiento del sistema y del usuario.
Para software genérico, significa que debe haber pruebas para todas las características del sistema que se incorporarán en la entrega del producto.
Este objetivo conduce a las pruebas de validación => se espera que el sistema funcione correctamente usando un conjunto determinado de casos de prueba que refleja el uso esperando aquel.


2.Descubrir defectos en el software: que su comportamiento es incorrecto, no deseable o no cumple su especificación.
La prueba de defectos está relacionada con la eliminación de todos los comportamientos no deseables.
Ej: caídas del sistema, interacciones no permitidas con otros sistemas, cálculos incorrectos y corrupción de datos.
Este objetivo conduce a la prueba de defectos, cuando los casos de prueba se diseñan para exponer los defectos.
Modelo del Proceso de Pruebas de software

Pruebas de “caja blanca”

Concepto y terminología
  Pruebas en que se conoce el código a probar
  Caja blanca (clear box: caja clara o transparente)
  Se procura ejercitar cada elemento del código
Algunas clases de pruebas
  Pruebas de cubrimiento
  Pruebas de condiciones
  Pruebas de bucles


Pruebas de cubrimiento
Ejecutar al menos una vez cada sentencia
Se necesitan varios casos de prueba
  Determinar posibles “caminos” independientes
  Cada condición debe cumplirse en un caso y en otro no. En general, se necesitan tantos casos como condiciones, más uno (número ciclomático)
Puede ser imposible cubrir el 100%
  Código que nunca se ejecuta: condiciones imposibles
  Ejemplo: detección y notificación de errores internos en un código sin errores

Pruebas de condiciones

Cumplir o no cada parte de cada condición
Se necesitan varios casos de prueba
  Determinar expresiones simples en las condiciones
  Una por cada operando lógico o comparación
  Cada expresión simple debe cumplirse en un caso y en otro no, siendo decisiva en el resultado
Puede ser imposible cubrir el 100%
  Expresiones simples no independientes


Pruebas de bucles
Conseguir números de repeticiones especiales
Bucles simples
  Repetir cero, una y dos veces
  Repetir un número medio (típico) de veces
  Repetir el máximo-1, máximo y ¡máximo +1!
Bucles anidados
  Repetir un número medio (típico) los bucles internos, el mínimo los externos, y variar las repeticiones del bucle intermedio ensayado.
  Ensayarlo con cada nivel de anidamiento
¿Qué software existen para crear pruebas de software?
















Selenium.
Esta compuesto por dos herramientas: Selenium IDE y SeleniumWebDriver. 
 La primera, un plugin de Firefox que te genera un entorno de desarrollo y que permite crear casos de prueba para aplicaciones web.
 La segunda, Selenium WebDriver, ejecuta las pruebas. Este entorno de automatización de pruebas automáticas opera en los principales navegadores (IE, Mozilla, Chrome y Opera). Además, permite pruebas para dispositivos móviles, para iPhone y Android. Utiliza los siguientes lenguajes: Python, Ruby, Java y C#. La licencia es “Apache 2.0 License”.









JMeter.
Aplicación de escritorio en Java y dentro del proyecto Jakarta. Esta herramienta permite realizar pruebas funcionales (y de rendimiento) para aplicaciones web. Trabaja con los siguientes protocolos: HTTP, HTTPS, SOAP, JDBC, LDAP, JMS, Mail – POP3(S) and IMAP(S). La licencia es “Apache 2.0 License”.















Testlink
Permite crear y gestionar casos de prueba, organizarlos en planes de pruebas, realizar un seguimiento de los resultados, establecer trazabilidad con los requisitos, generar informes etc. Se integra con otros sistemas de seguimiento de “bugs” y “ticketing” como Bugzilla, Mantis, etc. Licencia: GPL.
Seguro que hay muchas más herramientas para pruebas software, también muchas comerciales (muy buenas, por cierto), pero, en mi opinión, estas son las que más te puedes encontrar hoy en proyectos.















2 comentarios: