Menos Teste e Mais Qualidade:
Como equilibrar essa equação?
Sobre o Palestrante

• Igor Abade (@igorabade)
  – Microsoft MVP, Visual Studio ALM
  – Referência nacional em
    Team Foundation Server (TFS)
• Sócio-diretor da Lambda3
  – Consultoria ALM/TFS,
    Agilidade/Scrum, Arquitetura
  – Desenvolvimento de Sistemas
  – Treinamentos
  – Parceira Microsoft Gold ALM
Menos teste, maisMenos Teste, Mais Qualidade
                  qualidade




             Como equilibrar a equação?
Menos teste?!?!

• Teste custa caro                    Não tenho orçamento
                                      para montar um time
  – Novos times                             de testes
  – Maior tempo de
    projeto
• Desenvolvedores     Testes de unidade? Sem
                      chance! Meu cliente não
  sempre testaram     vai pagar para meu time
                        trabalhar dobrado!
• “Sempre entreguei
  meus projetos”                        No final meu cliente vai
• Afinal, preciso                        testar tudo de novo
                                               mesmo...
  mesmo testar?
Por que testar software?

Bugs em software custam à
economia dos EUA um valor
estimado de US$ 59,5 bilhões [1]

                                         Na média, desenvolvedores profissionais
                                         cometem de 15 a 50 erros a cada mil linhas
                                         de código que eles escrevem [2]



Em 2009, projetos cancelados custaram
US$ 67 bilhões; atrasos em outros projetos
custaram mais US$ 21 bilhões [3]


                                   [1] http://web.archive.org/web/20090610052743/http://www.nist.gov/public_affairs/releases/n02-10.htm
                                   [2] Code Complete, 2nd Edition - http://cc2e.com/
                                   [3] Standish Group, “The Chaos Report”- http://www.standishgroup.com/newsroom/chaos_2009.php
Por que testar? Exemplos práticos
• USS Yorktown, SmartShip
    – Tripulante digitou 0 num campo de um
      formulário
    – “Divide By Zero” desligou a propulsão
    – Parado na água por 2h45min
• Ariane 5, vôo 501
    – Reaproveitou código do Ariane 4, mas seguiu
      caminho diferente devido a mudanças
    – Conversão de 64bit para 16bit causou overflow
    – Sem tratamento de exceções (melhor
      desempenho)
• F-22 Raptor
    – Em operação no Japão pela primeira vez
    – Cruzou Linha Internacional de Data.
      Computadores travaram
    – Tempo bom permitiu seguir os petroleiros ao
      Havaí
Controle de Qualidade de Software
Controle de Qualidade de Software

• Teste é só um dos
  aspectos
• Envolve processo de
  desenvolvimento                          Depois
• É preciso garantir             Durante

  qualidade em três      Antes
  momentos:
Controle de Qualidade: Antes

• Tudo começa com processo
  de desenvolvimento
• “Fazer o certo, do jeito certo,
  na hora certa”
  – Desenvolvimento Ágil
  – Gestão de Requisitos
  – Arquitetura / Design
Desenvolvimento Ágil: O Manifesto Ágil


Indivíduos e interação entre eles mais que processos e ferramentas
 Software em funcionamento mais que documentação abrangente
   Colaboração com o cliente mais que negociação de contratos
       Responder a mudanças mais que seguir um plano


               Ou seja, mesmo havendo valor nos
             itens à direita, valorizamos mais os
                        itens à esquerda.

                       www.manifestoagil.com.br
Práticas Ágeis
           Otimizar todo o fluxo
           Foco na otimização de todo o processo
           de negócios
Lean

                     Cultura ágil, mindset e práticas
                     Eliminar desperdício
Agile                Respeitar as pessoas, foco
                     principalmente em P&D


Scrum               Framework de gestão ágil de projetos
                    Papéis e cerimônias, melhoria contínua
                    dos times, entrega rápida, limitar
                    trabalho à capacidade


 XP     Práticas de engenharia
        Trazer qualidade para dentro do desenvolvimento
        – Automação, integração contínua, revisão por
        pares etc.
Scrum

