Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automatizar Testes não é suficiente!

Automatizar Testes não é suficiente!

Descrição: Testes automatizados sem dúvida são uma parte importante dentro do desenvolvimento de software mas não são o suficiente para garantir a qualidade das nossas entregas. Nessa talk vamos refletir primeiro sobre o que é qualidade de software, já que não dá pra dizer que garantimos qualidade sem antes definir o que qualidade é, parece óbvio mas na prática é um pouco mais complicado. Vamos passar por conceitos conhecidos como pirâmide de testes e ver como ir além dessa visão na busca por software de qualidade que atende às necessidades dos nossos clientes.
Principais Tópicos:
- Como definir qualidade de software?
- Porque a visão de pirâmide de testes não é suficiente
- Tipos de Testes e Boas Práticas
- Pensando em Qualidade baseado em atributos.
Repositório com as referências: https://github.com/samycici/palestras/tree/master/front-in-sampa

Samanta Cicilia

July 18, 2020
Tweet

More Decks by Samanta Cicilia

Other Decks in Technology

Transcript

  1. "O maior risco para qualquer esforço de software é você

    acabar criando algo que não é útil. Quanto mais cedo e mais frequentemente você entrega software para usuários reais, mais rápido você obtém feedback para descobrir o quanto ele é realmente valioso." - Martin Fowler @samantacicilia
  2. Testes? Unitários: funções testadas isoladamente, são testes mais rápidos e

    mais confiáveis já que o escopo é bem reduzido. Normalmente são utilizados dublês para substituir integrações. Integração: combina componentes para garantir que a comunicação entre eles atende aos requisitos estabelecidos. Aqui os testes começam a ficar mais dependentes. Contrato: validar se o contrato estabelecido entre um consumidor e provedor está sendo respeitado, e se não, alertar essa diferança antes da alteração chegar em produção. @samantacicilia
  3. Testes? End-to-End: responsável pro validar os fluxos literalmente de uma

    ponta a outra para garantir que todo o ambiente atende aos requisitos. Regressão Visual: testes que, de forma automatizada, expõe qualquer alteração visual em comparação com um baseline. Sistema: testa o sistema já completamente integrado e pode ter como objetivo validar os requisitos funcionais e não funcionais. @samantacicilia
  4. Testes? Mutação: altera o código em tempo de execução e

    espera que os testes falhem, mostrando que os mesmos são efetivos. Performance: avaliar capacidade de resposta, robustez, disponibilidade, confiabilidade e escalabilidade. Chaos: introduzir falhas na sua infraestrutura para observar como ela se recupera e antecipar possíveis problemas. @samantacicilia
  5. E depois que vai para produção? Monitoramento Monitoramento Smoke Test

    Monitoramento Monitoramento Monitoramento Monitoramento Smoke Test Monitoramento Monitoramento Monitoramento Monitoramento Smoke Test Monitoramento Monitoramento @samantacicilia
  6. Boas Práticas State Test ou Interaction Test? Testar integrado com

    terceiros? Dublês de Teste? DRY ou DAMP? @samantacicilia
  7. CI & CD Integração Contínua: integrar continuamente as mudanças que

    serão verificadas por um build automatizado para detectar erros o mais rápido possível. Entrega Contínua: montagem contínua de versões candidatas, seguida pela promoção e testes das mesmas numa série de ambientes até chegar em produção. @samantacicilia
  8. Atributos de Qualidade Manutenibilidade Segurança Acessibilidade Usabilidade Disponibilidade Internacionalização Confiabilidade

    Requerimentos Legais Estabilidade Observabilidade Resiliência Compatibilidade @samantacicilia
  9. Qualidade é uma característica percebida, feita de expectativas do usuário

    (coisa que você não controla) Samanta Cicilia @samantacicilia