5. Integração contínua - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

5. Integração contínua

O sistema ML executa testes para validar se o sistema funciona de ponta a ponta, verificando possíveis pontos de falha. Os testes são executados automaticamente na confirmação, e testes mais longos são executados em um cronograma fixo. Os testes verificam as áreas tradicionais de engenharia de software, como no nível da unidade e do sistema. Além disso, os testes capturam os detalhes do ML verificando dados, recursos e o modelo.

5.1 Verificações de código local

Antes de confirmar o código em um repositório de código centralizado, os desenvolvedores executam localmente verificações, como testes de unidade básicos e análise estática. Executar essas verificações antes da confirmação aumenta a qualidade geral do código e detecta problemas antes que eles entrem no controle de versão.

5.2 Análise estática de código

O repositório central de código tem ferramentas de análise estática de código que são executadas rapidamente na confirmação. Essas ferramentas devem melhorar o estilo e a formatação do código. Elas também devem verificar vulnerabilidades de segurança comuns no código-fonte e na infraestrutura, bugs comuns e outras fraquezas no código.

5.3 Testes de qualidade de dados

Os testes de qualidade de dados devem, no mínimo, verificar se os dados não violaram um esquema fixo. Uma abordagem mais abrangente é calcular estatísticas de dados na ingestão, definir restrições nos dados e executar testes com eles.

É possível configurar testes de qualidade de dados de forma independente ou como parte do pipeline. As estatísticas e restrições são reutilizadas para monitoramento.

5.4 Testes de atributos

Como parte de um pipeline completo, a importância do atributo é gerada. Os testes de atributos afirmam que a importância dos atrubutos, ou a forma do modelo de atribuir valores dos atributos, não muda. Os testes de atributos podem alimentar o monitoramento porque podem alertar e rastrear violações nas entradas de um modelo.

5.5 Testes de unidade

Os testes de unidade para todo o código (modelo, aplicação e infraestrutura) são executados antes e após a confirmação. Cada teste de unidade fornece uma verificação de uma parte importante do código para confirmar que ela funciona conforme o esperado. No caso do código do ML, os testes podem ser executados para verificar a exatidão algorítmica.

5.6 Testes de integração

Um teste de integração verifica se o pipeline é executado de ponta a ponta com sucesso, incluindo a manutenção da infraestrutura associada ao pipeline. Esse teste valida se o sistema está funcionando e registrando em log, conforme o esperado. Se a implantação for separada, também deve haver um end-to-end teste para garantir que a implantação funcione.

5.7 Testes smoke

O sistema possui testes smoke que são executados em mini e rápida regressão de cada peça de funcionalidade. Os testes smoke fazem parte da integração contínua e podem ser executados em um ambiente em contêineres para imitar a funcionalidade da nuvem.

5.8 Teste de carga

O teste de carga sob demanda está em vigor. Além de capturar como o sistema de ML se comporta sob cargas altas e baixas, os testes de carga fornecem estatísticas sobre o throughput ou a latência de todo o sistema. Os dados coletados por meio de testes de carga fornecem informações sobre tamanhos de recursos e políticas de escalabilidade.

5.9 Testes funcionais do modelo

As saídas e entradas do modelo são executadas por meio de testes funcionais automatizados. Para verificar um comportamento dentro de um recurso, tanto as saídas quanto as entradas do modelo são testadas em dados reais ou falsos com exemplos básicos.

5.10 Testes de inferência do modelo com casos extremos

Como parte do teste mínimo de funcionalidade, os testes de modelo devem verificar o comportamento extremo de acordo com determinadas entradas antes da promoção do modelo. Isso coloca uma barreira de proteção adicional para ajudar a evitar comportamentos inesperados.