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

DevPira - Qualidade de Software & Cultura DevOps

DevPira - Qualidade de Software & Cultura DevOps

Palestra apresentada no evento https://devpira.com.br/
“O que é qualidade de software” é uma questão que pode ser respondida de várias maneiras. Algumas pessoas citarão testes automatizados, outras falarão sobre software sem bugs ou entregas frequentes. Mas você já parou para pensar sobre o que a qualidade do software realmente significa em seu projeto atual? Você já pensou em qual estratégia deve seguir para alcançar a satisfação do usuário? É claro que a funcionalidade "funcional" é muito importante, mas o que é mais? Quais outros recursos são importantes? Acessibilidade, compatibilidade, escala? Vamos falar sobre a visão da qualidade como um conjunto de componentes que agrega valor ao usuário final e como isso influencia a cultura DevOps.

Avatar for Samanta Cicilia

Samanta Cicilia

December 05, 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. Estratégia de Testes Testes Pequenos: executados em um único processo,

    sem uso de componentes externos, threads ou paralelismo. São testes rápidos e determinísticos Testes Médios: executam múltiplos processos mas ainda assim sem acessar componentes externos, podem usar threads e fazer chamadas externas (como chamadas de rede) para o localhost. Testes Grandes: esses testes são os que necessitam de uma maior complexidade para execução, nesse momento os sistemas já estão integrados. São mais lentos e menos determinísticos. @samantacicilia
  6. 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
  7. Boas Práticas State Test ou Interaction Test? Testar integrado com

    terceiros? Dublês de Teste? DRY ou DAMP? @samantacicilia
  8. 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
  9. Atributos de Qualidade Manutenibilidade Segurança Acessibilidade Usabilidade Disponibilidade Internacionalização Confiabilidade

    Requerimentos Legais Estabilidade Observabilidade Resiliência Compatibilidade @samantacicilia
  10. Testabilidade @samantacicilia 1 2 3 Logs Monitoramento Analytics 7 Arquitetura

    5 Fronteiras 6 Setup de Ambiente 4 Decomposição
  11. @samantacicilia Habilitar Entrega Contínua gera valor, mesmo que você não

    disponibilize todas essas mudanças para o cliente final
  12. Qualidade é uma característica percebida, feita de expectativas do usuário

    (coisa que você não controla) Samanta Cicilia @samantacicilia
  13. Referências - Testes de Mutação: https://youtu.be/TIiVYhoEB8o - Desenvolvendo uma Estratégia

    de Testes: https://youtu.be/CtvChJbDGOM - Triângulo de Testes Não Mais: https://youtu.be/QSZYrVLcfto - Abordagem de Testes: https://medium.com/assertqualityassurance/abordagem-de-testes- 212b6238f0c3 - Os arquétipos do QA: https://medium.com/assertqualityassurance/os- arqu%C3%A9tipos-do-qa-90538e018ebe @samantacicilia