Legibilidade
de código não é perfumaria
Alessandra Kajihara
e Ariane Izac
CONTEXTO
● Piloto de Automação de Testes
● Objetivo: Evoluir a qualidade e cobertura de testes
● Maiores Dificuldades
○ Legibilidade do código
○ Construções complexas
○ Propósito do teste
○ Asserts incoerentes / ausência de asserts
○ Falsos positivos: Riscos na entrega
“Decifrar menos. Criar mais”
E o que é legibilidade?
LEGIBILIDADE
● Facilidade de leitura e entendimento
● Bem estruturado/formatado
● Minimizar margem para falsos positivos
● Fácil manutenção
1. Convenção de Nome
● Padrões utilizado no Java
○ Camelcase
● Para o nome do teste, considere:
○ Claro, curto e objetivo
● Importante
○ Time alinhado com a convenção
● Métodos muito grandes
○ Tornam-se complexos
○ Dificultam entendimento
● Reuso de código
○ Encapsulamento
○ Facilita manutenção
2. Atenção com
Métodos
Original
Refatorado
Encapsulamento
● Definição de domínios
● Facilita a leitura dos testes
● Enum próprio para o teste
3. Uso de Enums
Enum
4. Data Driven Testing
○ O que é Data Driven?
■ Testes orientados a dados
■ Uso de matrizes (tabela-verdade)
○ Quando utilizar
■ Vários testes com o mesmo fluxo e
dados diferentes de entrada e/ou saída
○ Como?
5. Uso de DSL
● O que é DSL?
○ Domain Specific Language: Linguagem de
domínio específico
○ Pequenas Linguagens - Resolve um problema
específico
○ Camada de abstração
● Tipos de DSL
○ DSL Interna: Utiliza linguagem host
○ DSL Externa: Utiliza uma outranova
linguagem para atender o domínio
● Quando utilizar?
○ Casos complexos
○ Casos com muito reuso de código
● Como utilizar?
○ Linguagem de negócio
○ Encapsulamento do método
● Vantagens
○ Facilita o entendimento do código - Intuitivo
○ Aumenta a produtividade - manutenção
5. Uso de DSL
Estrutura DSL
E pra fechar...
● Legibilidade não é perfumaria
● Facilita entendimento
● Facilita a manutenção
● Deixa seu código limpo
● Adotar padrões ou diretrizes
○ Linguagem
○ Time
“Test code is just as
important as production
code…”
Robert C. Martin - Clean Code
Analista de Testes
Há 12 anos
Ariane Izac
Matera Systems
Há 7 anos
Blogueira
Grupo no LinkedIN
Diário de uma Paixão:
Teste de Software
CONTATOS
Linkedin: Ariane Izac Email: afizac@gmail.com Twitter: @arianizac
Legibilidade de código não é perfumaria

Legibilidade de código não é perfumaria

  • 1.
  • 2.
  • 3.
    CONTEXTO ● Piloto deAutomação de Testes ● Objetivo: Evoluir a qualidade e cobertura de testes ● Maiores Dificuldades ○ Legibilidade do código ○ Construções complexas ○ Propósito do teste ○ Asserts incoerentes / ausência de asserts ○ Falsos positivos: Riscos na entrega
  • 4.
  • 5.
    E o queé legibilidade?
  • 6.
    LEGIBILIDADE ● Facilidade deleitura e entendimento ● Bem estruturado/formatado ● Minimizar margem para falsos positivos ● Fácil manutenção
  • 7.
    1. Convenção deNome ● Padrões utilizado no Java ○ Camelcase ● Para o nome do teste, considere: ○ Claro, curto e objetivo ● Importante ○ Time alinhado com a convenção
  • 8.
    ● Métodos muitograndes ○ Tornam-se complexos ○ Dificultam entendimento ● Reuso de código ○ Encapsulamento ○ Facilita manutenção 2. Atenção com Métodos
  • 9.
  • 10.
  • 11.
  • 12.
    ● Definição dedomínios ● Facilita a leitura dos testes ● Enum próprio para o teste 3. Uso de Enums
  • 13.
  • 14.
    4. Data DrivenTesting ○ O que é Data Driven? ■ Testes orientados a dados ■ Uso de matrizes (tabela-verdade) ○ Quando utilizar ■ Vários testes com o mesmo fluxo e dados diferentes de entrada e/ou saída ○ Como?
  • 18.
    5. Uso deDSL ● O que é DSL? ○ Domain Specific Language: Linguagem de domínio específico ○ Pequenas Linguagens - Resolve um problema específico ○ Camada de abstração ● Tipos de DSL ○ DSL Interna: Utiliza linguagem host ○ DSL Externa: Utiliza uma outranova linguagem para atender o domínio
  • 19.
    ● Quando utilizar? ○Casos complexos ○ Casos com muito reuso de código ● Como utilizar? ○ Linguagem de negócio ○ Encapsulamento do método ● Vantagens ○ Facilita o entendimento do código - Intuitivo ○ Aumenta a produtividade - manutenção 5. Uso de DSL
  • 22.
  • 23.
    E pra fechar... ●Legibilidade não é perfumaria ● Facilita entendimento ● Facilita a manutenção ● Deixa seu código limpo ● Adotar padrões ou diretrizes ○ Linguagem ○ Time
  • 24.
    “Test code isjust as important as production code…” Robert C. Martin - Clean Code
  • 25.
    Analista de Testes Há12 anos Ariane Izac Matera Systems Há 7 anos Blogueira Grupo no LinkedIN Diário de uma Paixão: Teste de Software CONTATOS Linkedin: Ariane Izac Email: afizac@gmail.com Twitter: @arianizac