praticas_ageis_ferramentas

76
WWW.DOMINANDOTI.COM.BR WWW.DOMINANDOTI.COM.BR Práticas Ágeis (IC, TDD, Refactoring) Ferramentas: Jenkins, Artifactory, Sonar e Maven Ferramentas de testes: Selenium, Jmeter Subversion Professor Marcelo Pacote [email protected]

Upload: fabrizio171195

Post on 12-Jan-2016

14 views

Category:

Documents


0 download

DESCRIPTION

as

TRANSCRIPT

Page 1: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Práticas Ágeis (IC, TDD, Refactoring)

Ferramentas: Jenkins, Artifactory, Sonar e Maven

Ferramentas de testes: Selenium, Jmeter

Subversion

Professor Marcelo Pacote – [email protected]

Page 2: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Acesse nosso site em

WWW.DOMINANDOTI.COM.BR

Curta o Dominando TI no

e receba nossas dicas sobre concursos!

Cursos Turmas em Brasília, na sua cidade, e cursos online

Livros Edições publicadas, lançamentos e promoções

Fórum Interação direta entre estudantes e com os professores

Simulados Questões inéditas, ranking de notas e correções em vídeo

Blog Dicas e macetes de estudo, indicações de bibliografia, etc.

Materiais Versões atualizadas de notas de aula e listas de exercícios

Page 3: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Maven

Professor Marcelo Pacote – [email protected]

Page 4: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Maven

Padroniza e simplifica o processo de construção (build) de um projeto de software.

trata compilação, distribuição, documentação, gerenciamento de dependências, gerenciamento de configuração (SCM)

Convention over Configuration

4

Item Padrão

Código fonte /src/main/java

Recursos (arquivos conf.) /src/main/resources

Testes /src/test

Código compilado /target/classes

Professor Marcelo Pacote – [email protected]

Page 5: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

POM – Project Object Model (pom.xml)

Contém metadados do projeto

Super POM

Todos os POMs herdam de algum outro

5

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>br.com.dominandoti</groupId>

<artifactId>projetocurso-api</artifactId>

<version>1.0</version>

<packaging>jar</packaging>

<dependencies/>

<build/>

</project>

Professor Marcelo Pacote – [email protected]

Page 6: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Características

Ciclos de vida

Sequência de fases que definem a ordem que goals são executados.

Ciclos de vida: clean, default (build) e site

Plugins

Profiles

Configurações que sobrescrevem comportamentos padrão do Maven.

6 Professor Marcelo Pacote – [email protected]

Page 7: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Repositórios

Trata-se do local onde são armazenados os artefatos (jars, plugins) utilizados pelo maven.

Há três tipos: local, central e remoto

7

local interno - proxy

(opcional) central

remoto

remoto

c:\users\mpacote\.m2 http://repo1.maven.org/maven2/

Professor Marcelo Pacote – [email protected]

Page 8: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Repositórios - Artifactory

Funciona como um proxy entre o cliente maven e o mundo externo.

Também funciona como repositório interno de bibliotecas.

Aplicação Java EE padrão. Pode ser implantada no Tomcat, WebSphere, Jboss, Glassfish, Jetty, Resin.

8 Professor Marcelo Pacote – [email protected]

Figura extraída de: http://www.jfrog.com/home/v_artifactory_opensource_technology

Page 9: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Gerenciamento de Dependências

Descoberta de dependências transitivas

9

Há dependência transitiva entre A e C

Escopo Descrição

compile (default) indica que a dependência está disponível no classpath do

projeto

provided dependência provida pelo JDK ou Container em tempo de execução.

test dependência utilizada apenas por testes (compilação e execução)

runtime Não é necessário para compilação, apenas para execução.

Professor Marcelo Pacote – [email protected]

Page 10: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Práticas Ágeis

IC, TDD e Refactoring +

(Jenkins, Sonar e JUnit)

Professor Marcelo Pacote – [email protected]

Page 11: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua - Conceito

Abordagem para manter todo código integrado

Implantar software a qualquer momento

Software tecnologicamente pronto para o lançamento, ainda que não esteja funcionalmente concluído.

Ciclos curtos de integração

Intervalos de algumas horas tornam o processo menos doloroso.

Professor Marcelo Pacote – [email protected] 11

