26 abril 2024

¿Podemos precedir defectos y fallos?

Predicción de Errores

Imagina que estás construyendo una casa. Quieres asegurarte de que la casa sea segura y duradera, así que decides hacer una lista de todos los posibles errores que podrían ocurrir durante la construcción.

Por ejemplo, podrías incluir en tu lista:
  • Un error en los planos de la casa que podría causar que la casa se derrumbe.
  • Un error en los cálculos de ingeniería que podría causar que la casa se derrumbe.
  • Un error en la construcción que podría causar que la casa se derrumbe.

Una vez que tengas una lista de posibles errores, puedes diseñar pruebas para exponer esos errores. Por ejemplo, podrías probar los planos de la casa para asegurarte de que sean correctos. Podrías probar los cálculos de ingeniería para asegurarte de que sean correctos. 

Podrías probar la construcción de la casa para asegurarte de que esté construida correctamente.

La predicción de errores es una técnica similar que se utiliza para probar software. Los probadores utilizan su conocimiento y experiencia para predecir posibles errores en el software. Luego, diseñan pruebas para exponer esos errores.

Ventajas de la predicción de errores
  • Puede ayudar a encontrar errores que no serían fáciles de encontrar con otras técnicas de prueba.
  • Puede ser útil para probar software que es nuevo o complejo.

Desventajas de la predicción de errores
  • Puede ser subjetiva y depender de la experiencia del probador.
  • Puede ser difícil de documentar y replicar.


19 abril 2024

¿Se vale usar la experiencia para probar?

Técnicas de Prueba Basadas en la Experiencia

Imagina que estás jugando un videojuego y quieres encontrar un atajo para llegar a la meta más rápido.
Una forma de hacerlo es explorar el juego y probar diferentes cosas. Por ejemplo, podrías intentar saltar por encima de los obstáculos, usar objetos para ayudarte a moverte más rápido o intentar encontrar una ruta secreta.

Las técnicas de prueba basadas en la experiencia son similares a esta forma de jugar. Se basan en la experiencia y la intuición del probador para identificar pruebas que no fueron fácilmente identificadas por otras técnicas más sistemáticas.

Ejemplos de técnicas de prueba basadas en la experiencia
  • Pruebas exploratorias: El probador explora el software de forma aleatoria, intentando encontrar errores o problemas.
  • Pruebas de caja negra: El probador intenta encontrar errores o problemas en el comportamiento del software, sin tener en cuenta su estructura interna.
  • Pruebas de usabilidad: El probador intenta encontrar errores o problemas en la facilidad de uso del software.

Ventajas de las técnicas de prueba basadas en la experiencia
  • Pueden encontrar errores que no fueron fácilmente identificados por otras técnicas.
  • Pueden ser útiles para probar software que es nuevo o complejo.
  • Pueden ser útiles para probar software que es difícil de probar con otras técnicas.

Desventajas de las técnicas de prueba basadas en la experiencia
  • Pueden ser subjetivas y depender de la experiencia del probador.
  • Pueden ser difíciles de replicar.
  • Pueden ser difíciles de medir.


12 abril 2024

¿Qué prueba de estructura es la mejor?

El Valor de la Prueba de Sentencia y Decisión

Imagina que estás construyendo un robot. El robot tiene un brazo que puede extender y retraer. El robot tiene el siguiente código:

Python
def extender_brazo():
  brazo.extender()

def retraer_brazo():
  brazo.retraer()

La función extender_brazo() tiene una sola sentencia ejecutable: brazo.extender().

La función retractar_brazo() tiene una sola sentencia ejecutable: brazo.retraer().


La prueba de sentencia se centra en probar cada sentencia ejecutable en el código. En este caso, la prueba de sentencia requeriría crear dos casos de prueba: uno para la función extender_brazo() y otro para la función retractar_brazo().

Estos casos de prueba probarían que el robot puede extender y retraer su brazo correctamente.

La prueba de decisión se centra en probar cada decisión en el código. En este caso, la prueba de decisión no requeriría crear ningún caso de prueba adicional.

Esto se debe a que la prueba de decisión ya se ha cubierto con la prueba de sentencia.


05 abril 2024

Comprobar las decisiones del código

Prueba y Cobertura de Decisión 

Imagina que estás jugando un videojuego y quieres comprar una armadura. El videojuego tiene la siguiente función:

Python
def comprar_espada(jugador):
  if jugador.tiene_dinero():
    armadura = crear_armadura()
    jugador.agregar_armadura(armadura)
    return armadura
  else:
    return None

La función comprar_armadura() tiene una sola decisión: jugador.tiene_dinero().


La prueba de decisión es una técnica de prueba de software que se centra en probar cada decisión en el código. En este caso, la prueba de decisión requeriría crear dos casos de prueba: uno que pase un jugador con dinero a la función comprar_armadura() y otro que pase un jugador sin dinero a la función comprar_armadura().

Los casos de prueba probarían que la función comprar_armadura() funciona correctamente en ambos casos:

  • Si el jugador tiene dinero, la función debería devolver una armadura.
  • Si el jugador no tiene dinero, la función debería devolver None.


Retrospectivas: ¡Aprendiendo de nuestros errores!

Imagina que estás construyendo una red social para probadores de software. Al final de cada sprint (un periodo corto de desarrollo), te reún...