Si tuviera que comenzar un proceso de prueba en una empresa, ¿dónde comenzaría?

TL; Versión DR:

Examine lo que está en su lugar ahora. Tomar con calma. Trabaja un área a la vez. Cree confianza en su plan permitiendo que las personas lo vean funcionando. Esperar resistencia. La automatización no es mágica.

Cuando acabes. Empezar de nuevo. Las mejoras continuas son críticas.

Versión completa:

Por donde empiezas Primero hablemos de algunos supuestos. No lo menciona, pero supongo que están entregando código y arreglando errores que sus clientes mencionan. Incluso pueden estar agregando características y entregando nuevas versiones.

Comience mirando sus procesos existentes. Tienen que tenerlos. ¿Cómo saben qué características agregar? ¿Cómo solucionan los problemas que vienen de los clientes?

* La clave para poner en orden esta tienda serán los cambios ‘pequeños’ incrementales.

* No puedes resolver esto de la noche a la mañana. Va a ser trabajo. Entonces, piensa en los resultados finales para cada área que desea impactar y comienza con pequeños pasos que conducen hacia la meta.

Cada paso en el camino será TONELADAS de trabajo extra para USTED. Una vez que está funcionando, puede comenzar a mostrar el valor de la pequeña cantidad de trabajo adicional que otros tienen que hacer para reducir una gran cantidad de trabajo adicional que están haciendo actualmente.

  1. Seguimiento de problemas : tienen que tener alguna forma de obtener comentarios sobre cuándo los sistemas fallan en un cliente. (correo electrónico, llamada telefónica?)
    1. Comience a trabajar en una adición liviana como Bugzilla o Jira. Una ubicación centralizada para almacenar los problemas entrantes.
    2. Deberá comenzar a realizar el trabajo adicional para comenzar a compilar los problemas a medida que se presentan. Obtenga actualizaciones sobre su progreso a medida que se van trabajando.
    3. Finalmente, capacite a las personas para que usen el sistema y les muestre formas en que puede ahorrarles trabajo. (Problemas perdidos en el correo electrónico debido a vacaciones, o porque están sobrecargados, o múltiples hilos de correo electrónico para un solo problema).
  2. Pruebas de regresión : esto es más desafiante. Sin embargo, si ha trabajado diligentemente para implementar el Seguimiento de problemas y ha comenzado a que no solo los desarrolladores lo usen, sino también a sus clientes. Ahora está comenzando a acumular un conjunto de fallas de software, errores, problemas y muchas fallas de conocimiento del usuario.
    1. Revisar estos es el trabajo adicional que tiene para la parte 2. Debe comenzar a organizar los problemas que se están encontrando y cuándo, clasificarlos, clasificarlos en grupos. Es hora de comenzar a encontrar los patrones de los errores. Estos patrones le dicen cosas sobre la naturaleza rigurosa de la unidad, la integración y las pruebas funcionales que se están realizando.
    2. Usando el conocimiento adquirido durante el paso anterior, comenzará a identificar las áreas ‘problemáticas’ de su software, sistemas y personas.
    3. Tome las áreas que son más problemáticas, generan la mayor cantidad de reelaboración o la visibilidad más negativa con la base de clientes. Expanda las pruebas que cubren estas áreas. Divida la prueba en partes cada vez más pequeñas hasta que prueben las secciones de componentes más pequeñas y aún así proporcionen valor. Estas pruebas se convierten en el núcleo de su conjunto de regresión.
    4. Si recibe una notificación anticipada de la nueva funcionalidad, genere un conjunto completo de pruebas para ella, pero las primeras pruebas deberían ser las ‘pruebas de humo’. Conéctelo. ¿Chispea y humea? La idea es ejecutar algunas de las funciones básicas con los valores buenos más básicos conocidos. Estos proporcionan una garantía de que la nueva función está funcionando como se esperaba. Agregue estos al conjunto de regresión central cuando la nueva función se agregue a la base.
    5. La parte más larga y compleja de este paso es encontrar el tiempo para volver sobre el producto central y encontrar áreas que hayan estado funcionando de manera tan sólida que no tenga errores ni pruebas. Expandiendo la suite de Regresión con pruebas que cubren estas áreas.
  3. Pruebas unitarias : esencialmente, este es un problema del desarrollador. Puedes hablar con ellos todo lo que quieras, pero llevarlos a la “Prueba de Unidad” no será fácil. Los desarrolladores y el control de calidad no “piensan” en las cosas de la misma manera. Los desarrolladores están bajo presión para ‘hacerlo funcionar’. Están profundamente inmersos en el código y han concentrado sus pensamientos en el código con demasiada fuerza para pensar fuera de él y encontrar las ingeniosas formas en que los usuarios lo descifrarán.
    1. Lo mejor que puede hacer es compartir con los desarrolladores los tipos de problemas que se encontraron durante la creación de la suite de regresión, así como los errores que se encontraron durante el lanzamiento inicial de la producción.
    2. A veces, incluso podrá obtener una idea del nivel de calidad y las áreas de debilidad para desarrolladores específicos. (Nunca he encontrado la forma ‘correcta’ de contarles estas debilidades que no los dejaron enojados y a la defensiva. Desea trabajar juntos para una mejor solución. Quizás tenga una mejor manera con las personas y pueda resolverlo). Para mí, la solución era simplemente probar aquellas áreas que sabía que iban a fallar para un desarrollador en particular Inmediatamente cuando entregaron el código para probar. Dejándolo caer sobre ellos con una lista rápida de fallas. Con suerte, comenzarán a ver los mismos tipos de fallas que se informan y trabajarán para asegurarse de que esas áreas estén cubiertas antes de que devuelvan el código por tercera o cuarta vez. Eventualmente, esto será parte del hábito que desarrollan para sus pruebas unitarias.
    3. Además, proporcionar un plan de prueba de prueba y un desglose de escenario para lo que probará en las nuevas versiones al comienzo del ciclo puede ayudar a los desarrolladores a pensar sobre el tipo de prueba unitaria que deberían estar haciendo para evitar el retroceso inmediato. Algunas personas querían evitar este paso. ‘Guardar el secreto’ de dónde buscarán. No se sienta tentado a seguir de esta manera. Hágales saber dónde está hurgando. Permítales resolver los problemas antes de que entre en Control de calidad. Esto a menudo hará que los problemas de prueba de unidad más simples se resuelvan temprano y les dará a los evaluadores aún más tiempo para profundizar en las áreas más complejas con más detalle. Aquí es donde se esconden los errores reales.
  4. Automatización : he encontrado que los gerentes piensan que esto es una especie de bala de plata. Una solución mágica para evitar la necesidad de un equipo de prueba. Su valor real es que permite que las pruebas serviles, mundanas y redundantes se transfieran a un sistema y deja que los evaluadores trabajen en la Nueva Funcionalidad de una versión y en las áreas del código que no se han probado que podrían interactuar con el nuevas funciones
    1. El trabajo de base que establezca en el trabajo 1 y 2 y 3 comenzará en esta etapa a dar sus frutos. Desea comenzar de a poco con el conjunto de automatización que requerirá la menor cantidad de mantenimiento.
    2. La Suite de regresión son las pruebas que se ejecutarán con mayor frecuencia. (Cada versión). La Suite de regresión será el conjunto más estable de casos de prueba. (La funcionalidad existente generalmente sigue siendo la misma entre las versiones). La Suite de regresión también debería dividirse en los casos de prueba más pequeños posibles y ejercer la unidad más pequeña de funcionalidad e integración.
    3. Comience a automatizar la suite de regresión y, después de cada lanzamiento, también se deben agregar las pruebas de humo para la nueva funcionalidad.
    4. Si tiene un conjunto de pruebas que no forman parte de la funcionalidad principal, pero son áreas en las que encuentra problemas al principio del ciclo de prueba. Intente agregarlos a la suite de automatización.
  5. Integración / entrega continua : esto para mí es como pruebas unitarias, más relacionadas con el lado de los desarrolladores.
    1. La información que ha estado recopilando durante todo el proceso debería permitirle proporcionar la información necesaria sobre el personal de desarrollo existente y el ciclo para ayudarlos a ver un beneficio al implementar esta solución para ayudarlos a mejorar su eficiencia.
    2. Todo el trabajo anterior debería haber dado al equipo de prueba la capacidad de encontrar eficiencias en su flujo de trabajo para permitirles involucrarse mucho antes en el ciclo: recopilación de requisitos, revisiones de diseño, etc.
    3. La forma de ayudar a guiar esto sería ayudar a desarrollar un flujo más eficiente que permitiría a los desarrolladores volver a lo que hacen mejor. Desarrollo del sistema y la próxima característica. En lugar de “perder el tiempo” solucionando todos los problemas que el Control de Calidad sigue encontrando.

