Actualmente estoy trabajando en un proyecto bastante grande, y he usado JUnit y EasyMock para unir bastante ampliamente la funcionalidad de prueba. Ahora estoy interesado en qué otros tipos de pruebas debería preocuparme. Como desarrollador, ¿es mi responsabilidad preocuparme por cosas como pruebas funcionales o de regresión? ¿Hay una buena manera de integrarlos de manera útil en herramientas como Maven / Ant / Gradle? ¿Son estos más adecuados para un Tester o BA? ¿Hay otros tipos útiles de pruebas que me faltan?
35
Respuestas:
Es su responsabilidad esforzarse por entregar un código libre de defectos. Debe escribir, ayudar a escribir o asegurarse de que las pruebas se escriban o realicen para darle confianza en el código que está entregando.
Nota: no digo que deba entregar un código sin defectos. Por el contrario, debe intentar escribir el mejor código que pueda para los requisitos que se le dieron. Parte de poder hacer eso significa que el código debe ser probado.
Si eso significa que usted es personalmente responsable de las pruebas funcionales y de regresión, depende principalmente de cómo está organizada su empresa. Todos los programadores más calificados que conozco no se preguntan "¿es mi responsabilidad escribir pruebas de tipo X?". En cambio, se preguntan "¿qué debo hacer para asegurarme de que mi código se pruebe correctamente?". La respuesta podría ser escribir pruebas unitarias, o agregar pruebas a la regresión, o podría significar hablar con un profesional de control de calidad y ayudarlo a comprender qué pruebas deben escribirse. En todos los casos, sin embargo, significa que se preocupan lo suficiente por el código que están escribiendo para asegurarse de que se pruebe correctamente.
En pocas palabras: debe ser responsable de entregar un código de alta calidad. Si eso significa que necesita escribir algunas pruebas funcionales o de regresión, hágalo.
fuente
Esto podría ayudarte:
Q1 están escritos por los desarrolladores.
Q2 son automatizados por los desarrolladores y escritos en colaboración con el negocio y / o evaluadores.
fuente
Hay pruebas de aceptación para las que recomendaría marcos de estilo BDD que usan el lenguaje Gherkin : JBehave (Java), Cucumber (Ruby), Behat (PHP), etc. Este tipo de prueba tiene algunas ventajas sobre las pruebas unitarias:
fuente
Las pruebas funcionales se pueden automatizar al igual que las pruebas unitarias, y son muy útiles para probar cómo los diferentes componentes de su proyecto trabajan juntos y qué tan bien su sistema refleja las reglas de negocio.
Además, esta prueba automatizada sirve como un conjunto de pruebas de regresión y aceptación para cualquier cambio importante (o menor) que tenga que hacer al software (corrección de errores, refactorización, cambio comercial, nueva funcionalidad, etc.). Esto les da a los desarrolladores mucha más confianza para hacerlo.
Hay varios marcos para este tipo de pruebas, estamos usando fitnesse con muy buenos resultados. Tiene una biblioteca muy buena para probar páginas web (la usamos para probar nuestra aplicación web y nuestros servicios web) y se integra muy bien con Maven y Jenkins .
También solíamos hacer "pruebas funcionales cruzadas", entre desarrolladores, pero este tipo de pruebas no es "repetible", por lo que su utilidad es limitada ...
fuente
Como desarrollador, me considero responsable de las pruebas unitarias de todo mi código y garantizo lo mejor de mis posibilidades que no tiene ningún defecto. Es por eso que tenemos tantas herramientas a nuestra disposición, como burlas. El objetivo de crear objetos burlones en sus pruebas es exactamente tratar de aislar su código del mundo "exterior" y garantizar que funcione bien y, si algo falla, "no es su culpa".
Dicho esto, a pesar de que no es tu culpa y que tu código funciona como debería, eso no significa que no puedas ayudar en el resto de las pruebas. Creo que también es su responsabilidad ayudar e integrar su trabajo en el trabajo realizado por otros. Los equipos de desarrollo de TI deben trabajar siempre como una máquina bien engrasada, trabajando junto con otros departamentos (como QA) como un equipo más grande para proporcionar software confiable.
Pero ese es el trabajo de un equipo, no solo tuyo.
fuente
Obviamente pruebas de integración ; son más importantes y más difíciles de escribir que las pruebas unitarias. Es como construir una casa; Con las pruebas unitarias solo se asegura el hecho de que los ladrillos son sólidos y resisten la presión, temperatura, humedad y otras condiciones. Pero no tiene idea de cómo se ve y se comporta la casa con los ladrillos juntos.
El problema con los proyectos grandes, especialmente los Java que residen en un contenedor es que las pruebas de integración son difíciles. Por lo tanto, para facilitar las pruebas de integración del sistema en grandes proyectos, se necesita un marco de prueba, hecho especialmente para el proyecto, que es el trabajo del desarrollador para codificarlo. Recientemente se han realizado grandes mejoras en esta área y plataformas como Arquillian simplifican en gran medida la redacción de un marco de prueba (o incluso lo sustituye).
fuente
En el mundo real, usted es tan responsable como su equipo / jefe lo responsabiliza. Si le pagan o contratan para trabajar sin parar para encontrar todos los rincones y saltar al capricho de la interpretación de su jefe (o peor comercialización) de errores de lógica de negocios, entonces, por todos los medios, usted es responsable de todos.
En otras palabras, haga lo que requiera el alcance que se le haya otorgado. Es un buen extra agregar algo de sentido común o ver a otros usar el producto que está construyendo para tener una idea de los casos de uso y posibles problemas para solucionar, pero mencione esto a su equipo o jefe antes de "arreglarlo". Esto incluye las herramientas de su elección. Todos sus esfuerzos deberían ser algo con lo que todos estén de acuerdo.
Si su pregunta es útil para el seguimiento de errores, me gusta bugzilla, google docs, zendesk o basecamp en términos de sistemas de comunicación.
fuente
No creo que esto ya haya sido cubierto, perdón si me lo perdí.
Un problema es el uso eficiente del tiempo de los desarrolladores.
Los desarrolladores a menudo carecen de las habilidades para ser buenos en ciertos tipos de pruebas. En parte, esto es simplemente natural. Es la misma razón por la cual los autores tienen editores. Es muy difícil ver las deficiencias en algo si estás demasiado cerca de eso. Pero también se trata de diferentes conjuntos de habilidades y diferentes especialidades.
Siendo ese el caso, un desarrollador que pasa tiempo probando es pobre en costo: términos de beneficios. Ese desarrollador sería más productivo haciendo otras cosas, y un probador especializado sería más productivo haciendo las pruebas.
Por supuesto, está haciendo varias suposiciones que no son necesariamente válidas. En una empresa pequeña, por ejemplo, puede que no tenga sentido contratar a personas especializadas en pruebas. Aunque puede tener más sentido emplear personal de soporte adicional y hacer que hagan algunas pruebas, o al menos hacer que las personas prueben el código que no escribieron ellos mismos.
fuente
Creo que es nuestra responsabilidad (también del desarrollador) abarcar todos los escenarios de prueba posibles antes de que se lance para QA. El propósito de QA es validar el software. Además, martillar su propio código para detectar errores siempre lo hará verse bien cuando llegue el momento del control de calidad.
fuente
Quién mejor que un desarrollador para saber qué casos de prueba son los más relevantes. El desarrollador debe ser responsable de hacer todas las pruebas unitarias, donde sea posible, el desarrollador debe ayudar a escribir y ejecutar los scripts de prueba. Dado que esto rara vez es posible en proyectos grandes, se debe dar tiempo al desarrollador para que revise todos los casos de prueba. Además, el desarrollador debe tener conocimiento y utilizar la amplia variedad de herramientas de prueba automatizadas disponibles.
En mi carrera de desarrollo, encuentro que los proyectos terminan con mejores resultados donde hay una estrecha integración entre los equipos de desarrollo y los equipos de prueba.
al menos un miembro de cada equipo debe participar en las otras reuniones de planificación e implementación también.
fuente