Categorías
Software Testing

¿Por qué necesitamos pruebas de software?

¿Por qué necesitamos probar nuestro programa?

Cuando la gente habla de la importancia de las pruebas de software, los ejemplos comunes que dan con frecuencia son software militar, aviones, etc. Eso no es lo suficientemente concreto para entender por qué necesitamos probar nuestro software.

Aquí proporciono un ejemplo del trabajo de programación diario. No es necesario trabajar para un proyecto militar para comprender por qué necesitamos pruebas de software.

El ejemplo proporcionado aquí es capitalizar (String str) método de org.apache.commons.lang3.StringUtils que es de la biblioteca Apache Commons Lang.

El siguiente método pone en mayúscula una cadena determinada. Suponga que escribe este método para su proyecto. ¿Cómo saber si este método es confiable y siempre devuelve lo que debería devolver? ¡Necesitamos probar! Es decir, dados todos los diferentes tipos de entrada, vemos si devuelve los resultados esperados. Los resultados devueltos pueden ser buenos o malos, pero deben esperarse.

public static String capitalize(String str) {
    int strLen;
    if (str == null || (strLen = str.length()) == 0) {
        return str;
    }
    return new StringBuilder(strLen)
        .append(Character.toTitleCase(str.charAt(0)))
        .append(str.substring(1))
        .toString();
}

El código de prueba para este método se encuentra a continuación. He eliminado el código para probar otros métodos.

El código de prueba prueba diferentes tipos de entradas, como nulo, una cadena vacía, una cadena de un solo carácter y los resultados de otro método. De esta manera, podemos afirmar que este método es confiable.

  Tutorial de JUnit (2) - Anotaciones
@Test
public void testCaseFunctions() {
    assertEquals(null, StringUtils.capitalize(null));
 
    assertEquals("capitalize(empty-string) failed", "", StringUtils.capitalize("") );
 
    assertEquals("capitalize(single-char-string) failed", "X", StringUtils.capitalize"x") );
 
    // reflection type of tests: Sentences.
    assertEquals("capitalize(uncapitalize(String)) failed",
                     SENTENCE_CAP, StringUtils.capitalize(StringUtils.uncapitalize(SENTENCE_CAP)) );
 
    // reflection type of tests: One word.
    assertEquals("capitalize(uncapitalize(String)) failed",
                     FOO_CAP, StringUtils.capitalize(StringUtils.uncapitalize(FOO_CAP)) );
 
}

El método assertEquals es del marco JUnit, que es el estándar de facto de las pruebas unitarias.

Referencias:

1. Commons Lang JavaDoc
2. Método JUnit assertEquals

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

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