Si llegaste hasta aquí, felicidades . No has terminado.

Comience en la parte superior y comience a trabajar en todo, nuevamente.

El objetivo cada vez que reinicia es encontrar la siguiente capa de complejidad que está causando la mayor cantidad de dolor. Encuentre formas de aislarlos y controlarlos y, finalmente, incorporarlos a los conjuntos de pruebas existentes y, en última instancia, a las pruebas automatizadas.

Hay 2 formas de ver esto: Míralo desde el punto de vista de un ingeniero y míralo desde el punto de vista de un inversor. Le sugiero que primero vea esto desde el punto de vista de un inversor, antes de verlo desde el punto de vista de un ingeniero. Porque si los inversores sacan su dinero, no tienes nada. Además, pensar que el inversor le ofrece un plan más estratégico

Debe recordar que, en última instancia, en aplicaciones que no son de misión crítica, desde el punto de vista del inversor, la “garantía de calidad” es un ejercicio de ahorro de costos. Sí, sé que esto puede irritar a algunos puristas, y es una forma poco convencional de ver las cosas. Pero, desde el punto de vista de las personas que invierten en la empresa, QA está allí para ahorrarles dinero.

Considere una tienda que no realiza pruebas y libera código no probado al cliente. ¿Lo que pasa? Se encontraron muchos errores en la producción, que son difíciles de solucionar. Los clientes se enojan y se van. Dependiendo de cuál sea la compañía, el costo de adquirir un cliente puede ser mucho mayor que el costo de construir el producto. Estoy analizando los ingresos de mi puesta en marcha en la etapa de ideas y, a la larga, el costo de adquirir clientes supera con creces el costo de crear software. Si estoy desangrando clientes, tendré que gastar mucho más en ir y volver a adquirir nuevos clientes.

