¿Qué requisitos debe cumplir el equipo para una implementación de código de versión principal?

StackOverflow https://stackoverflow.com/questions/700833

  •  22-08-2019
  •  | 
  •  

Pregunta

Soy curioso en cuanto a qué tipo de normas de otros equipos Asegúrese de que esté en su lugar antes de naves de código (o despliega) por la puerta en las versiones principales.

No estoy en busca de respuestas específicas a cada uno, pero aquí está una idea de lo que estoy tratando de tener una idea de.

  • Para aplicaciones basadas en servidor, usted se asegura de monitoreo está en su lugar? ¿En qué medida ... sólo que responde a un ping, que puede golpear todas sus dependencias en un momento dado, que la lógica de que la aplicación de servicios efectivamente es sólida (por ejemplo, un servicio que calcula 2 + 2 en realidad devuelve "4 ")
  • ¿Se requiere scripts de construcción automatizados antes de liberar el código? Esto quiere decir que cualquier desarrollador puede caminar hacia una nueva caja, tirar de algo de control de código fuente, y comenzar a desarrollar? cosas dadas como un sistema operativo y el IDE, por supuesto.
  • ¿Qué hay de scripts de implementación automatizadas, para aplicaciones basadas en servidor?
  • ¿Qué nivel de documentación que necesita para hacer un proyecto para ser "hecho?"
  • Cómo se hace Dang asegurarse de que tiene un plan de copia de seguridad de pleno derecho para todos los principales componentes del sistema, si es basada en servidor?
  • ¿Se hace cumplir las normas de calidad de código? Piense StyleCop para las evaluaciones .NET o complejidad ciclomática.
  • Las pruebas unitarias? Pruebas de integración? pruebas de carga de rendimiento?
  • ¿Tiene estándares sobre cómo se maneja el registro de errores de la aplicación? ¿Qué hay de notificación de error?

Una vez más, no en busca de un punchlist línea por línea de respuestas a todo lo anterior, necesariamente. En resumen, lo que no codificante elementos de un código de liberación debe haber completado antes de que sea considerado oficialmente como "hecho" para su equipo?

¿Fue útil?

Solución

El mínimo:

  1. pruebas de unidad de trabajo
  2. pruebas de integración trabajar
  3. desplegar en el escenario de prueba bien
  4. breve comprobación manual en el escenario de prueba

Mejor:

  1. pruebas de unidad de trabajo
  2. Checkstyle bien
  3. pruebas de integración trabajar
  4. jmeter y la prueba de la cobertura pasado
  5. desplegar en el escenario de prueba bien
  6. algunas pruebas manuales en el escenario de prueba

Finalmente desplegar en el escenario de producción

Todas las pruebas unitarias y de integración en el trabajo de forma automática, el mejor en un servidor de integración continua como climatizador hecho por ant o experto. En el desarrollo de servicios web, las pruebas con soapUI funciona bien.

Si utiliza una base de datos, se realiza la actualización automática (con Liquibase por ejemplo) antes de la implementación. Cuando se utilizan servicios externos, se necesitan pruebas de configuración addidional, para asegurar URL son bien (solicitud de la cabeza de aplicación, base de datos de la conexión, WSDL conseguir, ...). En el desarrollo de webpps, un HTML validación en algunas páginas será muy útil. Una comprobación manual de la disposición (uso browsershots por ejemplo) serían útiles.

(Todos los enlaces de ejemplo para el desarrollo de Java)

Y por último (pero no menos importante): son todas las pruebas de aceptación sigue pasando? Es el producto de lo que quiere el dueño? Hacer un repaso a vivir con él en el sistema de prueba antes de ir más lejos!

Otros consejos

Yo sobre todo hacer el desarrollo web, por lo que mis artículos pueden ser diferentes de los suyos. Justo al lado de la parte superior de mi cabeza ...

  • Asegúrese de que todos los servicios web están al día
  • Asegúrese de que todas las bases de datos scripts / cambios / migraciones ya están desplegados en el servidor de producción
  • Min todos js y css.
  • Asegúrese de que todos / unidad de integración de pruebas funcionales de selenio / / están pasando (Nuestro objetivo es que el 95% + cobertura de la prueba, mientras que estamos desarrollando, por lo que estos suelen ser bastante precisa en la determinación de un problema)

Hay más, sé que es, pero no puedo pensar en ningún momento.

Todos y cada proyecto es diferente, sin embargo, como una regla de oro aquí son las cosas principales que trato de haber hecho antes de dejar que el código salen a la naturaleza.

En ningún orden en particular:

1) Una identificación de la versión en el lugar donde se puede encontrar por un usuario posterior, este debe ser único para esta versión. (Muy típicamente un "número de versión" asociado en el distribuibles, las bibliotecas y ejecutables, o usuario visible desde un cuadro de diálogo "sobre". Podría ser un número en un registro conocido o compensar en el firmware)

2) Una instantánea de la código exacto utilizado para producir la liberación. (Una etiqueta o una rama de la liberación en el sistema SCM es bueno para esto)

3) Todas las herramientas necesarias para recrear la fuente deben tenerse en cuenta y se archivan (fuente de la etapa 2 se hace de uso limitado sin este)

4) El archivo de la liberación real (una copia del instalador exacta en libertad, que sabe en 7 años sus herramientas pueden no ser capaces de construir, pero ahora por lo menos usted tiene el código fuente y un instalable a su lado con fines de investigación).

5) Un conjunto de cambios documentados entre esta versión y la anterior aka Notas (me gusta usar el estilo de añadir a la lista para que todos los cambios de versión están disponibles en un solo lugar para un usuario).