Page 12: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua

Reduzir escopo de possíveis erros

Apenas o código incluído desde o últimobuild pode ter inserido erro no software.

Evita caçar bugs gerados por outros ou culpar a equipe por erros gerados pelo desenvolvedor

“Estava funcionando em minha máquina!”

A cada integração

Gerar um CD

Armazenar em um repositório

Implantar em um servidor

12 Professor Marcelo Pacote – [email protected]

Page 13: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua - Roteiro

13

1.

Desenvolvimento + compilação+ testes unitários

2. Obter token

3. Update

4. Compilação + testes unitários

5. Commit

6. update

7. Compilação e testes

Servidor de IC

8. [Opciona]Deploy

Professor Marcelo Pacote – [email protected]

Page 14: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua - servidores

CruiseControl (open-source)

Hudson X Jenkins

Team Foundation (comercial – Micro$oft)

TeamCity (comecial - Jetbrains)

Rational Team Concert (comercial)

AntHill (comercial)

Continuum (open-source – Apache Foundation)

Bamboo (comercial)

LuntBuild (open-source) X QuickBuild

14 Professor Marcelo Pacote – [email protected]

Page 15: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Jenkins

Ferramenta de interação contínua

Open source.

Escrita em Java (executa em container de servlets)

Fork do projeto Hudson

Suporte a diversas ferramentas de controle de versão: CVS, SVN, Git, Mercurial, ClearCase.

Se integra com Maven e pode executar scripts ant e shell scripts.

Recurso cron-like para agendamento de execução de tarefas.

15 Professor Marcelo Pacote – [email protected]

Page 16: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua - Exemplo

16 Professor Marcelo Pacote – [email protected]

Page 17: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Integração Contínua – considerações

Ten-minute build

Integração em vários estágios

Necessário: compilação, testes de unidade, integração

Secundário: testes de desempenho, carga e estabilidade

Elementos essenciais para IC

Sistema de controle de versão

Construção em dez minutos

Por que um servidor de integração contínua?

Prova que o sistema funciona em qualquer ambiente

Exemplo: commit de um arquivo é esquecido

17 Professor Marcelo Pacote – [email protected]

Page 18: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(TJ-PI/2009/FCC/Analista/An. Sistemas)

XP (eXtreme Programming) é uma metodologia ágil para equipes pequenas e médias que desenvolverão software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Para aplicar os valores e princípios durante o desenvolvimento de software, a XP propõe uma série de práticas, sendo uma delas: sempre que produzir uma nova funcionalidade, nunca esperar uma semana para integrar à versão atual do sistema a fim de evitar o aumento da possibilidade de conflitos e da possibilidade de erros no código fonte. Tal prática é denominada

A - Refatoração. B - Integração Contínua.

C - Desenvolvimento Orientado a Testes.

D - Ritmo Sustentável. E - Time Coeso.

18 Professor Marcelo Pacote – [email protected]

Page 19: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Anac/2013/Cespe/Analista/105)

( ) A integração contínua é uma técnica de alto impacto no levantamento de requisitos.

19 Professor Marcelo Pacote – [email protected]

Page 20: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Sonar

Plataforma para gerenciamento de qualidade de código

Esta ferramenta abrange 7 eixos de qualidade de código: arquitetura e design, duplicidade, testes unitários, complexidade, erros em potencial, regras de codificação e comentários.

Baseado em plugins

Java é a linguagem base, mas há plugins para outras linguagens.

Permite a configuração de alertas, regras, limites.

Licença LGPL 3

20 Professor Marcelo Pacote – [email protected]

Page 21: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Desenvolvimento Orientado a Testes

TDD

Professor Marcelo Pacote – [email protected]

Page 22: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Motivação

Trata-se de um ciclo rápido de testes, codificação e refatoração.

Código de testes é escrito antes do código de produção.

Os testes são escritos em função de uma interface pública

Foco no comportamento e não na implementação

22 Professor Marcelo Pacote – [email protected]

Page 23: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Passos para utilização

1. Pense

Pequenos incrementos por vez

2. Vermelho (falha)

Escreva um teste que falha

3. Verde (sucesso)

Escreva código para passar nos testes

4. Refatore

Revise e código e faça melhorias

5. Repita

Reinicie o ciclo. O segredo são os pequenos incrementos.