Solo para dar una línea de base, estoy planeando tener al menos 2 millones de usuarios y 10K proveedores en mi plataforma para 2020. Estoy proyectando gastar $ 5 millones en costos de I + D, y alrededor de $ 40 millones en ventas y marketing. Estos proyectos se basan en la suposición de que mi tasa de retención de clientes es del 75%. Si tengo una tasa de retención de clientes del 50% porque mi software tiene errores, mi S&M cuesta un globo de $ 60 millones. Es mucho más rentable para mí gastar $ 2 millones más en control de calidad durante la I + D.

A menos que las personas estén perdiendo vidas debido a errores en su software, debe mirar dónde está perdiendo dinero el inversor. Está garantizado que la empresa está gastando dinero debido a errores. Debe averiguar dónde están los puntos de sangrado más grandes y luego asignarles un valor en dólares. Ese es tu beneficio .

Ahora, es hora de ponerse el sombrero de su ingeniero. Mire los puntos de dolor superiores y luego descubra cómo puede obtener tantos puntos de dolor al costo más bajo a largo plazo. A veces, es posible que deba encontrar soluciones de tirita. Como sabe, cuando ahorra mucho dinero al inversor, el inversor podría estar dispuesto a darle una parte de eso para que pueda continuar mejorando las cosas.


Nuevamente, solo para reiterar, es fácil comenzar a mirar esto desde el punto de vista de un ingeniero e intentar arreglar todo. Sí, necesita requisitos comprobables. Sí, necesitas pruebas unitarias. Sí, necesita pruebas automatizadas funcionales y no funcionales. Sí, necesita una canalización de implementación automatizada. Sí, necesitas pruebas de usabilidad. Sí, necesita una estrecha interacción entre los BA, los evaluadores y los desarrolladores. Sí, necesita una mejor capacitación del cliente.

Como ingeniero, podrías crear una lista de deseos tácticos que tiene un millón de millas de largo. Y puede invertir en cientos de herramientas que lo ayudan a llegar allí. Todo tiene que hacerse. El problema es que está perdiendo dinero, necesita dinero para hacer todas estas cosas. No tienes el dinero porque estás perdiendo dinero. Oh, la ironía. Entonces, detenga el sangrado y luego obtendrá dinero para hacer las cosas bien.

Yo comenzaría por la gente. He trabajado en empresas que se centraron tanto en hacer que el proceso de prueba sea correcto y la gente se sintió desesperada, por lo que la adhesión al proceso fue falsa.

Si las cosas están mal es porque a la gente no le importaba. Es importante arreglar la cultura de las personas y ayudarlas a cuidar las cosas ayudándoles a ver cómo su propia vida mejora. No se trata solo de probadores, sino de todos en el proyecto. La parte más difícil es que las personas piensan que si arreglan el proceso de prueba: la calidad mejorará por sí misma y ese es el punto ciego que muchas personas tienen.

La calidad es un resultado de cuánto se preocupan las personas por los usuarios del producto. Por lo tanto, los comentarios de los clientes y usuarios son críticos para llevar el cambio a todos. Si los usuarios están contentos, los clientes están contentos, entonces no arreglen nada. Está funcionando como está. Simplemente no perturbe un sistema que es bueno solo porque cree que algo no está en el orden que cree que debería estar.

