Qual é a diferença entre os ambientes de teste e UAT?

9

Sei que devemos ter pelo menos três ambientes diferentes ao desenvolver uma solução:

  • Desenvolvimento : Os programadores são livres para alterar e enviar alterações a qualquer momento, a fim de testar rapidamente seu código e integrar-se a outras alterações, sem medo de quebrar nada - isso está conectado aos bancos de dados e serviços TEST;
  • UAT : deve ser tratado com reverência pelos desenvolvedores, pois deve conter uma cópia "o melhor possível" do ambiente de produção em relação ao hardware, com a diferença de que esse ambiente está conectado aos bancos de dados UAT com uma cópia editável dos dados de produção - é usado pela equipe de perguntas e respostas e pelos usuários para validar as alterações que serão direcionadas à produção
  • Produção : O negócio real.

Eu olhei para esta pergunta em Engenharia de software , e esta pergunta sobre ServerFault , e eles parecem diferir sobre o que é o significado do ambiente de teste. Além disso, a página da Wikipedia sobre o assunto afirma que:

O uso principal de um ambiente de temporariedade é testar todos os scripts e procedimentos de instalação / configuração / migração, antes de serem aplicados ao ambiente de produção. Isso garante que todas as atualizações principais e secundárias no ambiente de produção sejam concluídas de forma confiável, sem erros, em tempo mínimo.

Para mim, o armazenamento temporário é igual ao UAT, onde você deve testar os procedimentos de aplicativo e implantação antes de avançar para o mundo real. Portanto, empurramos o pacote com as alterações para o UAT da mesma maneira que empurramos para a produção, totalmente automatizados e com toda a cerimônia que deveríamos ter com o ambiente de produção.

Dito isto, qual é a diferença adequada entre um ambiente UAT e um ambiente de armazenamento temporário?

-

EDIT: Só para deixar claro, estou pensando em termos de um aplicativo da Web, seja um site da Internet ou um site da intranet. Nenhum aplicativo "forms" ou aplicativo móvel.

Machado
fonte
4
Quero que mais pessoas pesem, mas isso parece principalmente baseado em opiniões. No meu ambiente atual, Staging e UAT são diferentes. O UAT é um ambiente público ao vivo sincronizado com implantações de produção, mas com uma carga de dados diferente para permitir que os usuários brinquem com o software. Nós o referimos como um ambiente Sandbox para os usuários. A preparação é um local privado para testar as mudanças na implantação e na infraestrutura antes de executá-las na Produção e no UAT. Existem obrigações para com os clientes quanto à disponibilidade e uso do UAT, mas não da preparação. Outras empresas provavelmente serão diferentes.
Thomas Owens
@ThomasOwens é exatamente o seguinte: ambos os ambientes são diferentes e, para algumas pessoas, parece ser uma coisa e, para outras, significa outras. A pergunta sobre falha no servidor afirmou que você usa o armazenamento temporário apontando para os dados de produção on-line e apenas "alterna", o que eu acho que é uma abordagem interessante, mas é uma visão diferente do que você está dizendo.
Machado
2
O fato de ser uma coisa para algumas pessoas e outra para outras pessoas é o que torna isso principalmente baseado em opiniões - não há resposta. Ainda não puxei o gatilho para fechá-lo, caso esteja errado. É uma pergunta bem escrita, e pode haver uma definição padrão por aí. Agora, se as pessoas optarem por ignorar essa definição padrão e usar a sua própria é outra história.
Thomas Owens
@ThomasOwens, declaração justa. Se você não se importa, vamos mantê-lo aberto por alguns dias e, se surgir apenas respostas baseadas em opiniões, eu votaria de bom grado para encerrar com você. :)
Machado
@ThomasOwens concordou. Sinto que essa pergunta também é um pouco subjetiva no que as pessoas chamam de encenação. Nosso UAT e ambiente de armazenamento temporário são a "mesma coisa", mas isso ocorre porque temos muitos lançamentos; portanto, quando estamos prontos para o lançamento, assumimos o ambiente de armazenamento temporário e o preparamos para o UAT lançá-lo. Os desenvolvedores que estão trabalhando por conta própria ainda têm uma maneira de usar ramificações de recursos em nosso ambiente de palco, para que não os bloqueie.
agosto

Respostas:

9

A diferença são os dados.

Um ambiente UAT é configurado para "aceitação do usuário" de novas funcionalidades. Para testar essa funcionalidade, o controle de qualidade ou as partes interessadas pode configurar perfis de usuário de uma maneira específica para exercer recursos específicos ou configurar produtos ou configurações simulados para verificar todos eles.

