O Threat Stack agora é F5 Distributed Cloud App Infrastructure Protection (AIP). Comece a usar o Distributed Cloud AIP com sua equipe hoje mesmo .
Microsserviços, mesmo quando projetados corretamente, podem ser difíceis de testar. Mas quando a arquitetura do sistema evolui a ponto de dezenas ou centenas de serviços conectados comporem uma plataforma de software em uma infraestrutura em constante mudança, testar o produto pelo qual você e sua equipe são responsáveis se torna uma tarefa monumentalmente complexa. Escrever automação de testes para esses ambientes é difícil, então você quer garantir que obterá o máximo valor dos testes que escrever.
Na Threat Stack, escrevemos testes de integração de sistemas, uma forma de teste funcional de caixa cinza, e escolhemos o Docker para executar o ambiente de teste em contêiner.
Algumas organizações ainda contam com o modelo de teste tradicional, no qual os testes de caixa branca e caixa preta são vistos como uma estratégia de teste complementar suficiente. Embora ainda desempenhem um papel importante na qualificação de software, eles não são mais suficientes para fornecer o feedback necessário para lançar software com confiança.
Nesse tipo de ambiente, os testes de aceitação do usuário de caixa preta são muito focados e confiar neles pode ter implicações sérias nas estratégias de tempo de colocação no mercado:
Por outro lado, os testes unitários de caixa branca têm um foco muito restrito e são frequentemente usados incorretamente para qualificar a funcionalidade do sistema de software:
Os engenheiros de teste do Threat Stack dependem cada vez mais de testes de integração de sistemas para testar todos esses serviços de uma forma que maximize a cobertura do teste e, ao mesmo tempo, forneça a velocidade e a especificidade necessárias para garantir que o aplicativo se comportará corretamente sob muitas condições operacionais.
Um teste de integração é um teste de caixa cinza que se concentra no comportamento do software ou sistema em teste ao interagir com componentes externos. Por exemplo:
Em outras palavras, software com o qual você pode interagir para validar comportamento. Na Threat Stack, executamos principalmente testes funcionais que replicam situações reais, mas os comportamentos testados param nos limites do ambiente em contêiner, evitando interações externas indesejadas.
E como esses testes são fortemente acoplados ao microsserviço, você tem o benefício de examinar e integrar o código do serviço em teste nos testes automatizados para identificar consistentemente áreas do código a serem exercitadas. Além disso, esses testes podem ser escritos como testes de aceitação do usuário para que pessoas não desenvolvedoras, como gerentes de produto e engenheiros de controle de qualidade, possam entender mais facilmente o comportamento sob teste.
Em outras palavras:
Dado um conjunto de algumas condições
Quando o serviço recebe esta entrada (OU esta condição afeta o serviço)
Então o serviço se comporta de maneira esperada e produz efeitos colaterais esperados
Esses testes funcionais não são apenas fáceis de entender e escrever, mas também são fortemente acoplados ao código do microsserviço, de modo que podem ser facilmente executados e atualizados pelos desenvolvedores durante o processo de desenvolvimento ou posteriormente por engenheiros de teste dedicados.
Os contêineres são extremamente úteis para sistemas de teste, pois permitem que você reproduza rapidamente seu ambiente de teste com recursos mínimos durante a duração dos testes e, em seguida, limpe-o facilmente quando os testes terminarem de ser executados. Ao contrário de muitos testes de automação de caixa preta, você não precisa de um ambiente de teste caro e sempre ativo para realizar seus testes de integração. Ao executar os testes, o comportamento do microsserviço pode ser reproduzido no ambiente de teste.
Depois de definir um ambiente em contêiner que espelhe o ambiente do microsserviço em produção, sua estrutura de teste se torna os clientes externos ou serviços simulados que fazem interface com os componentes ou microsserviços em teste. Isso garante que o código de teste oriente todos os aspectos dos testes, o que permite que você controle muitos outros aspectos dos testes.
Para começar, o Docker é uma boa plataforma para criar rapidamente um ambiente em contêiner. Usando o Docker Compose , você pode definir e executar facilmente as seções do seu aplicativo em teste, localmente ou em CI, usando o mesmo código. Outras ferramentas e serviços de infraestrutura de contêiner, como Kubernetes , AWS EKS ou AWS Fargate , também podem ser usados para implantar seu ambiente de teste se sua organização oferecer suporte ao uso deles.
Em última análise, a decisão de concentrar os esforços de teste em testes de integração em oposição a outros tipos de automação oferece dois grandes benefícios:
O Threat Stack agora é F5 Distributed Cloud App Infrastructure Protection (AIP). Comece a usar o Distributed Cloud AIP com sua equipe hoje mesmo .