pues si te ponen algo como
funcion factorial(n)
if(n<0) error;
if(n>0) return n*factorial(n-1)
return 1;
Caja negra, se lo que la funcion debe retornar, no tengo ni idea de como debe ser por dentro, pero sabiendo lo que la función hace puedo predecirlo
el factorial de 0 también se que es 1
el factorial de cualquier numero mayor que 1 se calcula haciendo no se qué, el programa saca esa salida
el factorial de cualquier número menor que cero debe dar error.
luego que deberias probar pues el caso de n=0, coger algunos casos de n>'0 como n=4 y n=27 y comparar la salida del programa con lo que debe dar en verdad y luego ver que si le metes n<0 peta, por ejemplo n=-1 o cosas así.
Caja blanca, propongo algún caso que cubra las alternativas
n = 4 cumple el if, luego la funcion debe retornar factorial(4)
n = 0 no cumple el primer if, la funcion debe retornar 1 (la definición natural de factorial de 0)
n < 0 no es una entrada valida, cumple el primer if y retorna error.
(Para seleccionar un conjunto de casos de prueba debes fijarte en como lo hace el código, a ver si puedes forzar cosas raras).