Um ambiente de preparação é geralmente configurado com uma cópia dos dados de produção, às vezes anonimizados. Algumas empresas "atualizam" regularmente seu banco de dados temporário a partir de um instantâneo de produção. O foco principal é garantir que o aplicativo funcione na produção da mesma maneira que funcionou no UAT. Em vez de configurar os dados novamente, os testadores pesquisam no banco de dados perfis e produtos que correspondem a um conjunto essencial de casos de teste. Freqüentemente, os dados "reais" apresentam peculiaridades que dão origem a casos extremos inesperados que foram perdidos durante o UAT. Além disso, qualquer teste de migração de dados precisaria ocorrer no ambiente de preparação.

John Wu
fonte
1
| Environment | Software version  | Way of usage of software |
 ------------- ------------------- --------------------------
| UAT         | New               | Same as production       |
| Staging     | New or production | New for this version     |

A definição de uso é muito ampla aqui e pode incluir todos os tipos de coisas, desde algumas alterações na configuração feitas pelos usuários finais até os caros recursos de infraestrutura não disponíveis no ambiente UAT. É importante ressaltar que a versão do produto de software no teste pode ser nova ou atual, mas sempre uma que já passou na aceitação.

Em outras palavras:

  • O UAT existe para provar que a nova versão do produto de software funcionaria se usada da mesma maneira que a versão atual é usada.
  • O preparo existe para provar que a nova maneira de uso do produto de software com alguma versão aceita do produto de software funcionaria da mesma maneira que a versão atual do produto de software é usada agora.

Nota: como foi descrito na pergunta em si, existem diferentes entendimentos de "Ambiente de armazenamento temporário" e um usado em sua empresa / ambiente pode ser diferente.

Vlad
fonte
0

O uso desses diferentes ambientes depende realmente das suas necessidades. Pelo seu comentário de que "teste == UAT", parece muito como se você tivesse um aplicativo muito pequeno sem equipe de controle de qualidade e apenas alguns desenvolvedores.

Ambientes de aplicativos maiores podem ter um ambiente de teste de integração, bem como um ambiente de controle de qualidade, o primeiro onde os desenvolvedores executam seus testes de integração e o último onde a equipe de controle de qualidade executa seus testes. Pode haver um ambiente de treinamento que tenha dados de estoque restaurados antes de cada sessão de treinamento. O ambiente de preparação estaria sob controle da equipe de operações, para garantir que as implementações ocorram corretamente. O ambiente de teste de aceitação do usuário (UAT) seria usado pela equipe do cliente. Também pode haver um ambiente de instantâneo de produção para reproduzir problemas do cliente.

Meu objetivo é tomar cuidado com o ponto de vista único ao determinar os ambientes que você precisa.

BobDalgleish
fonte
Parece que você tem 3 ambientes de teste diferentes, com propósitos diferentes, mas ainda ambientes de teste: 1 focado em perguntas e respostas, 1 focado em desenvolvedores e um focado em equipe de operações. Mas todos eles ainda estão testando ambientes e vinculados a bancos de dados de teste, por exemplo. Isso está correto ou estou faltando alguma coisa?
Machado
Cada um deles estaria vinculado a seus próprios bancos de dados, sim.
precisa saber é o seguinte
-1

UAT significa " Teste de aceitação do usuário " e é o ambiente no qual o teste de aceitação do usuário é realizado. Observe a ênfase no usuário - seu teste de controle de qualidade é diferente, o UAT é uma chance para os usuários reais (ou pelo menos sua equipe de treinamento, vendas, equipe de suporte etc ...) experimentar novos recursos e avaliar o software antes de ser implantado no seus sistemas de produção.

O que isso significa exatamente dependerá de seus processos:

  • O UAT (o ambiente) pode estar "nivelado" com a produção e é essencialmente uma caixa de areia para os usuários experimentarem novos recursos.
  • O UAT (o ambiente) pode estar "à frente" da produção, para que novos recursos não sejam implementados na produção até que tenham sido avaliados. (Não gosto muito dessa abordagem, pois ela necessariamente significa que você tem um lead time mais longo).
  • Se você possui um sistema multilocatário, pode nem precisar de um ambiente UAT; em vez disso, pode optar por fazer com que os usuários avaliem novos recursos nos sistemas de produção, utilizando sinalizadores de recursos.

Em termos de Implantação Contínua / Entrega Contínua, o ambiente de temporariedade é usado para testar o software em um ambiente "semelhante à produção", pois é provável que os desenvolvedores trabalhem em um ambiente com diferenças significativas na produção (por exemplo, sem balanceamento de carga, menor conjunto de dados etc ...)

Justin
fonte