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

Desenvolvendo Software de Qualidade

Jonata Weber
September 08, 2015

Desenvolvendo Software de Qualidade

Apresentação realizada na UEFS durante a disciplina de Análise.

Jonata Weber

September 08, 2015
Tweet

More Decks by Jonata Weber

Other Decks in Technology

Transcript

  1. Desenvolvendo Software de Qualidade Por Jonata Weber

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

  3. O que é um software de qualidade?

  4. É o que deixa seu usuário feliz!

  5. O que é especificação de software?

  6. None
  7. Desenvolver software sem especificação.

  8. None
  9. None
  10. 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!
  11. Mockup #1

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

  13. 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.
  14. Mockup #2

  15. None
  16. Cuidado com a "obviedade" "A vaca dá leite?"

  17. Saber apenas "o que fazer" não é suficiente! QUEM? O

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

  19. 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.
  20. Por que escrever histórias de usuário? Facilitar a comunicação e

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

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

    comportar
  23. Em forma de bullets! • Deve ser capaz de exibir

    as últimas três compras quando não tiver conexão com a internet; • Deve baixar 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.
  24. BDD Behavior Driven Development Criado em 2003 por Dan North

  25. 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.
  26. 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.
  27. 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.
  28. Como fazer boas histórias? Conceito INVEST

  29. Independent Negotiable Valuable Estimable Small Testable

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

  31. Papel do Testador vs Função Testar Há diferenças?

  32. Testador precisa saber programar? O que vocês acham?

  33. Programador precisa saber testar? E agora?

  34. O que é Teste de Software? É um processo de

    execução de um produto para determinar se ele atingiu suas especificações.
  35. Objetivo do Teste de Software Previnir e revelar falhas de

    um produto
  36. Testes garantem um sistema sem falhas? Não!! A ideia é

    minimizar o máximo possível.
  37. Possíveis Falhas • A especificação está errada ou incompleta •

    O desenvolvedor interpretou/implementou a especificação de maneira equivocada • O ambiente do usuário não é compatível com o software
  38. "Na minha máquina funciona"

  39. (

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

  41. 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
  42. "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.
  43. "Na raiz de todo problema que parece técnico quase sempre

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

  45. O que é um Caso de Teste? "Descreve uma condição

    particular a ser testada e é composto por valores, restrições para a sua execução e um resultado ou comportamento esperado".
  46. 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?
  47. 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!
  48. 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!
  49. TDD Test Driven Development Desenvolvimento guiado por testes

  50. O "mantra" do TDD!

  51. Pequenos Ciclos de Repetição Famoso "baby-steps"

  52. Princípio KISS Keep It Simple, Stupid

  53. Por que muitos não praticam? Quais as desculpas para isso?

  54. #1 Dificuldade em Começar

  55. #2 Curva de Aprendizado

  56. #3 Tempo

  57. #4 Cultura

  58. Benefícios O que aprendemos com a prática do TDD

  59. #1 Qualidade de Código

  60. #2 Raciocínio

  61. #3 Segurança

  62. #4 Trabalho em Equipe

  63. #5 Documentação

  64. Let's code!

  65. python + pytest Introduction to pytest https://www.youtube.com/watch?v=LdVJj65ikRY

  66. 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 Cenário #1: Estoque disponível
  67. 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!" Cenário #2: Estoque indisponível
  68. Lettuce Python + BDD

  69. Baixe aqui todo o material https://github.com/jonataa/exemplos-bdd-python

  70. 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
  71. Obrigado! [email protected] Perguntas?

  72. Bônus

  73. Integração Contínua Continuous Integration, em inglês.

  74. None
  75. None
  76. None
  77. Obrigado! [email protected] Perguntas?