¿Las pruebas de software son menos hábiles que el desarrollo de software?

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.

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é .

Esta pregunta no se trata de la habilidad de las pruebas, sino de otros aspectos: respeto, estatus social, amistad.

Ya hay una buena discusión sobre esto aquí en Quora: ¿por qué las personas de control de calidad no reciben ningún respeto?


En cuanto a la habilidad, creo que actualmente . Las pruebas de software son menos hábiles que el desarrollo de software por varias razones. Algunos pensaron sobre el tema:

  • No hay suficiente conocimiento sobre las pruebas => no hay una única forma correcta de realizar las pruebas: todos están desarrollando su propio enfoque para las pruebas
  • No hay una universidad que estudie las pruebas de software, como las hay con el desarrollo de software => aún no es tan maduro para ser estudiado en las universidades
  • El punto de entrada es realmente bajo => involucra una gran cantidad de personas poco calificadas en la profesión, y más importante: muchas de estas personas no están dispuestas a aprender
  • No es una parte obligatoria del proceso de desarrollo (es de esperar que esto cambie en el futuro) => es más difícil mostrar el valor de las pruebas para todos

¡Querido lector!

Probablemente se esté preguntando por qué les muestro a los ganadores del Sr. / Sra. Universo si la pregunta era “¿Las pruebas de software son menos hábiles que el desarrollo de software?”

He aquí por qué: no importa cómo te veas, tienes exactamente los mismos músculos en tu cuerpo . Pero, probablemente, los suyos no están tan desarrollados como los de ellos.

La prueba es un conjunto de habilidades. La programación es un conjunto de habilidades. En gran medida se superponen.

Si su trabajo no lo desafía a ejercer sus habilidades como lo hace el trabajo de los programadores, entonces obviamente está haciendo un trabajo menos hábil.

Le doy crédito a esta analogía de los músculos con Gerald Weinberg. Bonificación: las pruebas son más difíciles que el desarrollo con Gerald Weinberg – Podcast de Test Talks con Joe Colantonio

***


Fuente de la imagen: NAC Ms. & Mr. Universe 2014 en Hamburgo, destacados

La prueba de software es una parte muy importante en el desarrollo de software, ya que hoy en día todos se obsesionan con la calidad y los estándares en el producto de software, la búsqueda de errores es divertida ya que tiene la oportunidad de burlarse de los desarrolladores.

Piense de esta manera que usted es el maestro que corrige los errores de sus alumnos (desarrolladores) y los mejora en su trabajo.

No es un trabajo menor que el desarrollo, ya que probarlo da confianza a todos de que lo que hemos desarrollado funciona correctamente en todas las circunstancias.

Para hacerlo simple, déjame decirte algo.

El principio de las pruebas es “Pruebas exhaustivas”, es decir, probar todo.

Hay una diferencia entre un desarrollador y un probador.

Los desarrolladores escriben scripts / códigos para desarrollar una aplicación.

Los ingenieros de prueba escriben scripts / códigos para probar una aplicación.

Ambos son igualmente desafiantes. Por supuesto, los desarrolladores tienen que pensar un poco más lógico, pero se supone que los probadores juegan con la lógica que pensaban, por qué porque para descubrir defectos. Cuanto más exhaustivamente haga, más defectos encontrará, y finalmente obtendrá un producto de calidad.

No subestimes lo que estás haciendo. Simplemente juegue con la aplicación que prueba y vea lo interesante que es.

¡Gracias y todo lo mejor! 🙂

Simplemente ejecutar scripts de prueba no es tan hábil como el desarrollo de software. Pero no debe ejecutar scripts de prueba, debe tener equipos de prueba automatizados que los ejecuten por usted.

Diseñar scripts de prueba es tan hábil como diseñar programas. Es una habilidad diferente, pero que requiere tanto conocimiento y capacidad técnica.

La compañía para la que trabajo tuvo una “experiencia cercana a la muerte” hace unos años, casi nos vamos a la quiebra. Una parte clave de nuestra recuperación fue tomarnos las pruebas en serio, de modo que nuestros clientes comenzaron a confiar en nuestros productos como caballos de batalla confiables que no se escapan ocasionalmente de grandes artilugios. Contratamos probadores capaces, les dimos respeto y autoridad, y configuramos mucha automatización de pruebas.

Los probadores no deben ejecutar scripts de prueba manualmente después del desarrollo. Deben ejecutarse automáticamente y con frecuencia. Los probadores deberían considerar la cobertura de la prueba, probar eventos de baja ocurrencia, etc. Si no hay un camino claro para hacerlo y para estudiar cómo crear mejores pruebas, se está desperdiciando su tiempo.

La habilidad depende de la persona, no del trabajo.

Trabajé con desarrolladores que solo podían escribir código y no parecía tener mucha capacidad de razonamiento más allá de completar los espacios en blanco, y trabajé con desarrolladores que pudieron producir sistemas completos basados ​​en el comentario desprevenido de alguien. Del mismo modo, he trabajado con personas de control de calidad cuyos informes de errores me dijeron “esta función está rota” y he trabajado con algunos que han proporcionado casos de prueba perfectos, tenían teorías sólidas sobre por qué las cosas estaban rotas y tenía excelentes sugerencias sobre cómo podría evitar errores del usuario; Calculo que un colega me ayudó a completar un cincuenta por ciento más en el proyecto que compartimos.

