Quais os padrões que a sua equipa impor para uma implementação de código major-versão?

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

  •  22-08-2019
  •  | 
  •  

Pergunta

Estou curioso para saber que tipo de padrões de outras equipes certifique-se está no lugar antes navios de código (ou implanta) para fora da porta em grandes lançamentos.

Eu não estou procurando por respostas específicas para cada um, mas aqui está uma ideia do que eu estou tentando ter uma idéia de.

  • Para aplicativos baseados em servidor, você garantir o monitoramento está em vigor? Até que ponto ... só que ele responde a Ping, que pode bater todas as suas dependências em um dado momento, que a lógica que o aplicativo na verdade serviços é som (por exemplo, um serviço que calcula 2 + 2 realmente retorna "4 ")
  • Você precisa construir scripts automatizados antes do código é liberado? Significado, qualquer dev pode caminhar para uma nova caixa, arranco algo de controle de origem, e começar a desenvolver? coisas dadas como um sistema operacional e IDE, é claro.
  • Como cerca de scripts de implantação automatizados, para aplicativos baseados em servidor?
  • O nível de documentação que você precisa para um projeto a ser "feito?"
  • Você faz Dang certeza que você tem um plano de backup completa para todos os principais componentes do sistema, se é baseada em servidor?
  • Você fazer cumprir as normas de qualidade de código? Pense StyleCop para .NET ou complexidade ciclomática avaliações.
  • teste
  • Unit? testes de integração? teste de carga desempenho?
  • Você tem padrões de como o log de erro do aplicativo é tratado? Que tal notificação de erro?

Mais uma vez, não procurando uma punchlist linha por linha de respostas para qualquer coisa acima, necessariamente. Em suma, o não-codificante itens devem uma versão de código ter concluído antes de ser considerado oficialmente "feito" para sua equipe?

Foi útil?

Solução

O minima:

  1. testes unitários de trabalho
  2. testes de integração de trabalho
  3. Implantar ao ok fase de teste
  4. curta verificação manual em fase de teste

Melhor:

  1. testes unitários de trabalho
  2. checkstyle ok
  3. testes de integração de trabalho
  4. jmeter cobertura e teste passou
  5. Implantar ao ok fase de teste
  6. alguns testes manuais em fase de teste

finalmente implantar na fase de produção

Todos os testes unitários e de integração funcionam automaticamente, o melhor em um servidor de integração contínua como CruiseControl feito por ant ou maven . Ao desenvolver webservices, testando com SoapUI funciona bem.

Se um banco de dados utilizado, atualização automática é feito (com liquibase por exemplo) antes da implantação. Quando os serviços externos são usados, são necessários testes de configuração addidional, para garantir URLs são ok (pedido cabeça de aplicação, banco de dados de conexão, wsdl obter, ...). Ao desenvolver webpps, um HTML validação em algumas páginas vai ser útil. A verificação manual do layout (usar Browsershots por exemplo) seria útil.

(Todos os links de exemplo para o desenvolvimento Java)

E por último (mas não menos importante): são todos os testes de aceitação ainda passando? É o produto que o proprietário quer? Faça um comentário ao vivo com ele no sistema de teste antes de ir mais longe!

Outras dicas

Eu, principalmente, fazer o desenvolvimento web, então meus itens pode ser diferente da sua. Apenas fora do topo da minha cabeça ...

  • Certifique-se de todos os serviços web são up-to-date
  • Certifique-se de todos os bancos de dados scripts / modificações / migrações já são implantados no servidor de produção
  • Min todos os js e arquivos CSS.
  • Certifique-se de todos / unidade / integração funcional / testes Selenium estão passando (Temos como objectivo para a cobertura + teste de 95%, enquanto que estamos desenvolvendo, assim que estes são geralmente muito precisos na determinação de um problema)

Há mais, eu sei que é, mas eu não consigo pensar em nenhum agora.

Cada projeto é diferente, porém, como uma regra de ouro aqui são as coisas principais que eu tento ter feito antes de deixar o código sair para o selvagem.

Em nenhuma ordem particular:

1) A identificação de versão no lugar onde ele pode ser encontrado por um usuário mais tarde, este deve ser exclusivo para esta versão. (Muito tipicamente um "número da versão" associado na distribuível, as bibliotecas e executáveis, ou usuário visível a partir de uma "cerca" de diálogo. Poderia ser um número em um registro bem conhecido ou compensados ??em firmware)

2) Um instantâneo do código exato usado para produzir a liberação. (Um rótulo ou um ramo da liberação no sistema SCM é bom para isso)

3) todas as ferramentas necessárias para recriar a fonte devem ser anotados e arquivados (fonte da etapa 2 se torna de uso limitado sem este)

4) Um arquivo do lançamento real (uma cópia do instalador exata lançado, quem sabe em 7 anos suas ferramentas pode não ser capaz de construí-lo, mas agora pelo menos você tem o código-fonte e um instalável ao seu lado para fins de investigação).

5) Um conjunto de alterações documentadas entre esta versão ea anterior aka Release Notes (Eu gosto de usar o estilo de acrescentar à lista para que todas as alterações de versão estão disponíveis em um lugar por um usuário).