• Iterativo
• Comunicação
• Auto-
  organizado

• Define
  – Papéis
  – Artefatos
  – Eventos
Elementos do Scrum

          Scrum Master

          Product Owner

          Team
Planejamento Ágil no TFS “11”
Gestão de Requisitos: Storyboarding
Arquitetura: Diagrama de Camadas
Controle de Qualidade: Durante

• Qualidade durante
  construção do código
  –   Testes de Unidade
  –   Análise de Código
  –   Automação de Testes
  –   Integração Contínua
• Processo de Testes
  – Testes Manuais
  – Gestão de Laboratório
XP: Extreme Programming
TDD: Test-driven Development
CI: Continuous Integration

• Integração Contínua é
  uma prática
• Integrar código cedo
  e com frequência,
  para evitar
  “Integration Hell"
• Objetivo final é
  “parar e consertar” o
  mais cedo possível
Testes de Unidade
Processo de Testes

Generalista                                                     Especialista
Teste Manual   Poucos scripts   Muitos scripts   Programação    Conhecimento
                                                                avançado de
             Cria scripts       Algum          Desenvolve       programação
     70% dospara configurar
              testes            conhecimento ferramentas
                                 Maioria das rotinas de
     acontecem aqui
             ambiente, criar    de
                                         mira aqui
                                               automação de
             dados              programação    testes


                         Testes de “Caixa Preta”

                                             Testes de “Caixa Branca”

                                                               Testes API
Execução e Automação de Testes

• Microsoft Test Manager
   – Planejamento, gestão e
     execução de casos de
     teste
   – Coleta dados de sistema
     e logs de eventos
   – Captura imagens de tela e
     vídeos
   – Fast-forward para
     aplicativos Windows
     Forms, WPF e Web
Automação de Testes de UI