23

Novo teste

Falha

Sucesso

Refatore

Professor Marcelo Pacote – [email protected]

Page 24: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo

Tarefa:

Cálculo de Fatorial

Exemplos:

0! = 1 1! = 1

2! = 2 x 1 = 2 3! = 3 x 2 x 1 = 6

JUnit

assertEquals(“Teste”,”test”); //falha

assertEquals(32, 32); //sucesso

24 Professor Marcelo Pacote – [email protected]

Page 25: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (passos 1 e 2)

25

0! é 1

Professor Marcelo Pacote – [email protected]

Page 26: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (passo 3, 4 e 5)

26 Professor Marcelo Pacote – [email protected]

Page 27: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (segunda iteração)

27

1! é 1

Professor Marcelo Pacote – [email protected]

Page 28: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (terceira iteração) (1/2)

28

2! é 2

Professor Marcelo Pacote – [email protected]

Page 29: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (terceira iteração) (2/2)

29

Corrigir teste com erro

“limpar” o código

Professor Marcelo Pacote – [email protected]

Page 30: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (quarta iteração)

30

Escrever o teste

Corrigir o teste com erro

Professor Marcelo Pacote – [email protected]

Page 31: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Exemplo (quinta iteração)

31

Teste

Corrigir o teste com erro

Professor Marcelo Pacote – [email protected]

Page 32: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Ferramentas de Testes

xUnit

nome genérico para qualquer estrutura de testes automáticos unitários.

Junit (java)

Nunit (.net)

TestNG

32 Professor Marcelo Pacote – [email protected]

Page 33: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Teste de unidade

Os testes devem ser rápidos

Menos de 10 segundos

Requisitos

Não se comunicam com bases de dados

Não se comunicam por meio de uma rede

Não acessa sistema de arquivos

Não é necessário configurar ambiente para executá-los

Se não cumprem estes requisitos, são testes de integração.

33 Professor Marcelo Pacote – [email protected]

Page 34: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

TDD – Objetos falsos (Mock Objects)

Mock Objects isolam classes para testes de unidades

Evitam comunicação demorada com bases de dados, web services, sistemas de arquivos.

Adicionam complexidade ao teste

Exemplos de ferramentas

Mockito

EasyMock

JMock

34 Professor Marcelo Pacote – [email protected]

Page 35: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Basa/2012/Cespe/An. Sistemas)

( ) Metodologias de desenvolvimento XP contam com o desenvolvimento orientado a testes, que engloba duas etapas: escrever um teste automatizado e desenvolver um código adequado o suficiente para ter sucesso nesse teste.

35 Professor Marcelo Pacote – [email protected]

Page 36: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Serpro/2013/Cespe/Desv./75)

( ) Usando-se o TDD, as funcionalidades devem estar completas e da forma como serão apresentadas aos seus usuários para que possam ser testadas e consideradas corretas.

36 Professor Marcelo Pacote – [email protected]

Page 37: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(TRE/SP/2012/FCC/Prog. Sistemas)

Sobre desenvolvimento baseado em testes, considere:

I. Este processo requer que desenvolvedores criem unidades de testes para definir os requisitos que um determinado código deve conter. Estes testes devem ser criados assim que uma pequena parte funcional do código esteja disponível.

II. Frequentemente são utilizados frameworks de teste pelos desenvolvedores como o xUnit ou jUnit para a criação de casos de teste automatizados.

III. É importante que o código escrito seja apenas projetado para passar o teste específico. Nenhuma outra funcionalidade deve ser prevista ou permitida fora do escopo do teste em nenhum estágio do processo.

Está correto o que consta em

A - I, apenas. B - II, apenas. C - I e III, apenas.

D - II e III, apenas. E - I, II e III.

37 Professor Marcelo Pacote – [email protected]

Page 38: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(MPOG/2013/Cespe/TI/73)

( ) Ao realizar o TDD (test-driven development), o programador é conduzido a pensar em decisões de design antes de pensar em código de implementação, o que cria um maior acoplamento, uma vez que seu objetivo é pensar na lógica e nas responsabilidades de cada classe.

38 Professor Marcelo Pacote – [email protected]

Page 39: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Bacen/2013/Cespe/Desv./96)

