En realidad no, de hecho, en algunos casos, más. Las pruebas tienen un conjunto diferente de desafíos. El desarrollo es “hacer que una computadora haga esto (preferiblemente de manera eficiente y sostenible)”. La prueba es “¡veamos si podemos romper esto!”. Eso puede hacerse manualmente, o en algunos casos mediante programación, ya sea haciendo cosas que los humanos simplemente no pueden hacer, o simulando la acción humana a velocidades de computadora.
La mayoría del desarrollo de software es bastante directo y aburrido: descomponga la tarea en pasos, cree cosas que deberían hacer (a menudo agrupando tareas estrechamente relacionadas en una clase o sistema o módulo o lo que sea), conéctelos y aplique cualquier Técnicas conocidas para cuidar cualquier condición inusual, como la necesidad de una escalabilidad extrema, tolerancia a fallas, baja latencia, etc. Pero luego están las personas que van más allá, para inventar esas “técnicas conocidas” que luego las personas aplican, o en menos abordar problemas inusualmente difíciles.
Las pruebas requieren más ideas innovadoras. ¿Una forma toma un número entero de 1 a 100? Solo para empezar, veamos qué sucede si le damos cero. (¡Esperamos que no bloquee los sistemas vitales de la nave!) O 101. O déjelo en blanco. O poner en 3.5.
- ¿Cómo puede ser excepcionalmente bueno para encontrar código para un problema (aplicación / software) que ya ha sido codificado?
- ¿Qué especificaciones de computadora son las mejores para los desarrolladores de software y cuáles son los costos?
- ¿No debería usar una biblioteca de códigos por simplicidad?
- ¿Cuál sería el valor futuro de los diseñadores y arquitectos de software tradicionales en la era de AWS?
- ¿Qué significa que una empresa de software no tenga un puesto de arquitecto de software?
Una prueba muy básica (como la aplicada a una nueva característica muy simple en una aplicación bien probada existente), o un probador principiante, podría dejarla allí, solo probando errores comunes no intencionales del usuario. Pero un buen probador lo llevará a otro nivel. Hay varias maneras de hacer eso.
Una es probar al menos algunas de las condiciones inusuales que puede provocar el usuario o la red o la maquinaria, ya sea deliberadamente o no. ¿Qué sucede si llegamos a este punto en el formulario y cerramos la aplicación? ¿Matarlo a la fuerza desde el sistema operativo? ¿Abrir la misma aplicación web en una nueva pestaña del navegador? ¿Abrir otra instancia de la misma aplicación de escritorio? ¿Cerrar sesión? ¿Corriente cortada? ¿Dejarlo todo, pero desconectarse de la red? ¿Dejar que la batería del teléfono se agote?
Otro enfoque, más difícil pero mucho más divertido, sería probar contra entradas deliberadamente maliciosas . Ahora estamos entrando no en pruebas ordinarias sino en territorio de pruebas de seguridad . Hace veinte años, eso podría haber sido opcional, pero no más, al menos para cualquier cosa en Internet (no solo en la Web). Volviendo al campo entero en un formulario: intente un número de cien dígitos de largo, ¿es demasiado para el tipo entero en el que el sistema intentará introducirlo, o lo repite con precisión? O “fred”: ¿protege contra entradas no numéricas o intenta convertirlas? O “5 ‘); Usuarios de TABLE DROP; – “- ¿está protegiendo contra la inyección de SQL? O alerta de ” (‘gotcha!’) ”: ¿protege contra la inyección de script? O una cadena no numérica de un millón de caracteres: ¿podemos desbordar un búfer y tal vez pegar el código en algún lugar que se ejecute, o alterar algunas variables internas? Y luego está lo que podría hacer con varias entradas en combinación con otros valores de entrada: ¿qué sucede si describimos una entrada y decimos que el mínimo es 37 y el máximo es 12? Esto solo está rascando la superficie. Para hacer bien las pruebas de seguridad, realmente se necesita ser un desarrollador bastante experto, no necesariamente los aspectos de escribir código que se pueda mantener, sino una comprensión profunda de lo que está sucediendo exactamente dentro de la máquina y cómo se puede obligar a que algo salga mal.
Si quieres impresionar a tus amigos internos, pregúntale a tu jefe sobre las pruebas de seguridad de aprendizaje. Eso te abrirá Vistas completamente nuevas (ejem). Como mínimo, aprenda exactamente qué están haciendo esos scripts que está ejecutando y por qué .