O exame AZ-400 faz duas perguntas sobre pacotes e testes: qual versão de um pacote pode ser usada por quem e quando, e com que profundidade o código foi verificado antes do deploy. Os dois temas compartilham um único objetivo no pipeline: garantir automaticamente que os artefatos de build são confiáveis. Azure Artifacts e GitHub Packages cuidam do lado do fornecimento; a pirâmide de testes e o Quality Gate cuidam da verificação.
Azure Artifacts — Feed, Views e Upstream Sources
Imagine uma biblioteca pública onde os livros estão espalhados por dezenas de prateleiras sem catálogo. Encontrar algo leva uma eternidade. O Azure Artifacts é a biblioteca de pacotes da sua equipe: um único lugar para hospedar NuGet, npm, Maven, Python e Universal Packages, organizado com três conceitos fundamentais.
Um é o contêiner de pacotes com escopo de organização ou de projeto. Separar pacotes públicos de pacotes internos requer dois feeds distintos; não é possível definir escopos de acesso por pacote dentro de um único feed.
rastreiam a maturidade dos pacotes: , e . CI publica em ; a validação de QA promove para ; a aprovação final promove para . A movimentação entre views é feita por , não por re-publicação. Compartilhar apenas a URL do com consumidores externos garante que vejam somente versões estáveis.
fazem proxy de pacotes de registros públicos (npmjs.com, NuGet.org, Maven Central) pelo feed interno. Salvar um pacote upstream no feed requer pelo menos o papel ; um só pode baixar pacotes já cacheados.
GitHub Packages é o registro nativo do GitHub, autenticado com ou PAT. Azure Artifacts se integra naturalmente com Azure Pipelines; GitHub Packages se integra nativamente com GitHub Actions.
SemVer — O que o Número de Versão Comunica
Pense em uma receita médica sem dosagem: só o nome do remédio. Um número de versão é uma mensagem que comunica aos consumidores que tipo de mudança ocorreu. O SemVer padroniza essa mensagem com MAJOR.MINOR.PATCH.
: apenas correção de bug, sem alteração de API. O código do consumidor funciona sem modificações. (ex., 3.5.2 → 3.5.3) : nova funcionalidade, API existente preservada. PATCH reinicia para 0. Marcar como deprecated também é MINOR. (ex., 2.5.3 → 2.6.0) : breaking change, compatibilidade removida. MINOR e PATCH reiniciam para 0. (ex., 3.4.9 → 4.0.0)
O exame contrasta com frequência deprecar vs. remover. Marcar um endpoint como deprecated sem removê-lo não afeta consumidores: isso é MINOR. Removê-lo ou mudar a assinatura é MAJOR. O Azure Artifacts aplica imutabilidade: uma versão publicada não pode ser republicada; cada correção precisa de um novo número de versão.
A Pirâmide de Testes — O Teste Certo no Momento Certo
Imagine uma linha de montagem de automóveis. Detectar uma peça defeituosa no início tem custo de correção mínimo. Descobri-la depois de pintado e embalado significa desmontar tudo. A pirâmide de testes aplica essa lógica aos pipelines: quanto mais à direita um defeito chega, mais caro fica.
são a base. Executam em milissegundos isolando uma função de suas dependências com mocks ou stubs. Em .NET, gera arquivos ; a tarefa requer . Em PowerShell, é o padrão; é uma ferramenta de análise estática, não um framework de testes.
validam interações reais com bancos de dados, APIs externas e gateways de pagamento. São 10–100x mais lentos que os unitários e pertencem após o build mas antes do deploy.
exercitam cenários completos do usuário em um navegador real. controla Chromium, Firefox e WebKit por uma única API com auto-wait integrado. oferece o suporte mais amplo a navegadores legados. só suporta Chromium e não suporta WebKit — eliminado em qualquer requisito de testes entre navegadores.
via Azure Load Testing (baseado em JMeter) medem tempo de resposta, throughput e taxa de erros. Load testing valida o comportamento dentro do pico esperado; stress testing excede deliberadamente a capacidade para observar a degradação.
Nos , o OWASP ZAP oferece dois modos. O executa apenas Passive Scan e é seguro para produção. O adiciona Active Scan com payloads reais: apenas para staging.
!A pirâmide de testes
Quality Gate — Automatizando a Decisão de Deploy
Um armazém que depende de um inspetor humano para cada remessa cria gargalo em escala. Uma linha de inspeção automatizada que só passa pacotes conformes é mais confiável. Quality Gate e Release Gate aplicam esse princípio aos deploys.
e analisam qualidade de código, code smells, vulnerabilidades SAST e cobertura com base em limites configuráveis. Para Java com Maven use ; com Gradle, . As ferramentas de cobertura variam por linguagem: Java usa , .NET/Cusa , JavaScript/Node.js usa .
executam verificações automatizadas antes e depois dos estágios de deploy no Azure Pipelines:
: consulta Azure Boards e bloqueia o deploy se houver bugs ativos acima de um limite. : consulta métricas ou logs com KQL e bloqueia se a taxa de erros ou o tempo de resposta não atingir a linha de base. : gate de uso geral para qualquer sistema externo.
verificam condições antes de um estágio começar. verificam o estado após um estágio ser concluído. Gate (automático, baseado em condições) vs. Manual approval (uma pessoa precisa aprovar) é uma distinção frequente no exame.
Seleção de Runner — Self-Hosted vs Microsoft-Hosted
Pense no ônibus fretado da empresa versus um táxi. O ônibus segue uma rota fixa mas acessa o campus privado. O táxi vai a qualquer lugar mas não entra nas instalações seguras. A escolha do runner segue o mesmo trade-off.
Os runners Microsoft-hosted fornecem um ambiente limpo para cada job sem necessidade de manutenção. Não podem acessar recursos de rede privados, portanto testes de integração ou de carga que exigem sistemas internos precisam de outra abordagem.
Os runners self-hosted rodam em máquinas da equipe com acesso total à rede privada. Para feeds NuGet do Azure Artifacts, instale o na máquina agente, que é a recomendação oficial da Microsoft para gerenciar credenciais automaticamente.
Resumo do Exame
'Gerenciar maturidade de pacotes sem re-publicar' -- Release views ( / / ) + promote 'Proxy de registros públicos externos pelo feed interno' -- upstream source 'Papel mínimo para salvar pacotes upstream' -- Collaborator 'Papel mínimo para publicar pacotes diretamente' -- Contributor 'Marcar como deprecated, não remover' -- SemVer MINOR 'Remover endpoint ou alterar assinatura' -- SemVer MAJOR 'Suporte WebKit + auto-wait' -- Playwright 'Sem suporte WebKit, eliminado em testes entre navegadores' -- Cypress 'Apenas Passive Scan, seguro em produção' -- OWASP ZAP Baseline Scan 'Active Scan incluído, apenas para staging' -- OWASP ZAP Full Scan 'Verificação automática antes do próximo estágio iniciar' -- Pre-deployment gate 'Verificação automática após o deploy ser concluído' -- Post-deployment gate
Azure Artifacts = cadeia de fornecimento de pacotes com controle de versão, pirâmide de testes = garantia de qualidade em camadas, Quality Gate = decisão de deploy automatizada.