Una vez que las personas comienzan a preocuparse, pregunte a todos: ¿cuáles son las formas más eficientes de hacer lo que se está haciendo? Las formas más eficientes con las que se inventará la gente serán los procesos.

Identificaré primero las áreas de desglose comunes. Donde falla el código, donde la funcionalidad no se sirve correctamente. Luego prepararé un conjunto de pruebas de regresión manual para probar esas áreas. Una vez que las áreas con errores funcionan bien después de las correcciones, podemos decir que la aplicación general funciona sin problemas. A continuación, podemos preparar estrategias de prueba y planes de prueba elaborados, identificar qué áreas podemos automatizar, contratar recursos adecuados para la automatización, las pruebas manuales y de rendimiento y abordar todo el negocio de las pruebas de manera integral. Las pruebas de regresión sucederán en cada ciclo de lanzamiento.

Fui parte de un compromiso que estaba en la misma línea.

  1. El cliente tenía muy poca documentación sobre su arquitectura.
  2. Tenían casi cero procesos para el control de calidad.
  3. Ciclo de despliegue ad hoc.
  4. Solo 3 entornos de desarrollo, control de calidad y producción.

Querían que sugiriéramos procedimientos de implementación y despliegue de automatización de prueba en torno a esto.

Nuestro enfoque fue primero enumerar las preguntas al cliente para recopilar información, como los primeros 4 puntos, para comprender cuál es su posición a partir de ahora.

Luego, documentación sobre qué proceso debe implementarse para Dev, QA y Soporte y recomendaciones sobre plantillas de documentos que deben seguir para el proceso anterior.

Esto fue seguido por un POC para la herramienta de prueba de automatización para su capa de integración.

En general, de la nada a un proceso orientado paso a paso para una implementación controlada.

El análisis y POC tomó 4 semanas con 2 recursos.

Instalaría un servicio de integración continua automática como TravisCI e lo integraría en una tubería de implementación en algo como Heroku. En mi experiencia, las razones por las que las personas no prueban el código lo suficiente son porque se olvidan y no quieren ejecutar y depurar pruebas cada vez que realizan cambios. La configuración de un servicio automático que ejecutará pruebas por usted, y lo hará en cada solicitud de extracción, formará la base de un sistema de prueba sostenible.

More Interesting

Si tengo una idea única para un producto biomédico, ¿cuál es la mejor manera de contratar a un ingeniero para que desarrolle el producto por mí?

¿Qué pasos debe tomar una startup para incorporar? No tenemos el dinero para contratar a un abogado, pero tenemos personas que se unen a nuestro equipo y necesitamos redactar contratos. Además, queremos que todo el trabajo realizado y toda la propiedad intelectual producida pertenezca legalmente a nuestra empresa.

Cómo iniciar un negocio que puede generar grandes ganancias

¿Por qué tantos fundadores no técnicos tienen experiencia en banca o consultoría? ¿Qué tan importante es venir de este tipo de antecedentes?

¿Me puede recomendar un entrenador para el fundador / CEO de inicio en el área de la Bahía?

Quiero desarrollar un sitio web básico para noticias y entretenimiento o una revista electrónica. ¿Cómo empiezo, teniendo en cuenta que tengo conocimientos básicos de codificación?

¿Comenzar en grande en una startup es una configuración para el fracaso?

¿Se puede aplicar una startup a dos aceleradores?

¿Dónde empiezo a llevar un producto al mercado?

¿Qué salarios se les permite pagar a los fundadores de startups?

¿Las compañías como Yumist, food hopper y otras compañías similares que proporcionan alimentos caseros necesitan obtener una licencia para comenzar su negocio y qué?

Deseo pasar de PeopleSoft a una tecnología más nueva. ¿A qué tecnología / plataforma / paquete debo apuntar y cómo empiezo?

Dejé una startup respaldada por una empresa que cofundé con otras 2 personas después de ser jodida. Ahora estoy solicitando trabajo, pero mis entrevistadores me siguen preguntando por qué dejé mi trabajo en el inicio. ¿Qué debo decir para que no me vea mal?

Tengo una idea de aplicación que otros han confirmado como genial. Estoy bastante calificado para ejecutar. Mi instinto me dice que lo publique, obtenga comentarios y vea qué sucede. Pero también he leído que si no desea que le roben su idea, no debe presentarla en el Startup Weekend o similar. Pensamientos?

Me está costando descubrir exactamente cómo * no * vincular la compensación a los OKR. Estoy feliz de comenzar con un enfoque que no vincula los OKR con la compensación. Pero, ¿cómo sugiere medir la compensación variable (es decir, bonos trimestrales) si no es por OKR?