La mayoría de los trabajos son lo que usted hace de ellos, y simplemente sentarse y reportar los resultados de otra persona a la gerencia no está haciendo mucho de eso.

Eso no quiere decir que las pruebas sean divertidas o apreciadas. Al igual que la programación, se necesita un tipo especial de persona para poder probar el software día tras día durante años. Y para eso están las pasantías, para averiguar qué tipo de trabajos estarías dispuesto a hacer una carrera.

No, las pruebas no son menos hábiles que el desarrollo.

Yo diría que es más hábil: un buen probador tiene que ser más conocedor del entorno en el que se ejecuta el software, coherente y diligente para encontrar errores y comunicar las circunstancias precisas en las que fueron encontrados y poder pensar fuera de la caja para darse cuenta formas de desafiar el código.

Ser un probador no significa que no se ensuciará la codificación. Puede que tenga que codificar sus propias pruebas o codificar otras herramientas para ejercer el código. Es probable que su código siga vivo, y que cambie y evolucione a medida que el código que prueba cambia y evoluciona, no es diferente del código que prueba.

Los probadores también tienen que tener juicio. Rara vez es posible probar cada línea de código en cada entorno o situación posible. Se necesita juicio al decidir qué probar y cómo.

Tal vez es una generalización injustificada, pero creo que los tipos de personalidad de un buen probador y un buen codificador son ligeramente diferentes. Los buenos evaluadores son más exhaustivos y sistemáticos que los buenos programadores. Tal vez las pruebas no sean para usted, pero tal vez sea su empresa, reunir un buen equipo multidisciplinario es difícil y garantizar que trabajen en equipo es más difícil.

Dependerá de cómo elija medir hábilmente. Las habilidades de alguien como Alex Stepanov (diseñador de la Biblioteca de plantillas estándar de C ++) son mucho más raras que las habilidades (relacionadas con pruebas de SW) de cualquier probador de software. Pero los buenos probadores de software tienen habilidades más excepcionales que los desarrolladores de software promedio. Recuerde que los buenos probadores de software automatizan tanto como sea posible, y eso implica el desarrollo de software a menudo desafiante.

Odio responder una pregunta con otra, pero ¿Sherlock Holmes era menos hábil que los tipos que cometieron los crímenes que investigó? 😉

Entonces, en ambos campos tienes niveles de grados de habilidad, así que no es a qué área te vas a dedicar, sino qué tan bueno quieres ser en un campo específico.

En mi humilde opinión, crear un conjunto de conjuntos de prueba para detectar errores críticos es tan importante que escribir el código en sí.

Buenas respuestas sobre la pregunta hábil.

Disfruté probando más que el desarrollo porque es una forma diferente de pensar. Desarrollé varias herramientas de prueba, algunas de las cuales todavía están en uso y han pasado muchos años.

La pregunta más importante es cuánto valoran las personas para las que trabaja y cuánto le gusta hacerlo. Le he dicho a la gente qué le pasa a su software durante más de 30 años. Esa es una experiencia interesante en sí misma, pero debes querer hacerlo y encontrar formas de hacerlo funcionar. Las pequeñas empresas son a veces los mejores y más fáciles lugares para que las personas para las que valora sean valoradas.

Y SÍ, AUTOMATIZAR todo.

Las mejores personas de control de calidad con las que he trabajado eran muy hábiles. Es quizás una habilidad infravalorada , pero es ortogonal en lugar de mayor o menor que la habilidad requerida para desarrollar software.

¿Has pensado en desarrollar pruebas automatizadas para la aplicación en la que estás trabajando? Según los detalles proporcionados en la descripción, parece que está ejecutando scripts de prueba de aceptación manual (podría estar equivocado). Intentar construir un conjunto de pruebas de regresión que evite parte del trabajo repetitivo sería una gran idea y le daría cierta exposición al desarrollo de software real. ¿Por qué no buscar en la integración continua e intentar configurar algo para su proyecto?

More Interesting

¿Contratarías un campista de Free Code Camp?

¿Qué es una API (interfaz de programación de aplicaciones) y cómo creo una?

Si los requisitos del cliente cambian continuamente como probador, ¿cómo va a gestionar la situación?

¿Debo comprar una MacBook o una computadora portátil con Windows como desarrollador de software intermedio?

Cómo elegir entre un puesto de gestión de software o desarrollador

¿Qué es un acoplador? ¿Cómo es importante para las personas de pruebas de software?

¿Cuál es el problema más importante que su empresa está tratando de resolver para avanzar hacia una metodología de desarrollo de software "ágil"?

¿Cuál es la mejor manera de enviar datos en tiempo real a una aplicación móvil desde un servidor?

¿Qué se siente al especializarse en ingeniería de software?

¿Cuál sería el mejor enfoque para hacer una plataforma de descarga OTA para teléfonos móviles?

Tengo 26 años con un título en informática trabajando como Consultor ERP en una pequeña empresa de software durante 1 año. ¿Qué educación / certificación adicional me dará ventaja?

¿Los desarrolladores profesionales usan un montón de bibliotecas diferentes en una aplicación?

¿Qué pasaría si se requiere que la ingeniería de software tenga acreditación como los campos de ingeniería tradicionales?

¿Qué deben saber todos los ingenieros de software integrados?

¿Crees que es mejor desarrollar una aplicación web o una aplicación nativa de iOS y Android para la primera versión de un producto?