6) ciclo de ensayo de liberación Candidato completa. Usando la carga distribuible creado y prueba utilizando plan de prueba completo / examinados para asegurarse de la funcionalidad principal es operativo, todas las nuevas características están presentes y funcionando según lo previsto.

7) de seguimiento de defectos muestra todos los elementos sobresalientes se marcan como a) b fijo) no un defecto c) diferido.

Se puede espolvorear en muchos otros pasos, dependiendo del estilo de dominio o de desarrollo, pero me gustaría decir que la mayoría del software "debe" realizar los pasos anteriores cada lanzamiento. Tu caso es distinto.

Diviértase el asaltar del castillo.

  • Codestyle (automatizado)
  • Las pruebas automatizadas (partícipes y Integrationtests)
  • pruebas manuales (incluidas las fases de prueba y beta)
  • Whitebox herramienta de pruebas de penetración (automatizado)
  • herramienta de pruebas de penetración de la caja negra (automatizado)
  • Excepción Manual / monitoreo de la extracción en etapas de prueba / beta antes de lanzamiento
  • capacidad de volver a la versión anterior en cualquier momento
  • revisión de código y confirmaciones 'ilegales'

Para aplicaciones web / internos una cosa, además de las otras sugerencias.

Asegúrese de involucrar al equipo de operaciones / despliegue para que no entregar software que requiere más servidores luego tienen (no asuma las personas que empujan los requisitos ya tienen).

  • Revise la lista:. Compruebe que todas las nuevas características, solicitudes de cambio y corrección de errores previstas para la versión se han terminado
  • Construir (en construcción de la máquina) se compila sin ninguna advertencia ni error en modo de lanzamiento.
  • Todas las pruebas unitarias automatizadas han realizado sin errores.
  • Todos los mensajes y las imágenes han sido aprobados por el equipo de producto.
  • controles de rendimiento no son peores que la versión anterior.
  • El (manual) plan de pruebas completo ha sido revisado por el equipo de pruebas sin errores.
    • La aplicación se pone a prueba en muchos escenarios posibles (diferentes sistemas operativos, motores de bases de datos, configuraciones y aplicaciones de terceros).
    • Todas las características de la aplicación son probados:. Muchas veces nos pasó que un cambio en una característica rompió otra no relacionada pensó, mierda sucede, así que tenemos que minimizarlo
    • La configuración o implementación funciona en todos los escenarios también
    • La configuración es capaz de actualizar las versiones anteriores

Hemos hecho un gran lanzamiento hace poco tiempo, así que esto es todavía bastante fresco en mi mente. Hacemos una aplicación de Windows con una interfaz gráfica de usuario para el que liberamos un ejecutable binario, por lo que mi lista es necesariamente va a ser sustancialmente diferente de la de un comunicado sólo por Internet.

  1. versiones candidatas están con el equipo de pruebas. Se necesitan por lo menos unos días para jugar con él. Si encuentran cualquier error que consideramos show-tapones, la liberación se aborta. Esto supone que tiene un equipo de pruebas. Sólo nos despejamos una versión candidata si al menos una semana ha pasado desde su fecha de fabricación.

  2. Todas las pruebas automatizado tiene que trabajar y pasar. Las pruebas automatizadas se considera un complemento a los probadores en vivo.

  3. Cualquier error marcados como "bloqueadores" deben resolverse para la versión final.

  4. El material publicitario tiene que estar preparado (en nuestro caso, una actualización de página web y un boletín de correo electrónico). Los revendedores son alertados de que un lanzamiento está llegando varias semanas de antelación, para que puedan preparar su material también. Esto sobre todo no es una preocupación programador, pero sí comprobar reclamos de marketing de precisión.

  5. Licencias tiene que ser actualizado para reflejar lo que la protección contra copias que estamos usando. Nuestras versiones beta y las versiones de lanzamiento utilizan diferentes modelos de licencia, y este cambio requiere esfuerzo de programación.

  6. El instalador y el contrato de licencia tienen que ser actualizados. Dado que las versiones beta tienen un instalador, esto es por lo general sólo un cambio de texto, pero sigue siendo inferior a los programadores para actualizar realmente el script de instalación.

  7. Cualquier referencia a la versión beta necesitan ser retirado de la propia aplicación. Nos hemos perdido algunos de éstos, vergonzosamente.

  8. Los archivos de ayuda y manuales tuvieron que ser traídos por completo hasta a la fecha y corregir, ya que eran parte del paquete de la versión.

  9. Si había bichos que no pudieron ser resueltos en el tiempo, tendríamos al menos tratar de mitigar el daño - por ejemplo, detectar que tal y tal error se produce, y abortar la operación con una mensaje de error de disculpa. Esto contribuye enormemente a la estabilidad del producto percibido.

De lejos, las dificultades de un lanzamiento importante no fueron problemas de programación, que eran problemas / marketing Administración. Muchas de estas cosas requieren atención programador - ayudando con los instaladores, corrección de pruebas de la lista de características para asegurarse de que nada de eso era absurdo, corrección de pruebas de las secciones técnicas del manual, la actualización de licencias, etc. La diferencia técnica principal fue el cambio de corrección de errores a bug-atenuante.

  1. no hay errores visibles? Aceptar
  2. trabajo de prueba de unidad? ok (algunos ignorados) HA bien ok
  3. configuración ya seguro. Aceptar
  4. registro de errores? por supuesto ! :-) necesitamos esto ! para corregir los errores!
  5. todos en buen cruisecontrol.net.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top