( ) O JUnit e um framework que permite realizar testes unitários de códigos Java, herdando algumas características da própria linguagem. Na versão 4.11, ele permite, entre outros recursos, mudar a ordem de testes, criar testes parametrizados, executar testes de exceção e testes temporizados por meio da palavra-chave timeout.

39 Professor Marcelo Pacote – [email protected]

Page 40: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Refatoração

Professor Marcelo Pacote – [email protected]

Page 41: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração

Refatoração: alteração feita na estrutura interna do software para torná-lo mais fácil de ser entendido e menos custoso de ser modificado sem alterar seu comportamento observável.

O que o software faz permanece inalterado. Apenas o como é modificado.

Identificar melhorias por meio dos “cheiros”

do código

Sintomas de um design ruim

Cada refatoração é como fazer um movimento com cubo mágico.

41 Professor Marcelo Pacote – [email protected]

Page 42: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração

Vantagens:

Melhora o projeto de software.

Torna o software mais fácil de entender.

Ajuda a encontrar falhas.

Momento:

Quando acrescentar funções.

Quando corrigir uma falha.

Quando revisar código.

42 Professor Marcelo Pacote – [email protected]

Page 43: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(PEFOCE/CE /2012/Cespe/Perito)

( ) Na manutenção preventiva por refatoração em determinado software, novas funcionalidades devem ser adicionadas para diminuir sua degradação.

43 Professor Marcelo Pacote – [email protected]

Page 44: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Petrobras/2007/Cespe/An. Sistemas)

( ) Um exemplo de refatoração, técnica que pode ser empregada para melhorar o projeto de um software, é organizar as classes em hierarquias visando usar polimorfismo em vez de enunciados condicionais para escolher entre comportamentos que dependam dos tipos dos objetos.

44 Professor Marcelo Pacote – [email protected]

Page 45: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Inpi/2013/Cespe/Desv./89 e 90)

A documentação da arquitetura de software de sistema facilita a comunicação entre os participantes do desenvolvimento do sistema. A respeito das práticas de arquitetura de software, julgue os itens a seguir.

( ) A refatoração objetiva tornar o código mais claro e limpo.

( ) Ao refatorar um código, altera-se a funcionalidade do sistema.

45 Professor Marcelo Pacote – [email protected]

Page 46: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Anac/2013/Cespe/Analista/101)

( ) A refatoração consiste na mudança do código-fonte do software, de modo a melhorar sua estrutura interna, sem que se altere o seu comportamento externo.

46 Professor Marcelo Pacote – [email protected]

Page 47: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

(Inmetro/2009/Cespe/Desv/68)

( ) As técnicas de refatoração de código compreendem, entre outras, a remoção de número mágicos e a introdução de padrões de desenho.

47 Professor Marcelo Pacote – [email protected]

Page 48: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R 48

(Petro/2010/Cesgranrio/Proc. Negócio)

É comum, na Engenharia de Software, o uso de ferramentas de software que auxiliam na realização de diversas atividades do desenvolvimento. Nesse contexto, ferramentas de

(A) refatoração auxiliam a modificação de uma região do código-fonte de um sistema, com o objetivo de alterar comportamento externo deste último.

(B) análise estática do código permitem obter métricas de qualidade de um produto de software, tais como o grau de dependência entre seus componentes.

(C) integração contínua são destinadas a automatizar a implantação do produto de software no ambiente de produção.

(D) engenharia reversa são destinadas ao controle das diversas versões de um produto de software.

(E) cobertura de código determinam em que grau o código-fonte de um sistema corresponde aos seus requisitos não funcionais.

Professor Marcelo Pacote – [email protected]

Page 49: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – “Cheiros”

Alteração divergente (divergent change):

“Uma classe é frequentemente alterada de diferentes maneiras por diferentes razões”.

Exemplo: necessidade de alterar três métodos quando da inclusão de um novo banco de dados.

Refatoração: extrair classe

Cirurgia com rifle ou cirurgia imposta (shotgun surgery):

Oposto da alteração divergente.

Pequenas alterações em muitas classes.

Refatoração: mover método, mover campo e internalizar classe.

49 Professor Marcelo Pacote – [email protected]

Page 50: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Extrair classe

50

Criar uma nova classe e mover atributos e métodos relevantes para ela.

