Qual é o sentido da preparação?


18

Eu pensei que tinha resolvido isso, mas depois de ler Entrega Contínua (livro excelente), estou um pouco confuso. Eles falam sobre ter servidores para:

  • desenvolvimento
  • várias formas de testes automatizados
  • teste de aceitação do usuário (UAT) - ou seja, sentar-se com o cliente e demonstrá-lo a ele e deixá-lo fazer testes exploratórios. Os testadores internos também podem usar essa configuração para testes exploratórios.
  • encenação
  • Produção.

Eu sempre pensei em organizar como fornecendo a função UAT, mas eles parecem ter como um nível separado. Portanto, nesse esquema, que função os servidores de teste forneceriam?


10
Não posso dizer que concordo com essa metodologia. O UAT sempre deve ser realizado com as especificações mais próximas possível do sistema ativo (ou seja, estadiamento). Não posso contar o número de vezes que fizemos o UAT e todos se queixaram de problemas de velocidade, aos quais temos que explicar mil vezes que "O sistema ativo será mais rápido". E então, quando o sistema ativo não é mais rápido, por causa de um bug no código ou de uma consulta SQL, você precisa comer suas próprias palavras.
Mark Henderson

UAT = Teste de aceitação do usuário, certo?
Martin Thoma 15/05

Respostas:


13

A preparação seria a instalação de todos os sistemas de produtos, mas ainda não os será usado. Quando eles entram em uso seria "produção". Você deve colocar tudo no lugar que será usado, testar e depois pressionar o interruptor.

O UAT geralmente usa um ambiente de "teste" significativamente diferente do hardware / software / configuração que será usado na produção.

Por exemplo, onde trabalho, os clientes testam tudo em um ambiente de VM em execução em nossos servidores. Quando o sistema entra em operação, ele estará executando no hardware, nas instalações, provavelmente integrando-se aos sistemas existentes; não terá absolutamente nada a ver com nossos servidores ou ambiente de teste (exceto que o código e algumas configurações foram copiadas a partir daí ...)


Geralmente, mais testes ocorrem no servidor de temporariedade, não apenas no UAT - antes de entrar em produção.
jftuga

3
@jftuga, ver última frase do primeiro parágrafo ...
Chris S

@ Chris S: Se bem entendi, não existe um "servidor intermediário", apenas um servidor de produção que está fora do pool, que atualmente não atende aos usuários finais. Isso faz sentido e é uma metodologia que eu sigo, mas não chamo esses servidores de "servidores intermediários", apenas servidores de produção (que não estão no pool). Como em todos os lugares em que trabalhei que usa servidores de armazenamento temporário os têm como servidores separados, não acho que sua descrição de um servidor de armazenamento temporário seja o uso padrão desse termo. Uma boa ideia, mas não o que normalmente significa "servidor de teste" (na minha experiência, de qualquer maneira).
Iconoclast

11
@Brandon Na sua experiência, o que é um "Servidor de armazenamento temporário"? Isso pode ser uma diferença regional, como "devolver" um servidor.
Chris S

Parece-me variar de acordo com a organização. Eu já o vi usado como um servidor UAT, como um servidor para desenvolvedores colocar o aplicativo em um ambiente supostamente idêntico à produção e, provavelmente, outras coisas. (Pessoalmente, acho que a única boa estratégia é usar um servidor de produção real para preparação). À medida que diferentes organizações desenvolvem sua própria cultura, acho que também desenvolvem seu próprio léxico e, portanto, palavras que devem ter um significado padrão em todo o setor infelizmente não.
Iconoclast

17

Trabalho na equipe de gerenciamento de lançamentos de uma empresa de internet muito grande. Usamos essencialmente o processo descrito acima e escolhemos esse processo de propósito. Em nossa metodologia, a preparação serve como um mecanismo de ramificação para um nível final de teste na produção.

Obviamente, você deseja fazer todos os testes antes de iniciar a produção, mas em um ambiente grande e complexo com muitos usuários, esse é um objetivo muito difícil de alcançar. Em particular, é praticamente impossível carregar adequadamente o software de teste no controle de qualidade. O teste funcional é muito mais fácil de automatizar do que o teste de carga. Quando você tem milhares de usuários acessando seus servidores, as coisas falham de maneira estranha e difícil de prever.

Então, aqui está o que fazemos:

  • Desenvolvimento
    • inclui integração contínua e testes automatizados
  • teste de liberação
    • meu grupo analisa o lançamento em si
    • revendo logs de instalação
    • reversão de teste
  • QA
    • Testes de aceitação do usuário

Esse é o ponto em que nos ramificamos entre preparação e produção. Usamos um modelo de trem para lançamentos, com um novo trem iniciando a cada poucas semanas. Até os trens numerados vão para os servidores intermediários (que estão em produção). Trens numerados ímpares não.

Entre os trens pares, os desenvolvedores têm a capacidade de enviar alterações individuais aos servidores de teste ( depois que essas alterações foram testadas pelo controle de qualidade, é claro). Isso permite que eles validem que seu software tenha o desempenho esperado em um ambiente de produção real. Geralmente, isso é reservado para os componentes que são considerados de maior risco; não levamos cada pedacinho para a preparação.

Então, todo mundo entende que, quando o próximo trem par for iniciado, ele eliminará o que está nos servidores de preparo e os colocará de volta na linha de base do trem. Os desenvolvedores garantem que as alterações entrem em ação ou decidem que ainda não estão prontos para uso geral. Nesse caso, essas alterações são apagadas nos servidores de teste.

Em resumo, a resposta curta (pelo menos para nós) é que é impossível testar completamente sistemas complexos no controle de qualidade. A preparação fornece uma maneira segura de realizar testes de produção limitados.

Em uma nota relacionada, aqui estão meus slides de uma apresentação que acabei de dar sobre como nosso processo de lançamento funciona.


5

A explicação mais simples para a preparação é testar seu processo de implantação e testar usando a fonte de dados real. Alguns sistemas combinam a preparação com seus ambientes de teste, mas, para sistemas de grande escala, o processo de implantação pode ser muito complexo ou podem ser etapas extras de teste necessárias depois que você se conecta à fonte de dados ao vivo / produção. Nesse caso, um ambiente de armazenamento temporário permite testar seu processo de implantação e verificar bugs de última hora usando dados dinâmicos e, depois que as coisas estiverem verificadas como funcionando, você poderá rapidamente mudar o ambiente do palco para o ambiente de produção.

Um exemplo disso seria o Windows Azure, que requer de 5 a 25 minutos para implantar uma nova versão, mas você pode implantar em um ambiente de preparação, executar testes e trocar instantaneamente os ambientes de produção e preparação .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.