• CodedUI Tests
  – Gravador de Ações
  – Geração a partir de
    casos de teste
    manuais
  – Scripts resilientes
  – .NET (C#, VB)
  – Windows Forms, WPF,
    Web (IE & Firefox),
    outras plataformas
Gestão de Laboratórios

• Laboratórios
  Virtuais
• Automação de
  Implantação
• Bibliotecas de
  VMs
Microsoft Test Manager
Relatório: Requisitos Implementados
Relatório: Evolução dos Testes
Controle de Qualidade: Depois

• Aplicação em
  produção
  – Detecção de Erros
  – Captura Detalhada
  – Relatórios e Bugs
Teste de Carga

• Geração de Carga
• Testes /
  Monitoramento
  de Servidores
  (Web, SQL…)
• Carga Distribuída
• Usuários
  ilimitados
IntelliTrace: Depuração Histórica
System Center 2012 Operations Manager
• Monitoramento em tempo real de
  aplicações
   – Solução de problemas na sessão do
     usuário
   – Coleta de dados de exceções Javascript
• Monitoração de desempenho a partir da
  perspectiva do browser
   – HTTP, AJAX, JavaScript
• Degradação de Desempenho
   – Tamanho de HTML, imagens, scripts, CSS
   – Latência de rede, desempenho do
     servidor
• Informações Estatísticas
   – Contadores por aplicação, página, IP
   – Tempo médio de execução no cliente,
     falhas/seg, etc.
Intellitrace
Custo dos Bugs


                                Implantação




                                              Custo dos bugs
                  Testes




Desenvolvimento



             Fase do software
MSDN / TechNet
http://msdn.microsoft.com/pt-br/
http://technet.microsoft.com/pt-br/




•   Biblioteca & Artigos Técnicos (do Brasil)
•   Downloads/Galeria (SDKs, Code samples, documentação)
•   Social Network – pergunta um IT Pro
•   Como trabalhar com Microsoft Products
•   TechNet Wiki – voz da experiência e como fazer
•   Learn, learn, learn
@IgorAbade
blog.lambda3.com.br/L3/IgorAbade

Menos teste e mais qualidade - como equilibrar essa equação?

  • 1.
    Menos Teste eMais Qualidade: Como equilibrar essa equação?
  • 2.
    Sobre o Palestrante •Igor Abade (@igorabade) – Microsoft MVP, Visual Studio ALM – Referência nacional em Team Foundation Server (TFS) • Sócio-diretor da Lambda3 – Consultoria ALM/TFS, Agilidade/Scrum, Arquitetura – Desenvolvimento de Sistemas – Treinamentos – Parceira Microsoft Gold ALM
  • 3.
    Menos teste, maisMenosTeste, Mais Qualidade qualidade Como equilibrar a equação?
  • 4.
    Menos teste?!?! • Testecusta caro Não tenho orçamento para montar um time – Novos times de testes – Maior tempo de projeto • Desenvolvedores Testes de unidade? Sem chance! Meu cliente não sempre testaram vai pagar para meu time trabalhar dobrado! • “Sempre entreguei meus projetos” No final meu cliente vai • Afinal, preciso testar tudo de novo mesmo... mesmo testar?
  • 5.
    Por que testarsoftware? Bugs em software custam à economia dos EUA um valor estimado de US$ 59,5 bilhões [1] Na média, desenvolvedores profissionais cometem de 15 a 50 erros a cada mil linhas de código que eles escrevem [2] Em 2009, projetos cancelados custaram US$ 67 bilhões; atrasos em outros projetos custaram mais US$ 21 bilhões [3] [1] http://web.archive.org/web/20090610052743/http://www.nist.gov/public_affairs/releases/n02-10.htm [2] Code Complete, 2nd Edition - http://cc2e.com/ [3] Standish Group, “The Chaos Report”- http://www.standishgroup.com/newsroom/chaos_2009.php
  • 6.
    Por que testar?Exemplos práticos • USS Yorktown, SmartShip – Tripulante digitou 0 num campo de um formulário – “Divide By Zero” desligou a propulsão – Parado na água por 2h45min • Ariane 5, vôo 501 – Reaproveitou código do Ariane 4, mas seguiu caminho diferente devido a mudanças – Conversão de 64bit para 16bit causou overflow – Sem tratamento de exceções (melhor desempenho) • F-22 Raptor – Em operação no Japão pela primeira vez – Cruzou Linha Internacional de Data. Computadores travaram – Tempo bom permitiu seguir os petroleiros ao Havaí
  • 7.
  • 8.
    Controle de Qualidadede Software • Teste é só um dos aspectos • Envolve processo de desenvolvimento Depois • É preciso garantir Durante qualidade em três Antes momentos:
  • 9.
    Controle de Qualidade:Antes • Tudo começa com processo de desenvolvimento • “Fazer o certo, do jeito certo, na hora certa” – Desenvolvimento Ágil – Gestão de Requisitos – Arquitetura / Design
  • 10.
    Desenvolvimento Ágil: OManifesto Ágil Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. www.manifestoagil.com.br
  • 11.
    Práticas Ágeis Otimizar todo o fluxo Foco na otimização de todo o processo de negócios Lean Cultura ágil, mindset e práticas Eliminar desperdício Agile Respeitar as pessoas, foco principalmente em P&D Scrum Framework de gestão ágil de projetos Papéis e cerimônias, melhoria contínua dos times, entrega rápida, limitar trabalho à capacidade XP Práticas de engenharia Trazer qualidade para dentro do desenvolvimento – Automação, integração contínua, revisão por pares etc.
  • 12.
    Scrum • Iterativo • Comunicação •Auto- organizado • Define – Papéis – Artefatos – Eventos
  • 13.
    Elementos do Scrum Scrum Master Product Owner Team
  • 14.
  • 15.
  • 16.
  • 17.
    Controle de Qualidade:Durante • Qualidade durante construção do código – Testes de Unidade – Análise de Código – Automação de Testes – Integração Contínua • Processo de Testes – Testes Manuais – Gestão de Laboratório
  • 18.
  • 19.
  • 20.
    CI: Continuous Integration •Integração Contínua é uma prática • Integrar código cedo e com frequência, para evitar “Integration Hell" • Objetivo final é “parar e consertar” o mais cedo possível
  • 21.
  • 22.
    Processo de Testes Generalista Especialista Teste Manual Poucos scripts Muitos scripts Programação Conhecimento avançado de Cria scripts Algum Desenvolve programação 70% dospara configurar testes conhecimento ferramentas Maioria das rotinas de acontecem aqui ambiente, criar de mira aqui automação de dados programação testes Testes de “Caixa Preta” Testes de “Caixa Branca” Testes API
  • 23.
    Execução e Automaçãode Testes • Microsoft Test Manager – Planejamento, gestão e execução de casos de teste – Coleta dados de sistema e logs de eventos – Captura imagens de tela e vídeos – Fast-forward para aplicativos Windows Forms, WPF e Web
  • 24.
    Automação de Testesde UI • CodedUI Tests – Gravador de Ações – Geração a partir de casos de teste manuais – Scripts resilientes – .NET (C#, VB) – Windows Forms, WPF, Web (IE & Firefox), outras plataformas
  • 25.
    Gestão de Laboratórios •Laboratórios Virtuais • Automação de Implantação • Bibliotecas de VMs
  • 26.
  • 27.
  • 28.
  • 29.
    Controle de Qualidade:Depois • Aplicação em produção – Detecção de Erros – Captura Detalhada – Relatórios e Bugs
  • 30.
    Teste de Carga •Geração de Carga • Testes / Monitoramento de Servidores (Web, SQL…) • Carga Distribuída • Usuários ilimitados
  • 31.
  • 32.
    System Center 2012Operations Manager • Monitoramento em tempo real de aplicações – Solução de problemas na sessão do usuário – Coleta de dados de exceções Javascript • Monitoração de desempenho a partir da perspectiva do browser – HTTP, AJAX, JavaScript • Degradação de Desempenho – Tamanho de HTML, imagens, scripts, CSS – Latência de rede, desempenho do servidor • Informações Estatísticas – Contadores por aplicação, página, IP – Tempo médio de execução no cliente, falhas/seg, etc.
  • 33.
  • 34.
    Custo dos Bugs Implantação Custo dos bugs Testes Desenvolvimento Fase do software
  • 36.
    MSDN / TechNet http://msdn.microsoft.com/pt-br/ http://technet.microsoft.com/pt-br/ • Biblioteca & Artigos Técnicos (do Brasil) • Downloads/Galeria (SDKs, Code samples, documentação) • Social Network – pergunta um IT Pro • Como trabalhar com Microsoft Products • TechNet Wiki – voz da experiência e como fazer • Learn, learn, learn
  • 37.

Notas do Editor

  • #23 It is also important to understand where most testing happens in the spectrum of general testing to the more technical specialist testing.The Generalist Testers are usually professional testers with no coding background. Often these testers are experts in the business process or tool that is being developed. On the opposite side of the spectrum is the Specialist. This is a tester with strong coding skills.A fun side note: Microsoft’s testers are usually converted developers and tend to be on the specialist side of the graph.Black-box testing is a method of testing software that tests the functionality of an application as opposed to its internal structures or workings (see white-box testing). Specific knowledge of the application's code/internal structure and programming knowledge in general is not required. Test cases are built around specifications and requirements, i.e., what the application is supposed to do. It uses external descriptions of the software, including specifications, requirements, and design to derive test cases. These tests can be functional or non-functional, though usually functional. The test designer selects valid and invalid inputs and determines the correct output. There is no knowledge of the test object's internal structure.White-box testing (a.k.a. clear box testing, glass box testing, transparent box testing, or structural testing) is a method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing). An internal perspective of the system, as well as programming skills, are required and used to design test cases. The tester chooses inputs to exercise paths through the code and determine the appropriate outputs. It is analogous to testing nodes in a circuit, e.g. in-circuit testing (ICT). While white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level. It can test paths within a unit, paths between units during integration, and between subsystems during a system level test. Though this method of test design can uncover many errors or problems, it might not detect unimplemented parts of the specification or missing requirements. White-box test design techniques include: Control flow testing Data flow testing Branch testing Path testingAPI testing (application programming interface) – is a specific type of White Box testing of the application focusing on public and private APIs<Question to Audience>Looking at this spectrum, where does most testing happen today? <collect answers and click>Where do most testing tools target today? <collect answers and click>