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

Desenvolvendo Software de Qualidade (PHPeetup)

Desenvolvendo Software de Qualidade (PHPeetup)

Você deixa seu usuário feliz? Não!? Talvez!?

Minha ideia com essa talk é mostrar a importância da fase de levantamento de requisitos e como ela impacta no que está sendo desenvolvido. Falaremos sobre User Stories, BDD (Behavior Driven Development), obviedade, etc.

Jonata Weber

May 23, 2016
Tweet

More Decks by Jonata Weber

Other Decks in Programming

Transcript

  1. Desenvolvendo Software de Qualidade Por Jonata Weber

  2. 1. Qualidade funcional 2. Qualidade estrutural 3. Qualidade de processo

  3. 1. Qualidade funcional 2. Qualidade estrutural 3. Qualidade de processo

  4. O que é um software de qualidade?

  5. 1. Eficiente 2. Escalável 3. Confiável

  6. None
  7. É o que deixa seu usuário feliz! Resumindo

  8. Qualidade de software começa na especificação! – Rafael Helm

  9. Desenvolver software sem especificação.

  10. O que é especificação de software? É a definição do

    que se espera que um programa de computador faça.
  11. None
  12. None
  13. Prezado, Preciso que você desenvolva uma tela no sistema que

    permite consultar em tempo real quantas cervejas foram vendidas por cada representante. Atenciosamente, Seu Chefe!
  14. Mockup #1

  15. "Não era bem isso que eu queria..."

  16. O QUE + QUEM + PORQUÊ Preciso que você desenvolva

    uma tela no sistema que permite consultar em tempo real quantas cervejas foram vendidas por cada representante, pois assim os coordenadores de vendas poderão acompanhar com facilidade numa televisão de 42” – recém instalada na parede da sala da coordenação – e assim parabenizá- los no final do dia.
  17. Mockup #2

  18. None
  19. Cuidado com a "obviedade" "A vaca dá leite?"

  20. None
  21. Saber apenas "o que fazer" não é suficiente! QUEM? O

    QUE? POR QUÊ?
  22. Histórias de Usuário User Stories, em inglês.

  23. SENDO… POSSO… PARA QUE… SENDO um vendedor que realiza 50

    visitas por dia POSSO consultar as últimas compras de cada cliente PARA QUE ao chegar no cliente eu possa consultar qual foi sua última compra, e assim conseguir negociar com ele estando melhor informado.
  24. Por que escrever histórias de usuário? Facilitar a comunicação e

    o entendimento entre o cliente e a equipe de desenvolvimento.
  25. O QUE, QUEM e PORQUÊ são suficientes?

  26. Critérios de Aceitação É o "como" seu software deve se

    comportar
  27. SENDO… POSSO… PARA QUE… SENDO um vendedor que realiza 50

    visitas por dia POSSO consultar as últimas compras de cada cliente PARA QUE ao chegar no cliente eu possa consultar qual foi sua última compra, e assim conseguir negociar com ele estando melhor informado.
  28. #1 Em forma de bullets! • Deve ser capaz de

    exibir as últimas três compras quando não tiver conexão com a internet; • Deve armazenar as últimas três compras dos clientes quando não tiver conexão com a internet; • Deve possibilitar no máximo 2 cliques para acessar as últimas compras do cliente; • Deve funcionar muito bem nos tablets e smartphones.
  29. BDD Behavior Driven Development Criado em 2003 por Dan North

  30. DADO QUE estou com internet QUANDO acesso as últimas compras

    do cliente ENTÃO é mostrado uma tabela em ordem decrescente pela data da compra. Cenário: Acessar as últimas compras, com internet.
  31. DADO QUE estou sem internet QUANDO acesso as últimas compras

    do cliente ENTÃO é mostrado uma tabela com as "3" últimas compras do cliente a partir da última atualização E em ordem decrescente pela data da compra. Cenário: Acessar as últimas compras, sem internet.
  32. DADO QUE estou no smartphone/tablet E sem conexão com a

    internet QUANDO conecto na internet ENTÃO é realizada uma atualização automática das "3" últimas compras de todos os clientes E armazenada no dispositivo. Cenário: Atualizar as últimas compras.
  33. Como fazer boas histórias? Conceito INVEST

  34. Independent Negotiable Valuable Estimable Small Testable

  35. (

  36. "Os 5 Porquês" Análise da causa raiz

  37. "Os clientes estão reclamando muito dos atrasos nas entregas". 1.

    Por que há atrasos nas entregas? Porque o produto nunca sai da fábrica no momento que deveria. 2. Por que o produto não sai da fábrica quando deveria? Porque as ordens de produção atrasam. 3. Por que as ordens de produção atrasam? Porque o cálculo das horas de produção sempre fica menor do que a realidade. 4. Por que o cálculo das horas sempre fica menor do que a realidade? Porque estamos usando um software ultrapassado. 5. Por que estamos usando um software ultrapassado? Porque o engenheiro responsável ainda não recebeu treinamento no software mais atual. 6. Por que o engenheiro ainda não recebeu o treinamento no software mais atual? Porque não há um planejamento adequado no processo de capacitação e treinamento.
  38. Por qual motivo são 5 porquês? • No 1º porquê,

    temos um sintoma • No 2º porquê, temos uma desculpa • No 3º porquê, temos um culpado • No 4º porquê, temos uma causa • No 5º porquê, temos a causa raiz
  39. "Na raiz de todo problema que parece técnico quase sempre

    há uma problemática humana". Eric Ries, Startup Enxuta
  40. )

  41. Como testar as Histórias de Usuário? Antes responder...

  42. Casos de testes precisam responder... • Qual o cenário do

    meu teste? • Quais as restrições de execução? • Quais os valores de entrada? • Qual o resultado ou comportamento esperado?
  43. Cenário: Estoque disponível. DADO QUE o estoque da coca-cola é

    de 50 unidades QUANDO informo uma venda de 40 unidades ENTÃO a venda é registrada E o estoque passa a ser de 10 unidades BDD responde tudo isso!
  44. Cenário: Estoque indisponível. DADO QUE o estoque da coca-cola é

    de 50 unidades QUANDO informo uma venda de 60 unidades ENTÃO a venda não é registrada E é exibida na tela a mensagem "estoque insuficiente!" BDD responde tudo isso!
  45. Let's code!

  46. http://www.wildtech.com.br/historias-de-usuario/

  47. python + pytest + lettuce Baixe aqui todo o material

    https://github.com/jonataa/exemplos-bdd-python
  48. Obrigado! [email protected] Perguntas?

  49. Referências • Histórias de Usuário (User Stories) ◦ eBook -

    http://wildtech.com.br/historias-de-usuario/ ◦ INVEST and SMART - http://xp123.com/2003/08/17/invest-in-good-stories-and-smart-tasks/ • Testes de Software ◦ http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-software/8035 • TDD ◦ XP - http://desenvolvimentoagil.com.br/xp • BDD ◦ Blog do Criador - http://dannorth.net/introducing-bdd/ ◦ Python + Lettuce - http://lettuce.it