42
Qualidade em desenvolvimento Java para todos os gostos Daniel Wildt – [email protected] FACENSA – http://www.facensa.com.br Faculdade Cenecista Nossa Senhora dos Anjos

Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

Embed Size (px)

DESCRIPTION

Apresentação realizada no Just Java 2006, mostrando ferramentas de qualidade para ambiente Java EE, Java ME e Java SE.

Citation preview

Page 1: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������4

Motivações - Comunicação

Page 5: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������20

Técnicas de Teste

�����

Page 21: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������23

Técnicas de Teste

• Caixa PretaSelenium IDE

Page 24: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������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

������������ � ������������ ��������� ��������� ������41

Perguntas e Respostas

Page 42: Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Daniel Wildt

������������ � ������������ ��������� ��������� ������42

Obrigado !!!!