Logo do curso
Curso

Qualidade de Software:

escrevendo testes de maneira eficiente

Quero estudar na alura

10h

Para conclusão

714

Pessoas nesse curso

9.2

Avaliação média

Certificado

De participação

Introdução_

O que você aprenderá_

  • Aprenda a identificar os melhores critérios de cobertura para cada tipo de sistema.
  • Descubra como transformar requisitos em casos de teste eficazes e automatizáveis.
  • Compreenda como equilibrar diferentes tipos de testes dentro da pirâmide ideal para seu projeto.
  • Entenda como criar testes mais legíveis, coesos e confiáveis para manter a qualidade do seu código.
  • Veja como aplicar TDD na prática e avaliar quando essa abordagem faz sentido.
  • Explore estratégias para implementar uma cultura de testes em grandes equipes e organizações.
  • Aprenda a lidar com os desafios de testar sistemas legados de forma incremental e segura

Público alvo_

Pessoas que atuam em desenvolvimento de software, engenharia de qualidade, testes de software e qualquer profissional da área de tecnologia que deseja aprimorar suas habilidades em testes de software. É especialmente útil para quem busca entender melhor as práticas de teste, desde a identificação de bugs até a automação de testes e a aplicação de critérios de cobertura de código.

Maurício Aniche

linkedin

Maurício é atualmente Staff Engineer na área de Core Services da Uber. Antes disso, Maurício liderava o time de Testing Enablement na Adyen. Maurício possui mestrado e doutorado em Ciência da Computação e atuou como professor e pesquisador em engenharia de software na Universidade Tecnológica de Delft, na Holanda. Sua pesquisa sempre focou em qualidade e testes de software. Maurício é autor do livro Effective Software Testing, publicado pela Manning, e usado por diversas universidades ao redor do planeta.

Curso atualizado em 17/06/2025