Professor Marcelo Pacote – [email protected]

Page 51: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Mover método

51

Criar novo método com funcionalidade similar na classe que mais a utiliza.

A refatoração mover campo é análoga.

Professor Marcelo Pacote – [email protected]

Page 52: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Internalizar Classe

52

É o contrário de Extrair Classe

Professor Marcelo Pacote – [email protected]

Page 53: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – “Cheiros”

Obsessão Primitiva (Primitive Obsession):

Exemplo: um decimal representando moeda ou string representando CEP.

Solução é encapsular conceito em uma classe

Refatoração: Substituir Atributo por Objeto, introduzir Objeto Parâmetro, Extrair Classe, entre outros.

Agrupamento de Dados (Data Clumps):

Vários primitivos representam um conceito como um grupo

Exemplo: várias strings poderiam representar um endereço. Em vez de estarem encapsuladas em uma classe, os dados ficam agrupados.

Refatoração: Extrair Classe, Introduzir Objeto Parâmetro e Preservar o Objeto Inteiro

53 Professor Marcelo Pacote – [email protected]

Page 54: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Preservar o Objeto Inteiro

54

Várias informações são recuperadas de um objeto e repassadas como parâmetro em uma chamada de método.

Professor Marcelo Pacote – [email protected]

Page 55: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – “Cheiros”

Classes de Dados (Data Class):

Erro comum: dados e código em classes separadas.

Uma classe apenas com métodos get/set é uma Classe de Dados.

Refatoração: Mover Método, Encapsular Campo e Encapsular Coleção.

Comentários (Comments):

Pode indicar código mal estruturado

Refatoração: Extrair Método, Renomear Método e Introduzir Asserções

55 Professor Marcelo Pacote – [email protected]

Page 56: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Encapsular Coleção

56

Um método retorna uma coleção. Torná-la readonly e fornecer métodos de inclusão/remoção.

Professor Marcelo Pacote – [email protected]

Page 57: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – “Cheiros”

Código duplicado:

Resultado de copy and paste programming.

Principal problema gerado é a dificuldade de manutenção: alteração em vários pontos de código.

Também pode ocorrer por duplicação de funcionalidade

Refatoração: extrair classe, extrair método, substituir algoritmo (e outros ...)

Lista de parâmetros longa

Baixa legibilidade

Refatoração: Substituir parâmetros por método, preservar objeto inteiro e introduzir objeto parâmetro

57 Professor Marcelo Pacote – [email protected]

Page 58: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Substituir Algoritmo

58

Alterar o corpo de um método com um novo algoritmo.

Professor Marcelo Pacote – [email protected]

Page 59: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Introduzir objeto parâmetro

59

Substituir grupos de parâmetros por um objeto.

Professor Marcelo Pacote – [email protected]

Page 60: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – Extrair método

60

Transformar um fragmento de código em um método cujo nome explica seu propósito.

Professor Marcelo Pacote – [email protected]

Page 61: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração – “Cheiros”

Inveja de dados (Feature Envy):

Ocorre quando um método faz muitas chamadas a outras classes para obter dados ou funcionalidade.

Refatoração: extrair método, mover método e mover campo

Classes grandes

Classes com excesso de responsabilidades

Tipicamente contém grande número de atributos

Refatoração: extrair classe, extrair subclasse, extrair interface

61 Professor Marcelo Pacote – [email protected]

Page 62: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração

Métodos longos

Comandos Switch:

Use polimorfismo.

Hierarquias paralelas de herança.

Ao criar uma subclasse em uma hierarquia é obrigatório a criação de outra subclasse em outra hierarquia.

Classe ociosa.

Generalidade especulativa.

Atributo temporário.

Cadeia de mensagens .

62 Professor Marcelo Pacote – [email protected]

Page 63: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Refatoração

Intermediário:

Um objeto recorre a outro objeto para responder a uma requisição.

Intimidade inadequada.

Classes alternativas com interfaces diferentes:

Métodos que façam a mesma coisa, mas que tenham assinaturas diferentes.

Biblioteca de classes incompleta.

Introduzir um método em uma classe da biblioteca.

Herança recusada:

Métodos e atributos herdados ficam sem uso

63 Professor Marcelo Pacote – [email protected]

