¿Qué son las tablas de pruebas?
Las tablas de pruebas en Go representan una técnica eficiente para validar múltiples escenarios de entrada y salida sobre una misma función. Este enfoque resulta especialmente útil cuando se busca optimizar el proceso de testing y mantener el código limpio y organizado. Al emplear este método, es posible definir un conjunto de casos de prueba en una estructura, lo que facilita la automatización y el mantenimiento de los tests. Aplicar mejores prácticas para pruebas en Go permite detectar errores de manera temprana y asegurar la calidad del software.
Ejemplo del uso de tablas de pruebas en Go
package persona
func EsAdulto(edad int) bool {
return edad >= 18
}
package persona
import "testing"
type EsAdultoTest struct {
edad int
want bool
}
var esAdultoTests = []EsAdultoTest{
{edad: 17, want: false},
{edad: 18, want: true},
{edad: 19, want: true},
}
func TestEsAdulto(t *testing.T) {
for _, test := range esAdultoTests {
got := EsAdulto(test.edad)
if got != test.want {
t.Errorf("EsAdulto(%v) = %v, se esperaba %v", test.edad, got, test.want)
}
}
}
En este ejemplo, se define una estructura que almacena los datos de cada caso de prueba, permitiendo así cómo estructurar pruebas con tablas en Go de forma clara y reutilizable.
type EsAdultoTest struct {
edad int
want bool
}
A continuación, se crea un arreglo con los diferentes valores de entrada y los resultados esperados, lo que facilita la gestión de múltiples escenarios de prueba.
var esAdultoTests = []EsAdultoTest{
{edad: 17, want: false},
{edad: 18, want: true},
{edad: 19, want: true},
}
El ciclo recorre cada elemento de la tabla de pruebas y ejecuta la función bajo prueba, comparando el resultado obtenido con el esperado. Este patrón es ampliamente utilizado en ejemplos de tablas de pruebas en Golang por su claridad y escalabilidad.
for _, test := range esAdultoTests {
got := EsAdulto(test.edad)
if got != test.want {
t.Errorf("EsAdulto(%v) = %v, se esperaba %v", test.edad, got, test.want)
}
}
La salida del test será similar a la siguiente:
PASS
ok github.com/arumals/como-aprendi-go/073_tabla_de_pruebas 0.005s
Ventajas de usar tablas de pruebas en Go
- Permiten definir múltiples casos de prueba de manera estructurada y legible.
- Facilitan la automatización y el mantenimiento de los tests, ya que los casos se agrupan en una sola estructura.
- Mejoran la escalabilidad de las pruebas, permitiendo agregar o modificar escenarios fácilmente.
- Ayudan a detectar errores en diferentes condiciones de entrada y salida de forma eficiente.
- Fomentan la reutilización de código y la claridad en la lógica de validación.
Mejores prácticas para pruebas en Go con tablas de pruebas
- Define nombres descriptivos para cada caso de prueba, usando campos como
name
en la estructura. - Incluye todos los escenarios relevantes, tanto casos típicos como casos límite y de error.
- Mantén las estructuras de prueba simples y fáciles de leer, evitando la complejidad innecesaria.
- Utiliza subtests (
t.Run
) para identificar fácilmente qué caso falla y mejorar la legibilidad de los reportes. - Separa claramente los datos de entrada, los resultados esperados y la lógica de validación.
- Reutiliza las tablas de pruebas en diferentes funciones o paquetes cuando sea posible.
- Documenta brevemente el propósito de cada tabla de pruebas y sus campos.
- Actualiza y amplía las tablas de pruebas conforme evoluciona la lógica de negocio o los requisitos.
Conclusión
El uso de tablas de pruebas en Go es una estrategia fundamental para mejorar la calidad y la mantenibilidad del código. Esta técnica permite definir múltiples casos de prueba de manera estructurada, facilitando la automatización y la detección de errores en etapas tempranas del desarrollo. Además, aplicar ventajas de usar tablas de pruebas en Go ayuda a mantener los tests organizados y escalables, lo que resulta esencial en proyectos de cualquier tamaño. Adoptar este enfoque no solo optimiza el tiempo dedicado a la validación, sino que también promueve la escritura de código más robusto y confiable. En definitiva, incorporar cómo testear aplicaciones en Go usando test tables y seguir las mejores prácticas para pruebas en Go son pasos clave para cualquier desarrollador que busque eficiencia y calidad en sus proyectos.
Cuestionario de repaso
- ¿Qué son las tablas de pruebas en Go y para qué se utilizan principalmente?
- Explica cómo se estructura y utiliza una tabla de pruebas en un test de Go.
- Menciona al menos tres ventajas de emplear tablas de pruebas en Go.
- Enumera y describe dos mejores prácticas recomendadas al implementar tablas de pruebas en Go.
- ¿Por qué es importante actualizar y ampliar las tablas de pruebas conforme evoluciona la lógica de negocio?
- ¿Cómo ayuda el uso de subtests (
t.Run
) en la gestión de tablas de pruebas? - ¿Qué aspectos debes documentar al crear una tabla de pruebas para que sea fácil de mantener y reutilizar?