View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Testando

Mapa de Resultados para Técnicas de Teste

A tabela abaixo mapeia resultados – os resultados que você pode querer alcançar em seus esforços de validação – para uma ou mais técnicas que podem ser usadas para alcançar esse resultado.

Quando estou trabalhando em… Quero obter este resultado… …então devo considerar      
Desenvolvimento Comprovar compatibilidade retroativa com chamadores e clientes existentes Shadow testing Desenvolvimento; Integration testing Garantir que a telemetria seja suficientemente detalhada e completa para rastrear e diagnosticar mau funcionamento em fluxos de End-to-End testing Desafios de Debug Distribuído; Análise de cadeia de chamadas órfãs
Desenvolvimento Garantir que a lógica do programa esteja correta para uma variedade de entradas esperadas, principais, de borda e inesperadas Unit testing; Testes funcionais; Consumer-driven Contract Testing; Integration testing      
Desenvolvimento Prevenir regressões na correção lógica; quanto mais cedo, melhor Unit testing; Testes funcionais; Consumer-driven Contract Testing; Integration testing; Anéis (cada um desses são escopos de cobertura em expansão)      
Desenvolvimento Validar rapidamente a correção principal de um ponto de funcionalidade (por exemplo, uma única API), manualmente Testes de fumaça manuais Ferramentas: postman, powershell, curl      
Desenvolvimento Validar interações entre componentes isoladamente, garantindo que componentes consumidores e provedores sejam compatíveis e estejam de acordo com um entendimento compartilhado documentado em um contrato Consumer-driven Contract Testing      
Desenvolvimento; Integration testing Validar que múltiplos componentes funcionem juntos em várias interfaces em uma cadeia de chamadas, incluindo saltos de rede Integration testing; Testes de ponta a ponta (End-to-End testing); Testes de ponta a ponta segmentados (End-to-End testing)      
Desenvolvimento Comprovar recuperação de desastres – recuperação de corrupção de dados Simulações de DR      
Desenvolvimento Encontrar vulnerabilidades na autenticação ou autorização do serviço Cenário (segurança)      
Desenvolvimento Comprovar interpretação correta de RBAC e reivindicações no código de autorização Cenário (segurança)      
Desenvolvimento Documentar e/ou impor uso válido da API Unit testing; Testes funcionais; Consumer-driven Contract Testing      
Desenvolvimento Comprovar a correção da implementação antes de uma dependência ou na ausência de uma dependência Unit testing (com mocks); Unit testing (com emuladores); Consumer-driven Contract Testing      
Desenvolvimento Garantir que a interface do usuário seja acessível Accessibility      
Desenvolvimento Garantir que os usuários possam operar a interface UI testing (automated) (observação de usabilidade humana)      
Desenvolvimento Prevenir regressão na experiência do usuário Automação de UI; End-to-End testing      
Desenvolvimento Detectar e prevenir fenômenos de ‘vizinho barulhento’ Load testing      
Desenvolvimento Detectar quedas de disponibilidade Synthetic Transaction testing; Sondas externas      
Desenvolvimento Prevenir regressão em casos de uso / fluxos de trabalho de cenário ‘composto’ (por exemplo, um sistema de comércio eletrônico pode ter muitas APIs que, usadas juntas em uma sequência, executam um cenário de “compra e venda”) End-to-End testing; Cenário      
Desenvolvimento; Operações Prevenir regressões em métricas de desempenho em tempo de execução, por exemplo, latência / custo / consumo de recursos; quanto mais cedo, melhor Anéis; Synthetic Transaction testing / Transação; Cães de guarda de reversão      
Desenvolvimento; Otimização Comparar qualquer métrica dada entre 2 implementações candidatas ou variações na funcionalidade Testes A/B; Flighting      
Desenvolvimento; Staging Comprovar que o sistema de produção de capacidade provisionada atende aos objetivos de confiabilidade, disponibilidade, consumo de recursos, desempenho Load testing (stress); Pico; Soak; Performance testing      
Desenvolvimento; Staging Entender as principais características de desempenho da experiência do usuário – latência, conversação, resiliência a erros de rede Carga; Performance testing; Cenário (particionamento de rede)      
Desenvolvimento; Staging; Operação Descobrir pontos de fusão (as cargas nas quais ocorre falha ou consumo máximo tolerável de recursos) para cada componente individual na pilha Squeeze; Load testing (stress)      
Desenvolvimento; Staging; Operação Descobrir o ponto de fusão geral do sistema (as cargas nas quais o sistema de ponta a ponta falha) e qual componente é o elo mais fraco em toda a pilha Squeeze; Load testing (stress)      
Desenvolvimento; Staging; Operação Medir limites de capacidade para provisionamento dado para prever ou satisfazer necessidades futuras de provisionamento Squeeze; Load testing (stress)      
Desenvolvimento; Staging; Operação Criar / exercitar manual de failover Simulações de Failover      
Desenvolvimento; Staging; Operação Comprovar recuperação de desastres – perda de data center (o cenário do meteoro); medir MTTR Simulações de DR      
Desenvolvimento; Staging; Operação Entender se os painéis de observabilidade estão corretos e se a telemetria está completa e fluindo Validação de Rastreamento; Load testing (stress); Cenário; End-to-End testing      
Desenvolvimento; Staging; Operação Medir impacto da sazonalidade do tráfego Load testing      
Desenvolvimento; Staging; Operação Comprovar que transações e alertas notificam / tomam ações corretamente Synthetic Transaction testing (casos negativos); Load testing      
Desenvolvimento; Staging; Operação; Otimização Entender a curva de escalabilidade, ou seja, como o sistema consome recursos com carga Load testing (stress); Performance testing      
Operação; Otimização Descobrir o comportamento do sistema ao longo do tempo Soak      
Otimização Encontrar oportunidades de economia de custos Squeeze      
Staging; Operação Medir impacto de failover / aumento de escala (reparticionamento, aumento de provisionamento) / redução de escala Simulações de Failover; Simulações de Escala      
Staging; Operação Criar/Exercitar manual para aumento/redução de provisionamento Simulações de Escala      
Staging; Operação Medir comportamento sob mudanças rápidas no tráfego Spike      
Staging; Otimização Descobrir métricas de custo por unidade de volume de carga (quais fatores influenciam o custo em quais pontos de carga, por exemplo, custo por milhão de usuários simultâneos) Carga (stress)      
Desenvolvimento; Operação Descobrir pontos onde um sistema não é resiliente a falhas imprevisíveis, mas inevitáveis (queda de rede, falha de hardware, manutenção de host de VM, falhas de rack/switch, atos aleatórios do Divino Malévolo, flares solares, tubarões que comem relés de cabos submarinos, radiação cósmica, quedas de energia, operadores de retroescavadeiras renegados, lobos mastigando caixas de junção, …) Caos      
Desenvolvimento Realizar testes unitários em conectores personalizados da plataforma Power Custom Connector Testing      

Seções dentro de Testes

Testes Específicos de Tecnologia