Upload
eliane-collins
View
1.714
Download
1
Embed Size (px)
DESCRIPTION
Experiência de implantar um ambiente de integração contínua em um projeto multiplataforma
Citation preview
INdT
Hudson
QUALIDADE
Sucess
Unit Test
Verificação
Bug
SCRUM
Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma
para Java e .NET
Instituto Nokia de Tecnologia
SELENIUM
Eliane Collins, Thiago Falcão, Rafael Cunha e Vicente Lucena
Curitiba, Jun 2011
Simpósio Brasileiro de Qualidade de Software - SBQS
AGILIDADE
Company Confidential
2. Contexto do Ambiente
1. Introdução
Agenda
3. Processo Multiplataforma de Integração Contínua
5. Conclusão
4. Execução e Resultados
Company Confidential
3
IntroduçãoIntrodução
Company Confidential
INTRODUÇÃO
� Crescente adoção de metodologias ágeis para o desenvolvimento de software.
�Técnicas e estratégias estão sendo pesquisadas para garantir a qualidade e confiabilidade dos sistemas desenvolvidos.
�A integração contínua se destaca ganhando importância por proporcionar informações que dizem respeito à qualidade durante o desenvolvimento de maneira automática e contínua.
4
Company Confidential
INTRODUÇÃO
� O Processo de Integração Contínua é a prática no onde toda equipe deve integrar seu trabalho sempre a cada alteração.
�Cada integração é verificada, testes unitários e de aceitação são executados para detectar defeitos o mais rápido possível.
�É possível reduzir problemas de integração, controlar versões estáveis do sistema e permitir que o time desenvolva rapidamente um software coeso
5
Company Confidential
INTRODUÇÃO
� Vantagens conhecidas da Integração Contínua:
�A redução de riscos obtida através da detecção e correção de defeitos mais cedo.
�Automação de processos manuais e repetitivos (compilação, integração de base de dados, teste, inspeção, distribuição e feedback).
�Permitir uma melhor visibilidade de projeto (estatísticas reais e recentes fornecidas nos relatórios gerados ).
�Verificações automáticas de cobertura, validação de padrões de design de código e padronização.
6
Company Confidential
INTRODUÇÃO
7
Company Confidential
8
Contexto do AmbienteContexto do Ambiente
Company Confidential
CONTEXTO DO AMBIENTE
� Instituto Nokia de Tecnologia – INdT
�É uma instituição independente e sem fins lucrativos comprometida com a realização de pesquisa e desenvolvimento de soluções tecnológicas através do desenvolvimento de aplicações, novas tecnologias e conceitos.
�A área onde a experiência foi desenvolvida foi Tecnologias de Produto e Manufatura (PMT).
9
Company Confidential
CONTEXTO DO AMBIENTE
� SCRUM
� Metodologia ágil e flexível, centrada no trabalho em equipe;
� Utilizada para o desenvolvimento incremental e iterativo de qualquer produto
10
Company Confidential
CONTEXTO DO AMBIENTE
� Projeto Piloto
� Realizar a manutenção preventiva de equipamentos que são utilizados ininterruptamente na produção de uma fábrica de produtos eletrônicos.
� O sistema deveria se comunicar com equipamentos da linha de produção.
�Evitar a substituição prematura de uma peça ou a parada de linha de produção devido ao desgaste intensivo do equipamento.
�Diminuir os custos com a manutenção dos equipamentos de produção.
�Comunicar-se com outros sistemas de produção, com isso utilização de diferentes tecnologias em seu desenvolvimento.
11
Company Confidential
CONTEXTO DO AMBIENTE
� Projeto Piloto
� 3 módulos de desenvolvimento: um cliente web na plataforma Java usando um servidor JBoss;
�O segundo e o terceiro: um webservice e um serviço na plataforma .NET executando em um servidor Internet Infomation Services (IIS).
�Os módulos necessitavam comunicar-se entre si.
�Necessária a realização da integração entre os módulos.
�Não era interessante que cada integrante da equipe executasse os testes unitários em todo o sistema.
�Se perderia muito tempo com erros de integrações e testes manuais.
12
Company Confidential
13
Processo Multiplataforma de Integração ContínuaProcesso Multiplataforma de Integração Contínua
Company Confidential
PROCESSO Multiplataforma de Integração Contínua
� O processo deveria fazer parte da metodologia ágil Scrum.
� Primeira Etapa: Avaliar frameworks de integração contínua disponíveis no mercado.
�CruiseControl.Net:
�Ferramenta proprietária e difícil configuração em xml.
�Não possui muitos pluggins.
�Hudson
14
Company Confidential
� Hudson Vantagens:
� Ferramenta livre,.
� Interface amigável e simples de configurar
� Configuração do ambiente de teste – segundo sprint
� Possui plug-ins, os quais facilitaram a integração com outros softwares e plataformas que seriam usados no projeto.
�Junit
�Nunit
�Subversion (SVN)
�MSBuild.
�Selenium
�…
15
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� HUDSON
16
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� Para o módulo do sistema em Java, foi utilizado Apache Ant.
�Criado um XML responsável por compilar todo o código escrito em Java, executar os testes unitários usando JUnit, empacotar o arquivo, e finalmente enviá-lo para o servidor JBoss através da ferramenta Hudson.
�Para o módulo do sistema na plataforma .NET foi utilizado o Microsoft MSBuild.
�Criado um arquivo MSBuild responsável por compilar o código escrito em .NET, executar os testes unitários usando NUnit, e finalmente, executar a distribuição.
�Distribuição: Republicar e reiniciar a nova versão do webservice no servidor IIS, como também republicar e reiniciar a nova versão do serviço Windows.
17
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� As duas plataformas trabalhavam paralelamente e integradas por causa das várias compilações, testes e distribuições diárias.
�Quando ocorriam erros de compilação no servidor de integração contínua a correção ou retorno era prioritário
�Impedimentos não poderiam ser gerados para não atrapalhar o desenvolvimento do restante da equipe.
18
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
� Arquitetura do Processo de Integração Contínua Multiplataforma:
19
PROCESSO Multiplataforma de Integração Contínua
Company Confidential
20
Execução do Processo e ResultadosExecução do Processo e Resultados
Company Confidential
Execução do Processo e Resultados
�Sprint Planning
�A estimativa das estórias levavam em consideração a codificação dos testes unitários e a integração do código tanto para o módulo .NET como para o módulo Java.
�Sprint
�Os desenvolvedores codificavam os testes unitários usando JUnit e Mockito para a plataforma Java e NUnit e MOQ para a plataforma .NET.
�Ao final de cada dia, o time tinha que enviar o código trabalhado para o repositório (SVN)
�Hudson detectava e executava os scripts do Ant, no caso do módulo Java e MSBuild no caso do módulo .NET
�Compilavam, executavam os testes, empacotavam o código e enviavam a versão do software estável para o servidor de destino
21
Company Confidential
Execução do Processo e Resultados
�Quando a ferramenta Hudson detectava falhas em qualquer passo desse processo, o script (Ant ou MSBuild) era interrompido.
�A versão não era enviada para o servidor de destino e todo time recebia um e-mail com o relatório sobre as falhas encontradas.
�É possível visualizar e das ações executadas por cada membro do time, identificando o autor de cada mudança.
22
Company Confidential
Execução do Processo e Resultados
�Resultados
�No fim do Sprint obtinha-se uma entrega de software estável para ser validada pela equipe de teste para validar o critério de aceitação.
�Em 10 Sprints de projeto foram geradas 140 builds para o módulo Java e 283 builds para o módulo .NET.
23
Company Confidential
Execução do Processo e Resultados
�Resultados
�Conforme o processo era executado, a cobertura de testes aumentava e a incidência de falhas no software diminuía.
�Isso ocorreu porque o ambiente automatizado propiciou mais facilidade na confecção e execução de testes unitários e com isso aumentar a qualidade do código gerado.
24
Company Confidential
Execução do Processo e Resultados
�Resultados Atuais
�Integração com a ferramenta de cobertura de código.
25
Company Confidential
Execução do Processo e Resultados�Resultados Atuais
�Integração com a Ferramenta Selenium para testes de aceitação automáticos.
26
Company Confidential
27
ConclusãoConclusão
Company Confidential
CONCLUSÃO
� Este processo de integração contínua possibilitou testes automatizados, uma distribuição rápida e versões do software atualizadas e estáveis.
�Os desenvolvedores das plataformas Java e .NET ficaram focados somente no desenvolvimento em sua respectiva tecnologia.
�A equipe de testes foi beneficiada, pois as versões de software para teste se tornaram mais estáveis e sem defeitos de integração e implementação.
�Melhorias: Evoluir o ambiente para inspeção e padronização do código. E melhorar a automação dos testes de aceitação.
28
Company Confidential
OBRIGADA!
Perguntas??
29