Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a esta recomendação de lista de verificação de Excelência Operacional do Azure Well-Architected Framework:
| OE:09 | Melhore a qualidade da sua carga de trabalho adotando práticas de teste que estejam alinhadas com os objetivos do negócio e mantenham padrões de qualidade. |
|---|
Quando introduzir uma alteração na sua carga de trabalho, precisa de garantir que funciona como previsto e não introduz novos problemas. Os testes são a forma de avaliar essas mudanças. É uma prática essencial para manter a qualidade e aumentar a confiança na sua carga de trabalho.
Testes eficazes proporcionam uma carga de trabalho fiável e de alta qualidade. Previne que defeitos cheguem à produção, reduz os custos de retrabalho e atrasos, e mantém o seu trabalho alinhado com os objetivos do negócio ao longo de todo o ciclo de vida do desenvolvimento.
Este artigo apresenta estratégias para o ajudar a entregar uma carga de trabalho de alta qualidade através de práticas eficazes de testes. Serve como orientação fundamental para a orientação especializada em testes noutros pilares, como desempenho, fiabilidade e segurança.
Formalize a sua estratégia e plano de teste
A sua estratégia e planos de teste são artefactos essenciais. Fornecem um roteiro claro para os seus esforços de teste e garantem que todos trabalham para alcançar os mesmos objetivos de qualidade.
Defina a sua estratégia de teste
A sua estratégia de teste é um plano geral que orienta a sua abordagem geral de testes. Define os seus objetivos, âmbito, metodologias, ferramentas, funções e responsabilidades de teste. Ajuda-o a tomar decisões informadas sobre prioridades de testes, alocação de recursos e gestão de risco. Também capta a forma como comunica com as partes interessadas e reporta os resultados.
Uma estratégia de testes bem definida conquista o apoio das partes interessadas e garante que todos os membros da equipa cumprem padrões de qualidade consistentes. Fornece direção e estrutura, alinha os testes com os objetivos do negócio e protege a qualidade a longo prazo.
A tua estratégia de teste mantém-se geralmente consistente entre os lançamentos para uma dada carga de trabalho. Mas personaliza-o sempre para refletir as necessidades específicas e os objetivos de negócio dessa carga de trabalho.
Observação
Não aplique a mesma estratégia padronizada a diferentes cargas de trabalho. Têm considerações únicas que exigem abordagens únicas.
Crie o seu plano
Depois de concordar com a sua equipa, formalize-a num plano de teste com casos de uso alinhados com os objetivos de negócio.
O seu plano de teste é um documento detalhado que orienta a execução dos testes para uma versão específica. Descreve o âmbito dos testes, casos específicos de teste, relatórios de defeitos, prazos, atribuições de recursos e critérios de entrada e saída para as atividades de teste.
Um plano de testes bem estruturado torna os testes eficientes e alinhados com os objetivos e prazos do lançamento. É o seu ponto de referência para acompanhar o progresso e tomar decisões informadas durante os testes.
Exemplo: Para um sistema de checkout de comércio eletrónico, a estratégia de teste estabelece uma abordagem consistente em todas as versões disponíveis. Define que os fluxos de pagamento são sempre prioritários, especifica ferramentas de teste para o sistema como Selenium para testes de UI, JMeter para testes de carga e OWASP ZAP para testes de segurança, e clarifica as responsabilidades da equipa para diferentes tipos de teste. O plano de teste para a versão v2.5 foca-se na adição de suporte ao Apple Pay. Define exatamente o que testar para o Apple Pay nesta versão, aloca recursos (dois engenheiros e três dispositivos iOS), define um calendário de quatro semanas e estabelece critérios claros de entrada (código completo e ambiente configurado) e critérios de saída (todos os testes passam, zero bugs críticos e um SLA de dois segundos).
Observação
Não comece a testar antes de definir claramente a sua estratégia e plano geral de teste. Um plano de teste sólido mantém os seus esforços focados e alinhados com os objetivos de carga de trabalho.
Testa cedo, testa frequentemente, testa o que é importante
Comece a testar nas fases mais iniciais do seu ciclo de vida de desenvolvimento de software. Quando encontra problemas críticos tardiamente, enfrenta mais trabalho de reformulação e lançamentos mais lentos. Demasiadas vezes, os arquitetos negligenciam os requisitos de teste na fase de design, o que afeta negativamente a qualidade global.
Os programadores devem adotar uma mentalidade de garantia de qualidade. Considera os testes mesmo durante a concepção. Use-o para esclarecer requisitos e identificar potenciais limitações. Faça dos testes uma parte integrante do seu processo de desenvolvimento. Assume a responsabilidade de escrever e manter testes juntamente com o teu código.
Quando detetar problemas cedo, pode responder rapidamente. Por exemplo, pode priorizar alterações essenciais de design que impactam a experiência do utilizador em vez de correções rotineiras de bugs. Agir cedo reduz surpresas e atrasos de última hora.
Os testes não são um evento pontual. Continue a testar após o lançamento como parte de uma mentalidade contínua de testes. Reveja, atualize e expanda regularmente o seu conjunto de testes para cobrir novas funcionalidades e corrigir bugs descobertos em produção para manter a qualidade a longo prazo.
Observação
Não adie os testes em grandes lotes até ao final do ciclo de entrega. Atrasar os testes leva a problemas não detectados, aumento do retrabalho e lançamentos mais lentos.
Troca. Testes precoces e contínuos podem aumentar os custos operacionais e podem inicialmente atrasar o desenvolvimento ou criar atritos entre equipas. Encontra um equilíbrio, identifica cedo quais os testes e mudanças essenciais e quais podes adiar para fases posteriores. Isto garante eficiência sem comprometer a qualidade.
Teste em produção com medidas de segurança
Mesmo com práticas rigorosas de testes e validação, alguns problemas só surgem em tráfego de produção real. Para encontrar problemas que não consegue simular, realize testes controlados em produção com salvaguardas que limitem a exposição do utilizador e reduzam riscos.
Planear, isolar e monitorizar os testes de produção. Esta forma de fazer as coisas permite-lhe recolher feedback real dos utilizadores e dados de desempenho, minimizando as perturbações para a base de utilizadores mais ampla.
Considere estratégias progressivas de exposição, como libertações de canários, apenas depois de a sua carga de trabalho cumprir os critérios de saída e demonstrar qualidade forte. Esta abordagem lança atualizações para um pequeno grupo direcionado de utilizadores primeiro, ajudando-o a descobrir rapidamente problemas que podem não surgir em ambientes pré-lançamento. Com esta abordagem, acelera o processo de testes e pode reduzir os custos associados.
Risco: Tenha cuidado ao testar em produção, pois isso afeta diretamente os clientes reais. Implemente sempre salvaguardas e limite a exposição para minimizar os potenciais impactos negativos no seu negócio.
Aplicar a abordagem em camadas na cobertura de testes
Uma estratégia de cobertura de testes em camadas dá-lhe feedback rápido, deteção de defeitos mais precoce e lançamentos mais rápidos. Quando estruturas os testes em camadas, podes rapidamente isolar e depurar defeitos, facilitando a identificação e resolução de problemas.
Usa a pirâmide de testes como guia
O modelo da pirâmide de testes ilustra esta abordagem em camadas para automação de testes. Distribui os testes por diferentes camadas para maximizar a cobertura, minimizando o tempo de execução e os custos de manutenção.
- Camada base: Testes unitários verificam componentes individuais isoladamente. Elas funcionam rapidamente e fornecem feedback imediato.
- Camada intermédia: Os testes de integração verificam as interações entre componentes e serviços. Funcionam mais lentamente do que os testes unitários, mas oferecem uma cobertura mais ampla do comportamento do sistema.
- Camada superior: Testes de ponta a ponta validam as jornadas dos utilizadores por todo o sistema, simulando cenários do mundo real. Estes testes são os mais lentos, mas dão a maior confiança na qualidade geral.
Podes integrar mais facilmente testes da camada base e intermédia nos teus pipelines porque têm dependências mínimas. Esta integração permite um feedback rápido quando os testes falham e permite que o processo de compilação pare imediatamente, prevenindo que o código defeituoso avance ainda mais.
À medida que a sua cobertura de testes cresce, o tempo de execução do pipeline pode aumentar significativamente. Mantenha um ciclo de feedback rápido utilizando estratégias de execução de testes paralelas e distribuídas, mantendo os pipelines eficientes mesmo com o aumento da cobertura.
Observação
Não incluas todos os testes possíveis no pipeline de build inicial que compila e valida o teu código. Esta escolha atrasa os ciclos de lançamento e corre o risco de que testes importantes sejam contornados. Foque-se em testes que protejam diretamente fluxos de trabalho críticos e proporcionem confiança significativa na qualidade do sistema.
Compromisso. Existe um compromisso entre a cobertura de testes e a eficiência do pipeline. Embora conjuntos de testes maiores aumentem a cobertura, também aumentam o tempo e o custo de execução. Nem sempre proporcionam um retorno significativo do investimento.
Testes separados de aplicação e infraestrutura
Crie uma segmentação clara entre testar o código da sua aplicação e o seu código de infraestrutura. Valide a sua infraestrutura observando o comportamento da aplicação através da implementação do software e da execução de testes contra ele.
Executar testes de fumo de aplicações pode revelar problemas de infraestrutura, como falhas de rede, configurações incorretas de DNS ou restrições de recursos antes de impactarem a produção. Por exemplo, um teste de fumo que valida endpoints de saúde da API pode rapidamente detetar problemas de provisionamento de infraestrutura ou problemas de políticas de rede.
Com esta abordagem, testes específicos de aplicação identificam e resolvem proativamente problemas de infraestrutura, reduzindo a necessidade de validação separada da infraestrutura. Dá-lhe confiança de que tanto o seu código como a infraestrutura subjacente funcionam corretamente em conjunto.
Incorpore diferentes tipos de testes
Use vários métodos de teste ao longo da sua carga de trabalho. Completar testes unitários não significa que terminaste os testes. Cada aspeto da sua carga de trabalho precisa de uma abordagem distinta. Múltiplos tipos de teste melhoram a qualidade geral e aumentam a confiança de que o sistema funciona como pretendido.
Escolha o tipo de teste certo com base na sua carga de trabalho, maturidade e perfil de risco. Comece com validação funcional através das camadas da pirâmide de testes, depois adicione testes não funcionais como desempenho, segurança e resiliência. Alinhe a escolha do tipo de teste com os cenários críticos e riscos da sua carga de trabalho.
A tabela seguinte mostra quando aplicar diferentes tipos de teste ao longo do seu ciclo de testes. Cada um aborda riscos específicos. Embora esta tabela não seja uma lista exaustiva de todos os tipos possíveis de testes, serve como exemplo ilustrativo.
| Tipo de Teste | Objetivo principal | Quando utilizar | Custo e Considerações |
|---|---|---|---|
| Testes manuais | Valide cenários que exigem julgamento humano, aprendizagem exploratória, usabilidade e nuances de UX. | Desenvolvimento inicial, alterações na interface, fluxos ambíguos ou quando a automação não é viável. | Alto custo, baixa escalabilidade. Use com moderação e foque-se nas áreas onde a perceção humana acrescenta valor insubstituível. |
| Testes Unitários | Verifique a lógica de componentes ou funções individuais isoladamente. | Continuamente durante o desenvolvimento. | Menor custo e maior valor. Rápido, fiável e crítico para prevenir regressões. Procura uma cobertura alargada. |
| Testes de Integração | Validar interações entre componentes, APIs, contratos e serviços partilhados. | Quando componentes e serviços estão prontos para interagir ou ao integrar novas dependências. | Custo médio. Essencial para detetar configurações erradas e defeitos de interação precocemente. |
| Testes por Contrato | Verifique se o seu serviço ainda satisfaz as interações de que os seus consumidores dependem, sem exigir testes completos de integração. | Quando mudas uma API da qual dependem outras equipas ou serviços, especialmente ao longo de ciclos de lançamento independentes. | Custo médio. Existem frameworks que ajudam a registar as expectativas dos consumidores e a reproduzi-las como testes no seu próprio pipeline. |
| Teste de Ponta a Ponta (E2E) | Confirme a correção total do fluxo de trabalho em todo o sistema, desde a ação do utilizador até aos serviços de backend. | Quando as jornadas principais do utilizador se estabilizarem e puderem ser automatizadas. | Alto custo e frágil. Use seletivamente para os fluxos mais críticos para o negócio. |
| Testes de UI | Detetar regressões visuais, de layout e de interação. | Depois de o design da interface estabilizar ou quando a fidelidade visual for um requisito de lançamento. | Custo elevado de manutenção. Limitar-se a percursos críticos de interface e cenários críticos de acessibilidade. |
| Testes de Carga e Desempenho | Validar desempenho, latência, rendimento e escalabilidade sob a carga de trabalho esperada. | Comece o mais cedo possível e repita à medida que a arquitetura evolui. | Alto custo, mas necessário para a prontidão de produção, especialmente para cargas de trabalho voltadas para o cliente. |
| Teste de esforço | Determinar os limites do sistema, os pontos de rutura e os comportamentos de recuperação. | Antes da prontidão para produção ou de grandes alterações arquitetónicas. | Alto custo, fornece insights sobre resiliência. Corre seletivamente devido ao impacto ambiental. |
| Testes de Segurança | Identificar vulnerabilidades, configurações incorretas e vetores de ataque. | Aplique ao longo do ciclo de vida de desenvolvimento. | Custo médio-elevado, mas valor extremamente elevado. Fundamental para proteger dados, cumprir a conformidade e reduzir o risco empresarial. |
Avalie cada funcionalidade ou alteração com base no impacto e risco do negócio. Prioriza os tipos de teste com base nesta avaliação. Para cargas de trabalho voltadas para o cliente, dê ênfase aos testes de ponta a ponta e de interface. Para cargas de trabalho orientadas a API, foque-se na integração e nos testes por contrato. Para sistemas de alta disponibilidade, invista em testes de resiliência e caos.
Troca. Dê prioridade aos testes de segurança no início do processo de lançamento. Esta abordagem ajuda a prevenir vulnerabilidades e garante implementações mais seguras. No entanto, esta prioridade pode abrandar o ritmo com que entregas novas funcionalidades para produção.
Trate os seus ativos de teste tão importantes quanto os ativos de código
Os ativos de teste capturam regras essenciais de negócio, casos exceção, padrões históricos de defeitos e conhecimento organizacional valioso. Quando a qualidade dos testes se degrada, as equipas perdem tempo a depurar testes pouco fiáveis em vez de encontrar defeitos reais. Esta situação cria frustração e os programadores perdem a confiança no framework de teste.
Trate os assets de teste com o mesmo rigor que os assets de código. Assumir total responsabilidade pelos seus ativos de teste melhora tanto a fiabilidade como a qualidade geral do seu framework de testes.
Estrutura e segura os teus testes
Estrutura o código de teste com os mesmos princípios arquitetónicos do teu código de aplicação. Sempre que possível, mantenha os seus testes juntamente com o seu código no mesmo repositório para simplificar a manutenção e promover a consistência.
Se o seu conjunto de automação estiver num repositório separado, implemente controlos de governação equivalentes, como revisões obrigatórias de código, políticas de pull request e construa pipelines de validação para manter padrões de qualidade.
Os testes frequentemente interagem com dados e sistemas de produção, o que pode introduzir riscos devido a bibliotecas importadas ou código de teste vulnerável. Implemente práticas seguras de codificação no seu código de teste para evitar vulnerabilidades. Trate os testes com os mesmos padrões de segurança do código de produção.
Versiona os teus dados de teste juntamente com o teu código. Quando alteras esquemas de dados ou regras de negócio, atualiza os dados de teste para corresponder ao estado atual da carga de trabalho.
Faz a validação de base dos teus próprios testes para garantir que funcionam como esperado. Qualquer falha deve indicar problemas reais de aplicação, não defeitos de teste. Verifique se os testes falham corretamente e passam de forma consistente quando a sua carga de trabalho estiver estável. Resolver rapidamente os testes não fiáveis e garantir que as afirmações de teste reforçam a intenção de cada teste.
Estabeleça práticas que garantam independência e fiabilidade nos testes, como isolar dados de teste, evitar estados partilhados e implementar processos adequados de configuração e desmontagem. Implementar a limpeza automática dos dados de teste. Para beneficiar da execução de testes paralelos, desenhe os seus testes para serem independentes, de modo a que possam correr em qualquer ordem sem afetar os resultados. Os testes independentes devem sempre configurar e eliminar os seus próprios dados e dependências para evitar que os estados sejam mantidos até à próxima execução de teste.
Se a sua aplicação exigir sequenciação nos testes, use frameworks de teste que suportem execução ordenada de testes.
Mantenha e evolua os seus testes
Manter os seus ativos de teste é crucial para preservar a qualidade da carga de trabalho. Estes ativos frequentemente contêm conhecimentos organizacionais valiosos. Se não os mantiver regularmente, rapidamente tornam-se obsoletos, minando a sua eficácia e a sua capacidade de entregar lançamentos de alta qualidade.
À medida que a sua carga de trabalho evolui, os seus ativos de teste têm de evoluir em paralelo para se manterem alinhados com os objetivos do negócio. Use os mesmos princípios arquitetónicos para o seu design de teste que usa para o código de produção.
O teu conjunto de testes de regressão deve conter os testes mais valiosos e estáveis. Comece pequeno e aumente deliberadamente o seu conjunto de testes de regressão. Adicione testes quando ocorrem incidentes de produção, quando corrige bugs críticos e quando introduz alterações de alto risco. Automatiza o teu conjunto de regressão para que corra de forma consistente sem intervenção humana. Crie testes rápidos e básicos que sejam executados em todos os commits, e testes de regressão mais amplos que sejam executados diariamente ou antes do lançamento.
Os casos de teste captam a intenção, o âmbito e os resultados esperados. Manter tanto scripts de automação de testes como casos de teste sincronizados é essencial. Se os scripts de automação divergirem dos seus casos de teste correspondentes, é difícil acompanhar o que está a ser validado, levando a lacunas na cobertura e rastreabilidade.
Planeie proativamente atualizações regulares dos seus casos de teste à medida que introduz novas funcionalidades e melhorias na sua carga de trabalho. Quando automatizas um caso de teste, liga a automação ao caso original para poderes rastrear a cobertura.
Gerir a dívida técnica de testes
Agende sessões regulares de manutenção de teste para lidar com a acumulação de dívidas antes que se tornem esmagadoras.
Testes instáveis, cobertura duplicada, testes obsoletos e um mau design de testes contribuem todos para a dívida dos testes. Quando identificar testes pouco fiáveis, priorize corrigi-los ou removê-los para manter a integridade do seu conjunto de testes. Um conjunto menor de testes fiáveis é mais valioso do que um conjunto grande de testes instáveis.
Decisões estratégicas sobre faltar ou adiar testes são tão importantes quanto o que se testa. Considere saltar testes para código trivial ou de baixo risco, como getters e setters simples sem lógica de negócio, casos extremos extremamente raros, bibliotecas de terceiros e código legado agendado para remoção. Documente estas decisões para que a sua equipa possa revisitá-las à medida que o contexto muda.
Avalie o seu conjunto de testes e separe testes fiáveis e consistentes daqueles propensos a alterações externas. Testes que frequentemente falham devido a fatores fora do seu controlo, como testes de interface afetados por atualizações frequentes da interface, podem não ser bons candidatos para automação. Esta separação ajuda-o a decidir que testes automatizar e quais manter manuais.
Troca. Quando remove testes frágeis, reduz a sua cobertura de automação. Equilibre esta redução focando a automação em interfaces estáveis e fluxos de trabalho críticos, aceitando testes manuais para elementos da interface que mudam frequentemente.
Nem todos os testes merecem manutenção contínua. Aposenta testes para funcionalidades que removeste, testes que duplicam cobertura e testes que já não trazem valor. Documente porque está a remover os testes para que a decisão fique clara para a sua equipa.
Estenda a observabilidade ao seu framework de teste
A observabilidade nos testes cumpre dois objetivos principais: garantir que o framework de testes funciona de forma fiável e oferecer visibilidade contínua sobre a qualidade e o estado da sua carga de trabalho. Ao integrar práticas de observabilidade no seu quadro de teste, fortalece as capacidades de diagnóstico, facilita a monitorização em tempo real da estabilidade e impulsiona a melhoria contínua dos processos de teste.
Sem esta visibilidade, enfrenta consideráveis dificuldades em diagnosticar problemas, capacidade limitada de monitorizar sistemas em tempo real e não obtém informações claras e acionáveis sobre a eficácia da sua cobertura de automação.
Os conjuntos de testes deterioram-se com o tempo, os testes tornam-se pouco fiáveis, perdem relevância ou deixam de acompanhar as alterações na carga de trabalho. Ao incorporar observabilidade, pode monitorizar eficazmente o estado da sua suite de testes, identificar e corrigir rapidamente falhas e tomar decisões informadas sobre prioridades e melhorias de manutenção. Gerar relatórios de cobertura facilita a identificação de lacunas na automação. Quando a cobertura de testes se alinha com os dados de observabilidade de incidentes de produção, as equipas obtêm perceção sobre quais os cenários que carecem de validação adequada.
Utilize ferramentas de cobertura e relatórios de teste padrão da indústria dentro do seu framework para:
- Fornecer uma visibilidade clara dos caminhos de código testados
- Identificar testes que falham consistentemente
- Analisar tendências de longo prazo na fiabilidade dos testes
- Rastreie as origens das falhas para melhorias direcionadas
Risco: Se os registos forem inconsistentes e demasiado detalhados, podem gerar mais ruído do que valor, dificultando a depuração. Implemente registos estruturados com mensagens claras e acionáveis e diferentes níveis de verbosidade para garantir que os registos fornecem insights significativos sem sobrecarregar a sua equipa.
Simular condições realistas
Avalie os seus fluxos de trabalho a partir da perspetiva do utilizador final para garantir que realmente respondem às necessidades e expectativas dos clientes. Defina critérios claros de aceitação para as suas cargas de trabalho e desenhe testes que reflitam com precisão fluxos e experiências reais dos utilizadores, não apenas comportamentos isolados do sistema.
Escalar a cobertura estrategicamente
Escale a sua cobertura de testes com base no risco e no valor. Dê prioridade à cobertura para jornadas de utilizador de alto valor e caminhos críticos que impactam diretamente a experiência do cliente. À medida que a complexidade da carga de trabalho aumenta, expanda a sua cobertura de testes avaliando cenários que proporcionem a maior confiança na qualidade e fiabilidade da carga de trabalho.
Risco: Não invista em excesso num único fluxo de utilizadores para além do ponto de retornos decrescentes. Depois de obter cobertura suficiente para caminhos críticos, mude o foco para outras áreas importantes. Procure uma cobertura equilibrada em vez da perfeição num só fluxo.
Alinhar com os objetivos de negócio e SLOs
Alinhe os seus testes tanto com os objetivos de negócio como com os Objetivos de Nível de Serviço (SLOs). Defina limiares de qualidade mensuráveis que reflitam os compromissos empresariais e as expectativas dos utilizadores. Concordem com estes limiares, pois fornecem um ponto de referência para detetar desvios e resolver erros. Esta abordagem protege a experiência do utilizador ao garantir que os limiares-chave de qualidade do serviço não são comprometidos. Revise e atualize regularmente as suas métricas de referência para garantir que continuam a responder às necessidades e expectativas atuais dos clientes.
Utilizar dados de teste representativos
Os dados de teste devem representar cenários do mundo real o mais fielmente possível. Os dados sintéticos podem simular cenários autênticos de utilizador, evitando a complexidade do tratamento dos dados de produção. Por exemplo, o teste sintético pode replicar cenários do mundo real ao gerar conjuntos de dados representativos para avaliar como a sua carga de trabalho se comporta sob condições de escalabilidade planeadas.
Se precisar de usar dados de produção para testes, certifique-se de anonimizar corretamente toda a informação para proteger informações sensíveis.
Use dados sintéticos como escolha padrão. Reserve os dados de produção para cenários específicos onde os dados sintéticos não consigam replicar a complexidade necessária, como testar scripts de migração de dados.
Simule o seu ambiente de produção
O ambiente de produção é a sua fonte de verdade para compreender como a sua carga de trabalho se comporta em condições reais. Crie um ambiente que espelhe de perto as condições do mundo real para que possa confiar que o sistema funciona como esperado em produção.
Adapte a sua abordagem para espelhar ambientes de produção às necessidades específicas da sua carga de trabalho. Para cargas de trabalho críticas que requerem alta disponibilidade, teste num ambiente dedicado que se assemelhe muito à produção. Para estas cargas de trabalho, equilibre cuidadosamente a otimização de custos com a necessidade de validação robusta. Use um ambiente dedicado, semelhante à produção, para testes de desempenho e carga para garantir que o comportamento do serviço é avaliado com precisão em condições realistas.
Para outras cargas de trabalho, faça com que o seu ambiente espelhe de perto a infraestrutura de produção para reduzir falsos positivos, casos em que os testes têm sucesso em ambientes inferiores mas falham em produção. Procura consistência em todos os ambientes à medida que o teu código avança no pipeline. Simule as condições de produção em vários aspetos da sua carga de trabalho, incluindo infraestrutura, dados e segurança, para garantir resultados fiáveis nos testes.
Quando replicas os seus ambientes para produção, o desvio de configuração pode gerar uma falsa impressão de qualidade. Previna isto implementando verificações automáticas de validação para desvios de configuração para garantir que o seu ambiente se mantém alinhado com a produção. Quando apropriado, configure portas de implementação para verificar se a versão correta foi implementada antes do início dos testes.
Risco: Quando se espelham os ambientes de produção, pode aumentar significativamente os custos operacionais. Avalie se ambientes efémeros ou ambientes de teste persistentes oferecem o equilíbrio ideal entre eficiência de custos e qualidade para a sua carga de trabalho.
Construir ambientes de teste orientados para o propósito
Projetar ambientes com um foco claro no seu propósito pretendido. Avalie os requisitos distintos de cada fase do seu ciclo de vida de testes e certifique-se de que o ambiente está alinhado com os objetivos dessa fase.
Projete intencionalmente cada ambiente de teste para corresponder à fase específica e aos objetivos do teste, seja para validação funcional, testes de integração ou outros fins. Se um ambiente simplificado serve eficazmente as suas necessidades de teste, priorize essa abordagem para maximizar a eficiência.
Utilizar serviços simulados
A replicação total dos sistemas de produção para cada cenário de teste é frequentemente impraticável. Avalie quais os componentes da sua carga de trabalho que pode replicar em segurança para testes sem comprometer os fluxos de trabalho críticos do negócio. Quando a replicação total não for viável, utilize serviços simulados que simulem com precisão os comportamentos dos serviços de produção para validar cenários de forma eficaz sem arriscar operações em tempo real.
Ambientes de teste orientados por propósito fornecem uma base ideal para implementar serviços simulados em ambientes efémeros. Ambientes efémeros oferecem uma forma económica de simular condições de produção para testes. Pode validar interações e comportamentos sem a sobrecarga de manter ambientes completos semelhantes à produção para cada cenário de teste. Estes ambientes on-demand são criados para fins de teste específicos e destruídos após a utilização, reduzindo os custos de infraestrutura enquanto mantêm a qualidade dos testes.
Construir ambientes efémeros exige que o seu ambiente de trabalho atinja um nível de maturidade mais elevado, onde a automação com 'Infraestrutura como Código' (IaC) e pipelines de implementação sejam bem estabelecidos.
Facilitação de Serviços do Azure
O Planos de Teste do Azure é uma solução de gestão de testes baseada em navegador que fornece todas as capacidades necessárias para testes manuais planeados, testes de aceitação por utilizadores, testes exploratórios e recolha de feedback das partes interessadas. Inclui Análise de Testes para acompanhar a qualidade dos testes ao longo do tempo e identificar áreas a melhorar.
O Azure Pipelines torna possível integrar os testes no seu pipeline CI/CD. Também pode usar o GitHub Actions integrado com o Azure.
O Teste de aplicativos do Azure é um serviço que suporta testes funcionais e de desempenho. Permite executar testes funcionais com o Espaços de trabalho para dramaturgos e testes de desempenho usando Azure Load Testing.
Os Ambientes de Implementação Azure podem ajudar a desenvolver infraestruturas de aplicações com modelos baseados em projetos que estabelecem consistência e melhores práticas, maximizando a segurança.
O Azure também fornece ferramentas nativas de plataforma que suportam testes de fiabilidade, desempenho e segurança.
Ligações relacionadas
- Recomendações para testes de desempenho
- Recomendações para testes de fiabilidade
- Recomendações para testes de segurança
Lista de verificação de Excelência Operacional
Consulte o conjunto completo de recomendações.