6) susceptível de libertação completa do ciclo de ensaio. Usando a carga criado distribuível e teste usando plano de teste completo / vetado para ter certeza funcionalidade principal estiver operacional, todos os novos recursos estão presentes e funcionar como desejado.

7) Defeito rastreamento mostra todos os itens pendentes são sinalizadas como a) b) fixo não um defeito c) diferidos.

Você pode polvilhar em muitos outros passos, dependendo do estilo de domínio ou de desenvolvimento, mas eu gostaria de afirmar que a maioria dos softwares "deve ser" executar as etapas acima cada lançamento. YMMV.

Divirta-se atacar o castelo.

  • Codestyle (automatizado)
  • testes automatizados (unit- & Integrationtests)
  • testes manuais (incluindo estágios de teste e beta)
  • Whitebox ferramenta de teste de penetração (automatizada)
  • Blackbox ferramenta de teste de penetração (automatizada)
  • Excepção Manual / Registro de monitoramento de teste / fase beta antes da implementação
  • capacidade de reverter para a versão anterior a qualquer momento
  • revisão de código e 'checkins ilegais'

Para Web / aplicativos internos de uma coisa, além das outras sugestões.

Certifique-se de envolver o ops equipe / implementação para que você não entregar software que requer mais servidores, então eles têm (não assuma as pessoas empurrando os requisitos já tem).

  • Analise a lista de verificação:. Verificação de que todos os novos recursos, solicitações de mudanças e correções de bugs planejadas para a versão ter sido acabado
  • Construir (na máquina de compilação) compila sem qualquer aviso nem de erro no modo de versão.
  • Todos os testes automatizados Unidade executado sem erros.
  • Todas as mensagens e imagens foram aprovados pela equipe de produto.
  • verificações de desempenho não são piores do que versão anterior.
  • O plano (manual) teste completo foi verificado pela equipe de teste sem erros.
    • A aplicação é testado em muitos cenários possíveis (OS diferente, motores de banco de dados, configurações e aplicativos de terceiros).
    • Todas as funcionalidades da aplicação são testados:. Muitas vezes nos aconteceu que uma mudança em um recurso quebrou outro pensou independentes, a merda acontece, por isso temos de minimizá-lo
    • A configuração ou implantação de obras, em todos os cenários também
    • A configuração é capaz de atualizar versões anteriores

Nós fizemos um grande lançamento recentemente, de modo que este ainda é bastante fresco em minha mente. Fazemos um aplicativo do Windows com uma interface gráfica para o qual nós liberamos um binário executável, por isso a minha lista é necessariamente vai ser substancialmente diferente do que para um lançamento web-only.

  1. Release Candidates sair para a equipe de teste. Eles precisam de pelo menos alguns dias para brincar com ele. Se encontrar quaisquer erros que consideramos show-rolhas, a liberação é abortada. Isso pressupõe que você tem uma equipe de testes. Nós só limpar um release candidate se pelo menos uma semana se passou desde a sua data de criação.

  2. Todos os testes automatizados tem de trabalho e passagem. testes automatizados é considerado um suplemento para os testadores ao vivo.

  3. Qualquer bug marcado como "bloqueadores" deve ser resolvido para a construção final.

  4. Material de Publicidade tem que estar pronto (no nosso caso, uma atualização de página da web e um boletim informativo e-mail). Os revendedores são alertados que uma liberação está chegando várias semanas de antecedência, para que possam preparar o seu material também. Esta maioria não é uma preocupação programador, mas fazemos de verificação reivindicações de marketing de precisão.

  5. Licenciamento tem de ser atualizado para refletir o que quer proteção contra cópia que estamos usando. Nossos versões beta e as versões de lançamento usar diferentes modelos de licenciamento, e essa mudança exige um esforço de programação.

  6. O acordo de instalação e licença tem que ser atualizado. Desde as versões beta têm um instalador, isso geralmente é apenas uma mudança de texto, mas ainda cai para os programadores para realmente atualizar o script de instalação.

  7. Qualquer referências à necessidade versão beta a ser removido a partir do próprio aplicativo. Perdemos alguns deles, embaraçosamente.

  8. arquivos de ajuda e manuais teve que ser trazido completamente up-to-date e revisar, uma vez que eram parte do pacote de lançamento.

  9. Se não houvesse erros que não poderiam ser fixos no tempo, teríamos pelo menos tentar mitigar os danos - por exemplo, detectar que tal e tal bug estava ocorrendo, e abortar a operação com um mensagem de erro de desculpas. Isso contribui enormemente para a estabilidade do produto percebida.

De longe, as dificuldades de um grande lançamento não estavam programando problemas, eles eram problemas administrativos / marketing. Muitas destas coisas necessárias programador atenção - ajudando com instaladores, à prova de ler a lista de recursos para se certificar de nenhum deles foi absurdo, à prova de leitura seções técnicas do manual, licenciamento atualizar, etc. A principal diferença técnica foi a mudança de bug de fixação para bug-atenuante.

  1. sem bugs visíveis? ok
  2. trabalho de teste de unidade? ok (alguns ignorado) ha bem ok
  3. configuração ya certeza. ok
  4. registro de erros? claro ! :-) nós precisamos disso ! para corrigir os erros!
  5. todos em cruisecontrol.net agradável.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top