Ementa

  1. Princípios do teste de software

    • Qual foi o bug mais grave que você fez parte?
    • Escrevendo testes ao acaso
    • Para saber mais: Como devs criam casos de testes?
    • Abordagem sistemática vs. informal
    • Escrever testes != Testar
    • Princípios de Teste de Software
    • Testar exaustivamente?
    • Você conseguiria testar todos os caminhos?
    • Variabilidade de testes
    • Diversidade ou repetição?
    • Distribuição de bugs no sistema
    • Onde há mais bugs?
    • Contexto é importante
    • Particularidades de cada software
    • Perfeição é impossível
    • Equilibrando testes na Playcatch
    • Verificação ≠ validação
  2. Testes baseados em especificação

    • Requisitos como fonte
    • Testes de domínio
    • Otimizando a busca de projetos
    • Passo 1: entenda o requisito, suas entradas e saídas
    • Passo 2: identifique as partições
    • Passo 3: crie casos de teste
    • Passo 4: analise as fronteiras
    • Praticando: testes de fronteira
    • Passo 5: use sua criatividade
    • Passo 6: automatize!
    • Mão na Massa: testes de fronteira
    • Desafio: automatizando testes
    • Desafio: testando a regra de acesso à sala
    • Desafio: testando o programa mycp
    • Desafio: testando o sistema de leilão
  3. Dicas de testes de especificação

    • Testes: um processo iterativo
    • Quão longe devemos ir?
    • Partição ou Fronteira?
    • Indo além das fronteiras
    • Garantindo a eficácia dos testes no app Fokus
    • Escolhendo entradas similares
    • Como você escolhe valores de entrada?
    • Combinando entradas de forma pragmática
    • Entradas simples
    • Entradas que fazem sentido
    • Testando playlists realistas na Playcatch
    • Valores com sentido vs. aleatórios
    • Valores de parâmetros secundários
    • Valores nulos e excepcionais
    • Casos excepcionais?
    • Quando aplicar a técnica?
    • Experiência e criatividade
    • Será que a IA consegue nos ajudar? 
  4. Testes estruturais para melhorar a suíte de teste

    • O que são testes estruturais?
    • Critérios de cobertura de código
    • Cobertura de linhas
    • Cobertura de branches
    • Cobertura de condição + branches
    • Condições complexas e MC/DC
    • Cobertura de caminho
    • Desafios de Path Coverage na Listin
    • Mão na Massa: medindo cobertura de código
    • Lidando com loops
    • Repensando testes para somar_strings
    • Qual critério é o mais forte?
    • Cobertura de código na prática
    • Otimizando a cobertura de testes para o Playcatch
    • Para saber mais: cobertura de código
    • Desafio: testes estruturais
  5. Usando cobertura de código de maneira correta

    • Cobertura de código como métrica
    • Avaliando a eficácia dos testes na Meu Pequeno Grimório
    • O que você acha de cobertura de código?
    • 100% de cobertura de código?
    • Existe alguma meta de cobertura definida na empresa?
    • Escolhendo critérios de cobertura
    • Qual é o critério de cobertura ideal?
    • Quando usar MC/DC
    • Usar testes com MC/DC ou não?
    • Otimizando testes para a Jornada Viagens
    • Testes de mutação
    • Você conhecia testes de mutação?
  6. Design by Contracts

    • Projeto da aula
    • Contratos e qualidade de software
    • Pré-condições
    • Pós-condições
    • Integridade do carrinho de compras no UseDev
    • Invariantes
    • Singularidade dos projetos na CodeConnect
    • Contratos implícitos ou explícitos?
    • Praticando Design by Contracts
  7. Contratos: dicas do mundo real

    • Condições fortes ou fracas?
    • Forte ou fraca?
    • Pós-condições na Clickbonus
    • Contratos e o princípio de Liskov
    • Aplicação do princípio de Liskov
    • Validação ou pré-condição?
    • Asserções ou exceções?
    • Lançar exceção ou retornar erro?
    • Quando não usar DbC?
    • Testar pré/pós-condições e invariantes?
    • Para saber mais: testes baseados em propriedades
  8. Tipos e pirâmides de testes

    • Níveis de testes
    • Pirâmide de testes
    • Pirâmide de testes na Indexa
    • Troféu de testes
    • Pirâmide vs. troféu
    • Rapidez e estabilidade
    • Otimizando testes para a Meteora
    • Sua própria pirâmide de testes
    • Como está seu ecossistema de testes?
    • O que aprendemos?
  9. Usando dublês e mocks

    • Por que simular um objeto?
    • Sobre Mocks
    • Dummy, Fake, Stub e Mock
    • Usando framework de mocks
    • Para saber mais: Mocks
    • Você usa fakes nos testes?
    • Quando mockar?
    • Estratégias de teste para a Gatito Petshop
    • Para saber mais: Mocks e acoplamento
    • Qual o seu
  10. Desenhando sistemas testáveis

    • O que é um sistema testável?
    • Garantindo a testabilidade
    • Separando infraestrutura do código de domínio
    • Separar para testar?
    • Controlabilidade
    • Para saber mais: injeção de dependência
    • Valores como entrada da função
    • Wrappers
    • Observabilidade
    • O seu sistema é observável?
  11. Test-Driven Development

    • O que é TDD? Quais as vantagens?
    • Para saber mais: Test Driven Development
    • Adotar TDD ou não?
    • Baby Steps na Screen Match
    • TDD 100% do tempo?
    • Você pratica TDD? Por quê?
    • Para saber mais: escolas de TDD
    • Para saber mais: estudos sobre TDD
    • TDD e testes: qual a relação?
  12. Qualidade de código de teste

    • Código de teste é código!
    • Como você cuida do código de testes?
    • Testes devem ser rápidos
    • Como está a performance dos seus testes?
    • Coesos, independentes e isolados
    • Garantindo testes coesos no Buscante
    • Sempre previsíveis (não flaky)
    • Para saber mais: estudos sobre flaky tests
    • Seu projeto atual sofre com flaky tests?
    • Devem ter uma razão para existir
    • Avaliando testes na Zoop
    • Asserções fortes e claras
    • Asserções não devem ser sensíveis
    • Você escreve asserções fortes ou fracas?
    • Quebrar somente se o comportamento mudar
    • Eficiência dos testes na Hermex Log
    • Fáceis de ler, escrever e evoluir
    • Para saber mais: Test Data Builder
    • Praticando: testes com Test Data Builders
    • Evitar muito código duplicado
    • Como está a qualidade do seu código de testes?
  13. Testes em grandes organizações

    • Desafios de grandes organizações
    • Documentando decisões
    • A estratégia está clara?
    • Experiência de testes
    • Como é a experiência de testar na sua empresa?
    • O menor escopo possível
    • Para saber mais: Dividir para conquistar
    • Estratégias de teste para a WaveCast
    • Testes de grande escopo?
    • Comunidades de testes
    • Suporte da liderança
    • Qual é a visão da liderança sobre testes?
    • Métricas para guiar a transformação
    • Categorizando incidentes
    • Quais métricas de qualidade você acompanha?
    • Integrando Q&As no processo
    • Faça como eu fiz: Estratégia de testes
  14. Testando sistemas legados

    • Desafios de um sistema legado
    • Sistema legado e boas práticas de teste
    • Teste primeiro, refatore depois
    • Para saber mais: Métodos estáticos e testabilidade
    • Entendendo a dor real
    • Simulando chamadas de rede no Adopet
    • Definindo um plano
    • Dores do sistema legado
    • Pare o sangramento!
    • Testando novas funcionalidades do CodeChella
    • Aponte
    • Medindo o progresso
    • Qual o primeiro passo?
    • Faça como eu fiz: Testando legado
  15. Além dos testes automatizados

    • Testes automatizados são só o começo
    • Ferramentas de análise estática
    • Análise estática no Calmaria Spa
    • Para saber mais: Análise estática
    • Prática de monitoramento
    • Para saber mais: Monitoramento
    • Práticas e ferramentas de monitoramento
    • Feature flags e deployment parcial
    • Feature flags na estratégia de testes
    • Feature flags no Clickbonus
    • Gerenciamento de incidentes
    • Para saber mais: Rollback em deploy
    • Você gerencia incidentes?
    • Testes de resiliência e caos
    • Seu time faz testes de resiliência?
    • Faça como eu fiz: além dos testes

Descubra se esse curso é pra você! Leia as primeiras aulas

Comece essa formação agora mesmo e capacite-se para seu próximo projeto!

Conheça os planos
Escola

Programação

Mergulhe no universo back-end. Programe nas principais plataformas e linguagens, como Python Node.JS, PHP, Java e .NET. Crie sistemas web e desenhe a arquitetura de soluções inovadoras, com código e boas práticas.

Conheça a escola

Pessoas estudando esse curso nesse mês:

Estude com elas

e mais 282 pessoas

Faça parte da nossa comunidade no discord!

Troque conhecimentos com a comunidade da Alura

Mais tempo para a sua evolução, na velocidade do mercado. Comece hoje e aproveite por 2 anos.

Conheça os Planos para Empresas