Pregunta Pruebas unitarias de la vida real para pequeñas empresas y aplicaciones


En estas aplicaciones comerciales típicas, escritas por pequeñas compañías de software (incluso solo). ¿Realmente hay algún beneficio en las pruebas unitarias? (Estoy hablando de esas aplicaciones típicas hechas a medida, como una aplicación de facturación automatizada).

Eso sí: estoy sin cuestionar los beneficios de las pruebas unitarias (código limpio, mejorar la capacidad de refactorización, etc.) pero estoy cuestionando el ROI para pequeñas aplicaciones de software. De acuerdo, ganará tiempo persiguiendo errores, etc., pero no creo que gane el tiempo suficiente para hacer frente al aumento de tiempo en el desarrollo de las pruebas.

Por favor, convenzanme de lo contrario, ya que puedo ver el beneficio en él, pero por ahora no es para pequeñas aplicaciones de software / compañías.

PD: ¿Ustedes conocen algún ejemplo de pruebas de unidades reales, como está escrito en aplicaciones comerciales típicas? (facturación, crm etc.)


9
2017-09-15 14:05


origen


Respuestas:


Así es como lo veo pagando por aplicaciones pequeñas:

  • Sus pruebas son una forma de documentación sobre cómo está su aplicación se supone que debe funcionar Hace la vida más fácil en ti cuando dejas la aplicación solo por un tiempo o el próximo chico.
  • Sus pruebas son una buena cobertura cuando solo necesito hacer ese pequeño cambio que sabes que no romperá nada. Sus pruebas le permitirán saber rápidamente.
  • Muchas veces en aplicaciones pequeñas, la unidad las pruebas le ahorran tiempo al probar la interfaz de usuario de la aplicación. AKA - Cuantas veces tienes que desconectar la aplicación para probar que la pantalla de entrada toma el corregir la información y escupe el Información correcta. Esto no reemplazar la prueba UI, pero guarda tiempo en las pruebas en general, incluso en pequeñas aplicaciones.
  • ¿Con qué frecuencia crecen las aplicaciones pequeñas? En mi experiencia con suficiente frecuencia Si tu no inicie las pruebas unitarias antes de tiempo más probabilidades de no hacerlo más tarde y / o tome más tiempo para cubrir el código que no fue hecho originalmente Ahora si tu podría recordar cómo ese código era se supone que debe funcionar en todos casos ..... hmmmm ...
  • Es una gran práctica para cuando ver absolutamente el valor de hacer se dice en un proyecto más grande y ojalá sea mejor para eso. :-)
  • Las pruebas son una gran manera de ayudar ves si tienes un defecto de diseño y / o una mejor forma de codificar alguna cosa. Las pruebas pueden / son una forma de diseño y realmente puede ayudar a uno a ver si algo es un poco torpe / torpe.

Revisa Juego de James Shore en youtube de hacer TDD en una aplicación muy pequeña. Solo verlo pasar y verlo y escucharlo realmente ayuda a mostrar cómo TDD y las pruebas unitarias realmente pueden ser beneficiosas incluso en aplicaciones pequeñas.


9
2017-09-15 14:17



Veamos,

  1. Si su pequeña aplicación se utiliza en una parte muy crítica de la pila de su cliente, entonces es muy importante que obtenga un código que funcione perfectamente.
  2. Si esa pequeña aplicación se usa para equilibrar sus cuentas por cobrar, apuesto a que quieren saber con certeza que las fórmulas utilizadas son correctas. Ningún negocio quiere repartir regalos o "perder" dinero.
  3. Si su aplicación expone una API para que pueda expandirse y asimilarse en otra aplicación, querrá pruebas de unidad para verificar que lo hizo bien, su ingeniero lo está atornillando. (Oh sí, por una pequeña pieza de código de 1000 líneas que realmente me salvó el trasero).
  4. Si su pequeña aplicación pasará a otra persona para mantenerla. Ellos te lo agradecerán.
  5. Si obtienes alguna funcionalidad que quisieras usar en otra parte de una aplicación más grande, las pruebas pregeneradas de la unidad ahorrarán tiempo y dolor de cabeza. Imagínese un pequeño error que no afecta mucho a su pequeña aplicación al ingresar a una aplicación más grande donde podría causar un daño sustancial.

En resumen, hay una gran cantidad de casos de uso en los que pude ver que las pruebas unitarias son rentables incluso para una aplicación pequeña, no trival. Mira el video de klabranche vinculado allí. Excelente.


6
2017-09-15 14:10



Las pruebas unitarias y TDD te hacen ir más rápido. Una vez que aprende a hacerlo, puede comenzar un proyecto más rápidamente. Esto asume que tu definición de "hecho" no es "unir algo y enviarlo". Done debe incluir pruebas, soporte, nuevas funciones / mejoras, etc.

El mundo está lleno de pequeñas aplicaciones de consola VB6 y bases de datos de acceso que estaban destinadas a existir durante semanas o meses que ahora mantienen funcionando a las empresas y lo han estado haciendo durante años. Botas de aplicaciones y aplicaciones que "no volverás a tocar" son un mito. No tiene sentido comercial descartar ese trabajo y hacer una aplicación nueva y mejor. El gerente / PM va a ver una propuesta para escribir una nueva aplicación desde cero y decir: "¿No tenemos una aplicación que ya lo haga? Solo ajústela para que funcione también".

