Para estar realmente seguro, tendrá que probarlos todos.:-)
Hablando en serio, para este tipo de función probablemente estés usando un algoritmo establecido y comprobado. Lo principal que debe hacer es verificar que su código implemente correctamente el algoritmo.
La otra cosa es asegurarse de que comprende los límites de la representación de su número, sea lo que sea. Por lo menos, esto pondrá un límite superior en el tamaño del número que puede probar. Por ejemplo, si usa una int sin signo de 32 bits, nunca podrá probar valores mayores a 4G. Posiblemente su límite será más bajo que eso, dependiendo de los detalles de su implementación.
Solo como un ejemplo de algo que podría salir mal con una implementación: Un algoritmo simple para probar los números primos es intentar dividir el candidato entre todas las primos conocidas hasta la raíz cuadrada del candidato. La función de raíz cuadrada no dará necesariamente un resultado exacto, por lo que para estar seguro debería ir un poco más allá. Hasta qué punto el pasado dependerá específicamente de cómo se implementa la función de raíz cuadrada y cuánto podría estar apagado.
Otra nota sobre las pruebas: además de probar los números primos conocidos para ver si su función los identifica correctamente como primos, también pruebe los números compuestos conocidos para asegurarse de que no obtiene "falsos positivos". Para asegurarte de que obtienes la función de raíz cuadrada correcta, elige algunos números compuestos que tengan un factor primo lo más cercano posible a su raíz cuadrada.
Además, considere cómo va a "generar" su lista de primos para la prueba. ¿Puedes confiar en que la lista sea correcta? ¿Cómo fueron probados esos números y por quién?
Puede considerar codificar dos funciones y probarlas una contra la otra. Uno podría ser un algoritmo simple pero lento que puede estar más seguro de haber codificado correctamente, y el otro uno más rápido pero más complejo que realmente desea usar en su aplicación, pero es más probable que tenga un error de codificación.
¿por qué probarías primero los casos de borde? ¿Qué hay de todos estos controles innumerables e inútiles para cosas nulas y otras cosas que hacen juntos el 80% de su código de prueba, y luego es hora de irse a casa antes de incluso escribir la "prueba real"? Él quiere que el functino trabaje para números "normales". ¿Cómo probarías los bordes? – badbadboy
Digamos que la función funciona para 125 y se bloquea para 12234235345. ¿Pasaría tiempo asegurándose de que arroje ArgumentException en lugar de colgarse? Sin embargo, estoy de acuerdo, es bueno probar los casos extremos si ha terminado con todo lo demás y cree que es útil. – badbadboy
@badbadboy La razón para probar los casos extremos es muy a menudo que es donde se encuentran los errores - y el propósito de las pruebas es exponer los errores. – ChrisN