Page 64: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Um programador inexperiente gerou, em determinado sistema, código-fonte de baixa qualidade que foi analisado e reprovado por ferramentas automatizadas de auditoria de código. Considerando-se que existem muitos códigos duplicados nesse sistema, que técnicas de refatoração são indicadas nessa situação?

(A) Introduce Parameter Object e Move Method.

(B) Duplicate Observed Data e Replace Inheritance with Delegation.

(C) Move Method e Move Field.

(D) Extract Method e Substitute Algorithm.

(E) Remove Double Negative e Introduce Parameter Object.

64

(Bacen/2010/Cesgranrio/Desv )

Professor Marcelo Pacote – [email protected]

Page 65: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Gabarito

(TJ-PI/2009/FCC/Analista/An. Sistemas) B

(Anac/2013/Cespe/Analista/105) errado

(Basa/2012/Cespe/An. Sistemas) certo

(Serpro/2013/Cespe/Desv./75) errado

(TRE/SP/2012/FCC/Prog. Sistemas) D

(MPOG/2013/Cespe/TI/73) errado

(Bacen/2013/Cespe/Desv./96) certo

(PEFOCE/CE /2012/Cespe/Perito) errado

(Petrobras/2007/Cespe/An. Sistemas) certo

(Inpi/2013/Cespe/Desv./89 e 90) certo/errado

(Anac/2013/Cespe/Analista/101) certo

(Inmetro/2009/Cespe/Analista/Desv/68) certo

(Petro/2010/Cesgranrio/Proc. Negócio) B

(Bacen/2010/Cesgranrio/Desv ) D

65 Professor Marcelo Pacote – [email protected]

Page 66: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Gerência de Configuração

(Subversion)

Professor Marcelo Pacote – [email protected]

Page 67: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Gerência de Configuração e controle de versões

Conjunto de atividades de apoio ao desenvolvimento que permitem que mudanças sejam absorvidas de maneira controlada.

Controle de versão

Recuperar versões anteriores

Auditar modificações realizadas (quem, quando e o quê)

Permitir desenvolvimento em paralelo

Prevenir conflito entre desenvolvedores

Page 68: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Subversion

Sistema de controle de versões

Trabalha com qualquer tipo de arquivo (e não apenas códigos –fonte)

Características

Histórico de mudanças em arquivos e diretórios

Controle de acesso

Registro da data, autor e motivo de uma alteração

Page 69: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Subversion – trunk, tags, branches

Branch: linha independente desenvolvimento.

Tag: label do repositório em algum momento do tempo.

Page 70: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Subversion – revisões

Cada transação

que altera o

repositório incrementa

o número da revisão.

Page 71: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Subversion – workflow básico

checkout

(desenvolvimento e testes)

update

commit

servidor cliente

(resolução de conflitos)

Page 72: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR

Ferramentas de teste

JMeter e Selenium

Professor Marcelo Pacote – [email protected]

Page 73: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Jmeter

Trata-se de ferramenta open source de testes de carga e estresse automatizados para aplicações WEB.

Suporta diversos tipos de serviço:

FTP, HTTP, HTTPS

JDBC

Objetos Java

SOAP

LDAP

JUnit

JMS

Page 74: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Jmeter - conceitos e características (1/2)

TestPlan

parâmetros ou comportamentos comuns a todos os testes

ThreadGroup

representa os usuários virtuais que simulam a navegação do seu site ou aplicação WEB.

Campos

Number of Threads : número de usuários virtuais

Ramp-Up Period: frequência/tempo de lançamento dos usuários virtuais

Loop Count: quantas vezes o teste será repetido

Page 75: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Jmeter - conceitos e características (2/2)

Permite a criação de asserções para validar os requisitos de performance e funcionalidade

Permite a utilização de pré-processadores e pós-processadores para modificar o comportamento das requisições

Os testes podem ser escritos manualmente ou gravados automaticamente por meio de um Proxy Server

Page 76: praticas_ageis_ferramentas

W W W. D OMI NAND OTI .COM.B R

Selenium

Trata-se de framework para realização de testes funcionais em aplicações web.

Componentes

IDE

Plugin firefox para gravação de testes

WebDriver

API Java para escrita dos testes funcionais que enviam comandos para o navegador

Grid

Permite a execução de testes em navegadores executando em máquinas remotas.