just java 2006 - qualidade em desenvolvimento java para todos os gostos - daniel wildt
DESCRIPTION
Apresentação realizada no Just Java 2006, mostrando ferramentas de qualidade para ambiente Java EE, Java ME e Java SE.TRANSCRIPT
![Page 1: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/1.jpg)
Qualidade em desenvolvimento Java para todos os gostos
Daniel Wildt – [email protected] – http://www.facensa.com.brFaculdade Cenecista Nossa Senhora dos Anjos
![Page 2: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/2.jpg)
������������ � ������������ ��������� ��������� ������2
Agenda
• Motivações• Criando um ambiente de qualidade e propício a
testes• Técnicas de Teste• Prática!
• Exemplos de ferramentas que podem ser utilizadas nestes processos.
![Page 3: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/3.jpg)
������������ � ������������ ��������� ��������� ������3
Motivações - Histórica
• Por que não testar?• Por que aceitar erros de software como algo do
dia a dia?• Por que não se preocupar com a causa dos
erros, somente com a conseqüência destes?• Por que não querer trabalhar em um ambiente
em melhoria contínua e melhores técnicas de desenvolvimento?
• Por que não querer minimizar custos de manutenção e aumentar a produtividade da equipe?
![Page 4: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/4.jpg)
������������ � ������������ ��������� ��������� ������4
Motivações - Comunicação
![Page 5: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/5.jpg)
������������ � ������������ ��������� ��������� ������5
Motivações – Cultura de Equipe
• Criar cultura de testes• Profissionais com múltiplos papéis são realidade
em muitas empresas de desenvolvimento. Será?• Profissional = Gerente + DBA + Analista +
Programador. �• Testadores e Gestão de Qualidade = Pessoal
do Suporte �• Suporte = Estagiários da empresa �
• Pessoa responsável por assegurar qualidade dos produtos e processos? �
![Page 6: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/6.jpg)
������������ � ������������ ��������� ��������� ������6
Motivações – Testar é trivial
• Testar funcionalidades é sempre igual?• Os riscos são os mesmos?• Os requisitos são os mesmos?• O ambiente é o mesmo?• A qualidade esperada é a mesma?
• Como medir qualidade? Quem determina?• Qualidade, definição do Aurélio: Propriedade,
atributo ou condição das coisas ou das pessoas, que as distingue das outras e lhes determina a natureza.
![Page 7: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/7.jpg)
������������ � ������������ ��������� ��������� ������7
Motivações - Agile
• Manifesto Ágil (http://www.agilemanifesto.org):• “Estamos evidenciando maneiras melhores de
desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar:• Interação entre pessoas 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 tendo valor os itens à direita,
valorizamos mais os itens à esquerda.”
![Page 8: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/8.jpg)
������������ � ������������ ��������� ��������� ������8
Motivações - Agile
• Alguns princípios do manifesto:• A medida primária de um projeto é software em
funcionamento• Em intervalos regulares o time vai refletir sobre como
se tornar mais efetivo (+ qualidade + produtividade)• Pessoal de negócio e desenvolvimento devem
trabalhar unidos.• Construa projetos com profissionais motivados. Dê
aos profissionais o ambiente necessário e dê suporte as necessidades da equipe. Principalmente, confie na equipe para ter o trabalho realizado.
• Maior prioridade é a satisfação do cliente e a entrega contínua de software de valor agregado.
• Mais em: http://www.agilemanifesto.org/principles.html
![Page 9: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/9.jpg)
������������ � ������������ ��������� ��������� ������9
Motivações - Agile
• ISO 9001 - Estabelece o conjunto de ações preventivas necessárias para garantir a qualidade de um produto após as fases de projeto, desenvolvimento, produção, instalação e serviços associados
• É um Sistema para Garantia da Qualidade: Um Sistema de Garantia da Qualidade é um conjunto planejado de atividades, que se adiciona ao processo natural de fornecimento de um dado produto, com o objetivo de reduzir o risco de falhas.
![Page 10: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/10.jpg)
������������ � ������������ ��������� ��������� ������10
Motivações – Agile
• CONCLUSÃO: Ser ágil não significa ser displicente!• A qualidade é uma métrica constante! É necessária!• Características importantes:
• Foco nas necessidades do cliente (resultado!)• Liderança (comunicação!)• Envolvimento das pessoas (pró atividade!)• Melhoria contínua• Tomada de decisão baseada em análise de dados e
informações (controle!)• Todas estas características fazem parte dos princípios
da qualidade, existente na ISO 9000:2000
![Page 11: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/11.jpg)
������������ � ������������ ��������� ��������� ������11
Criando um ambiente de qualidade e propício a testes
• Permitir o conhecimento coletivo • Collective Knowledge diferente de Collective
Code Ownership (prática XP)• Uso de uma ferramenta de WIKI
• Padronizações: • Código – Padrões de cada linguagem• Plano de testes
• Boas práticas de Desenvolvimento• Orientação a Objetos• Padrões de Projeto
![Page 12: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/12.jpg)
������������ � ������������ ��������� ��������� ������12
Criando um ambiente de qualidade e propício a testes
• Os profissionais devem:• Enfrentar/criar ciclos de melhoria contínua
(PDCA – Plan/Do/Check/Act)• Cultura “test infected”. �• Entender a importância da automação de
testes e o seu impacto na evolução de sistemas e melhoria da qualidade.
• Equipe integrada (Business and Development)• Permitir o uso da criatividade da equipe!
![Page 13: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/13.jpg)
������������ � ������������ ��������� ��������� ������13
Criando um ambiente de qualidade e propício a testes
• Atitudes:• Todas atividades no desenvolvimento de
software são construtivas. Testar é uma atividade destrutiva!
• Pense de forma negativa quando estiver criando planos de teste ou explorando o software!
• Explore funcionalidades, pense no que não foi pensado!
• Busque as ferramentas certas para cada tipo de teste!
![Page 14: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/14.jpg)
������������ � ������������ ��������� ��������� ������14
Técnicas de Teste
• Qual o objetivo de testar/validar um software?• A atividade de teste não pode indicar a
ausência de erros.• Desenvolvedores trabalham para terminar a
tarefa e verificar a ausência de erros. A atividade de testes deve verificar a existência de erros.
• Um teste bem sucedido apresenta um erro ainda não descoberto.
![Page 15: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/15.jpg)
������������ � ������������ ��������� ��������� ������15
Técnicas de Teste
• Qual o objetivo de testar/validar um software?• Os planos de teste e execução são entradas
para a criação de métricas que podem guiar a medição da qualidade do software e sugerir processos de melhoria.
• Se testa para identificar se um software possui defeitos e identificar se o software estáde acordo com a especificação. [KOSCIANSKI, 2006]
![Page 16: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/16.jpg)
������������ � ������������ ��������� ��������� ������16
Técnicas de Teste
• Testes Exploratórios [Tinkham, 2003]• Testador não possui um plano formal sobre o
que deve testar. • A criatividade é necessária• O testador imagina uma situação a ser
verificada e aplica testes buscando comprovar um possível erro.
• Medição e controle necessários para manter quando e o que se testa usando esta técnica.
![Page 17: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/17.jpg)
������������ � ������������ ��������� ��������� ������17
Técnicas de Teste
• Caixa Branca (White Box) ou Testes de Unidade• No caso de metodologias ágeis como
eXtreme Programming, a prática é TestDriven Development (TDD) [Beck, 2005], onde o teste é criado antes do código em questão
• Nesta situação o plano de teste evolui junto com o desenvolvimento da funcionalidade.
• Ideal ter uma ferramenta para medir cobertura de testes, para guiar o processo de desenvolvimento
![Page 18: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/18.jpg)
������������ � ������������ ��������� ��������� ������18
Técnicas de Teste
• Caixa Branca (White Box) ou Testes de Unidade• JUnit• J2ME Unit• Emma• Borland
OptimizeIT
![Page 19: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/19.jpg)
������������ � ������������ ��������� ��������� ������19
Técnicas de Teste
• Caixa Branca (White Box) ou Testes de Unidade• JUnit• J2ME Unit• Emma• Borland
OptimizeIT
![Page 20: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/20.jpg)
������������ � ������������ ��������� ��������� ������20
Técnicas de Teste
�����
![Page 21: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/21.jpg)
������������ � ������������ ��������� ��������� ������21
Técnicas de Teste
• Caixa Preta (Black Box) ou Testes Funcionais• Baseado nos requisitos funcionais do
software, baseado na expectativa do cliente• Operador concentrado nas ações que o
software deve realizar• Útil para encontrar problemas como
[Koscianski 2006]:• Funções incorretas ou omitidas;• Erros de interface;• Erros de comportamento ou desempenho;• Erros de iniciação e término.
![Page 22: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/22.jpg)
������������ � ������������ ��������� ��������� ������22
Técnicas de Teste
• Caixa Preta (Black Box) ou Testes Funcionais• Borland SilkTest
• Java• Mainframe• Desktop• Mobile• Web• BD• Entre
outrasopções
![Page 23: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/23.jpg)
������������ � ������������ ��������� ��������� ������23
Técnicas de Teste
• Caixa PretaSelenium IDE
![Page 24: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/24.jpg)
������������ � ������������ ��������� ��������� ������24
Técnicas de Teste
• Caixa Preta• Desktop?
• JUnit pode ser utilizado para montar testes de caixa preta
• UISpec4J• SwingUnit
• Mobile?• J2MEUnit pode ser utilizado para montar testes de
caixa preta
![Page 25: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/25.jpg)
������������ � ������������ ��������� ��������� ������25
Técnicas de Teste
• Testes de Estresse• Verificar disponibilidade e funcionamento do
sistema em situações adversas ou situações extremas
• Carga de usuários• Carga de transações• Falhas na plataforma de execução
• Exemplo:• Como o software reage com falta de espaço
em disco? E sem comunicação com um determinado servidor?
![Page 26: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/26.jpg)
������������ � ������������ ��������� ��������� ������26
Técnicas de Teste
• Testes de Estresse• SilkPerformer
• Java• WebServices• Web• Desktop• Terminal
Services• BD
![Page 27: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/27.jpg)
������������ � ������������ ��������� ��������� ������27
Técnicas de Teste
• Testes de Estresse• JMeter
• Validar serviços
![Page 28: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/28.jpg)
������������ � ������������ ��������� ��������� ������28
Técnicas de Teste
• Auditoria/Revisão e Peer review• Manter qualidade de artefatos requer
disciplina.• Fazer Peer Review: Revisão de código por
outro componente da equipe.• Objetivos de Auditoria e Métricas:
• Auditoria e Métricas ajudam sua equipe a criar disciplina de revisão contínua.
• Próprio desenvolvedor pode controlar qualidade, não necessário depender 100% de um setor de SQA.
![Page 29: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/29.jpg)
������������ � ������������ ��������� ��������� ������29
Técnicas de Teste
• Exemplo de Métrica que pode ser utilizada no desenvolvimento: • Complexidade Ciclomática
• Mede o número de caminhos independentes de um módulo de programa
• Através de uma classificação, indica a complexidade de um método
• Esta medida pode auxiliar uma equipe a indicar que tal módulo precisa ser refatorado ou então precisa ter sua cobertura de testes melhorada
• Medida ajuda a guiar equipe no processo de teste
![Page 30: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/30.jpg)
������������ � ������������ ��������� ��������� ������30
Técnicas de Teste
• Auditoria/Métricas de Código Fonte e Modelos UML (Borland Together)
![Page 31: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/31.jpg)
������������ � ������������ ��������� ��������� ������31
Técnicas de Teste
• Testes de Integração• Testar a integração de componentes. • Testar dependências de sistemas
• Necessária para indicar a certeza de que os testes criados de forma isolada não estão ocasionando erros em outras partes do sistema.
• Impossível liberar versão sem realizar um teste deste nível.
• Ferramentas? • Todas que possam validar as funcionalidades
que foram criadas.
![Page 32: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/32.jpg)
������������ � ������������ ��������� ��������� ������32
Técnicas de Teste
• E o mais importante:
Verificação X
Validação?
• Mais: ver CMMI – Nível 3
![Page 33: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/33.jpg)
������������ � ������������ ��������� ��������� ������33
Técnicas de Teste
http://www.ambysoft.com/essays/floot.html
![Page 34: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/34.jpg)
������������ � ������������ ��������� ��������� ������34
Prática!
• Prática• Mostrar Testes Unitários• Mostrar Cobertura• Mostrar Testes Funcionais• Mostrar Testes de Carga• Mostrar Auditoria de Fonte
![Page 35: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/35.jpg)
������������ � ������������ ��������� ��������� ������35
Referências
• Beck, Kent; Andres, Cynthia. Extreme Programming explained: embrace change. 2ªedição. Editora Pearson Education, 2005.
• Koscianski, André; Soares, Michel dos Santos. Qualidade de Software, São Paulo: Novatec, 2006.
• Pressman, Roger S. Engenharia de Software. São Paulo: Makron, 2002.
• Manifesto Ágil. Disponível na internet em http://www.agilemanifesto.org
![Page 36: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/36.jpg)
������������ � ������������ ��������� ��������� ������36
Referências
• Tinkha, Andy; Kaner, Cem. ExploringExploratory Testing. Disponível na internet em http://www.testingeducation.org/a/explore.pdf
• Método FLOOT de Scott Ambler. Disponível na internet em http://www.ambysoft.com/essays/floot.html
• Complexidade Ciclomática. Disponível na internet em http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html
![Page 37: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/37.jpg)
������������ � ������������ ��������� ��������� ������37
Links
• FACENSA• http://www.facensa.com.br
• Grupo de Estudos Java da FACENSA• http://fuja.dev.java.net
• Grupo de Usuários XP do RS• http://www.xp-rs.org
• Grupo de Usuários Delphi do RS• http://www.dug-rs.org
• Grupo de Usuários Java do RS• http://www.rsjug.org
![Page 38: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/38.jpg)
������������ � ������������ ��������� ��������� ������38
Links
• Borland Developer Network – Artigos e acesso as ferramentas – BDS, JBuilder, OptimizeIT (Cobertura e Profiler), Silk Test e Silk Performer (Caixa Preta e Desempenho), Together (Auditoria e Métricas)• http://bdn.borland.com• http://www.borland.com• http://www.codegear.com• http://www.aquasoft.com.br• Borland CMMI Online
http://www.borland.com/us/services/cmmi.html
![Page 39: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/39.jpg)
������������ � ������������ ��������� ��������� ������39
Links
• JUnit – Testes Unitários• http://www.junit.org
• JMeter – Ferramenta para Testes de Estresse• http://jakarta.apache.org/jmeter/
• Emma – Cobertura de Testes• http://emma.sf.net
• Selenium – Ferramenta de teste Funcional• http://www.openqa.org/selenium/
• PMD – Ferramenta de Auditoria de Código• http://pmd.sf.net
![Page 40: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/40.jpg)
������������ � ������������ ��������� ��������� ������40
Links
• CheckStyle – Ferramenta de Auditoria de Código• http://checkstyle.sf.net
• Testes unitários para aplicações mobilehttp://j2meunit.sourceforge.net/
• Testes funcionais para aplicações Desktophttp://www.uispec4j.org/https://swingunit.dev.java.net/
![Page 41: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/41.jpg)
������������ � ������������ ��������� ��������� ������41
Perguntas e Respostas
![Page 42: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt](https://reader030.vdocuments.site/reader030/viewer/2022020718/54810528b4795964578b47e7/html5/thumbnails/42.jpg)
������������ � ������������ ��������� ��������� ������42
Obrigado !!!!