Y así es como nacen las aplicaciones internas de pesadilla. Estoy seguro de que has estado allí. Dudo que este sea tu primer rodeo.

Ahora, si esa aplicación tiene una cobertura de prueba alta (cobertura de características y casos extremos, no solo líneas cubiertas), está muy desacoplada (ya que es una condición previa para las pruebas), entonces es fácil de mantener y ampliar.



¿Por qué quiere racionalizar las buenas prácticas de ingeniería con biz-talk como ROI? Si siente dolor al escribir sus pruebas, o necesita más práctica, tiene un código mal diseñado que no se puede probar, o ambas cosas.

Una vez que esté acostumbrado a TDD, o simplemente a GDT (pruebas guilt-driven, también conocidas como pruebas después del código), es muy natural escribir una prueba y escribir un código que sea más comprobable. Esto produce una base de código más limpia que es más modular y desacoplada. Y tienes un alto nivel de confianza en el código que escribiste.

Y descubrirá que no se pierde ese depurador en absoluto. :)


3
2017-09-15 14:46



Si escribir pruebas es tan doloroso que sientes la necesidad de argumentar en contra, me pregunto qué tipo de dolor estás pasando y por qué, tal vez haya algo acerca de cómo pruebas que no es tan efectivo como podría ser. Cuando he sido responsable de construir incluso pequeños proyectos, las pruebas han sido de gran ayuda.

Antes de hacer pruebas unitarias, haría las cosas de esta manera:

1) escribe el código de alguna parte de la aplicación

2) improvisar un arnés de prueba personalizado (lo más probable es agregar algún método principal de vacío estático público a una clase)

3) arregla el código hasta que la prueba funcione, ejecutando manualmente la prueba entre arreglos

4) pasar al siguiente bit de código y eliminar o abandonar la prueba

Y eventualmente me sorprendería cuando las cosas se rompieran en el camino.

Así que escribí pruebas antes, simplemente eran cosas manuales crudas que no eran reutilizables y no tenían buena cobertura, y terminé tirándolas. Ahora la principal diferencia en lo que hago es escribir el código en bits más pequeños, y guardo las pruebas y puedo continuar ejecutándolas. Y hay muchas menos sorpresas. Para mí no es un obstáculo, es una mejora definitiva.


2
2017-09-15 14:29



No sé si mi punto te convencerá o no, pero aquí está.

  1. Practicar la prueba unitaria incluso en aplicaciones pequeñas hará que te sientas más cómodo para trabajar con ellas. A veces, es mejor que aprendas o practiques la codificación de aplicaciones pequeñas que proyectos más grandes;

  2. Un proyecto más pequeño o más grande, solo por una cuestión de reputación como desarrollador de calidad, la prueba de unidad de su código lo hará menos defectuoso, por no decir, en su mayoría, código impecable. Además, cualquier aplicación merece estar bien desarrollada;

  3. Tomando el hábito de probar la unidad cualquier proyecto que desarrolle se convertirá en un mejor programador;

  4. Veo TDD como una metodología de trabajo, y como tal, ¿por qué desarrollar con diferentes metodologías cuando el proyecto es más pequeño? Veo, personalmente, no veo ventajas. Utilice las mismas técnicas, enfoques y metodologías en proyectos más pequeños o más grandes, esto encenderá un poco de automaticismo para probar la unidad de cualquier parte de su código, y ya no tendrá que pensar en las pruebas para escribir para la cobertura del código, usted los escribirá por adelantado, lo que resultará en menos omisiones, ya que siempre hace su trabajo de la misma manera;

  5. En la situación en la que otro chico tiene que corregir o agregar una característica que es más compleja, se asegurará de que tenga que probar sus cosas cuando algo vaya mal, ya que las suyas serán probadas por adelantado. Entonces este tipo puede construir sobre una base sólida, es decir, su código de calidad;

  6. La adopción de una forma de desarrollo, como la prueba unitaria de todo lo que haces, pequeña o grande, es para mí como optimizar y factorizar mi código. Utilizando siempre una función que lo hace por mí. Creo un proyecto y llamo a la función para escribir las pruebas unitarias de mi proyecto. Eso es como comenzar un proyecto siempre de la misma manera. Esto crecerá más fácil y más fácil para usted.

Finalmente, no sé si lo convencí de mis puntos de vista, pero al menos espero que esto le brinde buenos puntos de reflexión para que pueda tomar su propia decisión con respecto a sus necesidades.

¡Que tengas un buen día!


1
2017-09-15 15:05



Pruebe estas simples preguntas:

  • ¿Cómo prueba su software? ¿A mano? ¿Guiones? Las pruebas unitarias hacen eso (parcialmente).

  • ¿Cuánto confías en ti y / o tus guiones?

  • ¿Cuánto tiempo pasas haciendo eso? ¿Un par de segundos? Apuesto más.

  • ¿Tiene alguien para discutir el diseño o los algoritmos? Las pruebas unitarias lo ayudan a diseñar, simplificar y refactorizar.

  • ¿Quién revisa tu código? Las pruebas lo harían revisar el código una y otra vez.

Parece casi como que en un proyecto pequeño tienes más razones para tener pruebas :-)


1
2017-09-15 19:28



La única aplicación "pequeña" que puedo pensar que estaría justificada sin tener pruebas de unidad es una aplicación de "Hola mundo". De lo contrario, incluso escribir una prueba unitaria para la aplicación más simple será beneficioso.


0
2017-09-15 14:14



Preguntas populares