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