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.

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