Como os testes estão ligados com o seu dia-a-dia?

Desenvolvedor na

e aluno da pós-graduação em Métodos Ágeis na

Lucas Tagliani Aguiar

Title Text

"não dá tempo"

"testes são muito caros"

"meu caso é muito específico"

"o que são testes automatizados?"

Motivador: debate entre usar e não usar TDD

Tipos, categorias e práticas sobre testes...

  • Testes unitários
  • Testes de integração
  • Testes de componentes
  • Testes de contratos
  • Testes ponta a ponta
  • Testes positivo-negativo
  • Testes funcional
  • Testes de interface
  • Testes de performance
  • Testes de volume
  • Testes de carga
  • Testes de estresse
  • Testes de segurança
  • Test Driven Development (TDD)
  • Testes A/B
  • Testes de aceitação
  • Testes de usabilidade

Teste de exploração

Teste de avaliação

Teste de validação

Teste de comparação

Teste de laboratório

Teste caixa preta

Testes unitários

Testa uma unidade de código isoladamente e de forma independente.

 

Maiores benefícios: errar rápido e segurança em manutenções.

 

Ferramentas: frameworks como

NUnit / Fluent Assertions (C#)

e JUnit / Mockito (Java).

Testes integrados

 

Testa se a comunicação entre as camadas (controller, serviços, dados...) do software está funcionando.

Não testa regra de negócio!

 

Use setUp() e cleanUp()!

 

Ferramentas: frameworks como

NUnit / Fluent Assertions (C#)

e JUnit / Mockito (Java).

Testes funcionais

 

Testa a interface do sistema através de comportamentos que um usuário poderia ter.

Super indicado pra quem utiliza fluxos longos de cadastro e/ou muitas funcionalidades no front-end.

 

Ferramenta: Selenium

Testes funcionais (exemplo)

Testes de usabilidade

 

Testa o uso de um sistema, produto ou serviço através de análise de comportamento.

Importante principalmente para ideias inovadoras.

 

Filmar o comportamento, reações, dúvidas e até o movimento do mouse podem ser boas práticas.

Testes de performance

 

Testa a capacidade (resposta, disponibilidade, robustez) de um sistema.

Tipos: carga, estresse, resistência e subida rápida.

 

Se eu fizer 1000 requisições simultâneas pra esse serviço, ele consegue me retornar? Em quanto tempo?

 

Ferramenta: Apache JMeter

Eu amo testes automatizados porque...

 

  • Desenvolvimento: agiliza muito a forma como eu recebo feedback do código que estou produzindo, sem precisar subir a aplicação.

 

 

  • Minimiza erros: com testes eu geralmente vejo mais cenários possíveis do que quando eu codifico sem desenvolver testes.

Eu amo testes automatizados porque...

 

  • Segurança: quando eu faço uma alteração grande no código, é fácil descobrir se eu estraguei alguma outra parte ou não.

 

 

  • Regras: quando eu preciso ver uma regra de negócio do sistema e não tenho documentação atualizada, eu olho os testes ao invés de olhar o código.

LETS CODE!

Test Driven Development (TDD)

Behavior Driven Development (BDD)

Ferramentas

Obrigado!

Made with Slides.com