Escolar Documentos
Profissional Documentos
Cultura Documentos
CONTEXTUALIZANDO
INTEGRAÇÃO CONTÍNUA
Integração contínua é uma prática que encoraja desenvolvedores a integrar
o seu código com um branch principal, ou um repositório compartilhado, de forma
frequente. Em vez de construir novas funcionalidades de forma isolada e integrá-
las no fim do ciclo de desenvolvimento, o código é integrado com o repositório
compartilhado por cada desenvolvedor por várias vezes durante o dia (Ellingwood,
2017).
O termo “integração continua” originou-se com o processo de
desenvolvimento Extreme Programming (XP), como uma das suas doze práticas
originais. Algum tempo depois, foi lançado o CruiseControl, primeiro servidor de
integração contínua. Hoje, no mundo, cerca de 50% das empresas utilizam
integração contínua (Fernandes, 2015).
A maneira como se realiza a integração mudou desde a concepção original
do XP. Atualmente, envolve construir e testar uma aplicação de forma automática
e em intervalos frequentes em um servidor de integração. Os desenvolvedores
realizam commits de pequenas atualizações regularmente, sendo notificados
rapidamente se suas modificações provocam falhas no sistema em
desenvolvimento (Moreira, 2010).
A integração frequente do código não oferece qualquer garantia sobre a
qualidade do novo código, ou funcionalidade. Em muitas organizações, a
integração é trabalhosa porque processos manuais são utilizados para garantir
que o código siga padrões, não introduza defeitos e não invalide funcionalidades
existentes. A integração frequente pode criar atritos quando o nível de automação
não é o suficiente para suportar as medidas de garantia de qualidade estipuladas.
Para resolver esse atrito com o processo de integração, na prática, a
integração contínua se baseia em conjuntos robustos de testes, além de um
sistema automatizado para executar esses testes. Quando um desenvolvedor
efetua uma operação Merge no repositório principal, processos automatizados
iniciam um build do novo código. Depois, conjuntos de testes são executados
nesse novo build para verificar se algum problema de integração foi introduzido.
Se o build ou a fase de testes falha, o time é avisado para que possam trabalhar
para corrigir o build.
O objetivo final da integração contínua é fazer com que a integração seja
um processo simples e de repetibilidade, que faça parte do fluxo de trabalho diário
para reduzir custos e corrigir defeitos o mais rápido possível. É fundamental para
o sucesso da estratégia trabalhar para fazer com que o sistema seja robusto,
automatizado e rápido enquanto uma cultura de interação frequente e de
responsividade para problemas de buildé cultivada (Ellingwood, 2017). Na figura
1, segue uma visão geral sobre integração contínua.
Figura 1 — Visão geral da prática de integração contínua
Relatórios
Métricas de código
Review Running Tested Features
— Diagramas de classes
> Builds com sucesso
Feedback alerta de problemas
ni, À
commit y Pull vw
ci Script
Controle de Versão Máquina Compitar código fonte,
executar testes,
> de Integração gerar relatórios,
disponibilizar versão
Desenvolvedor
Fonte: Moreira, 2010.
40
qu
O conceito de integração contínua evoluiu dentro do contexto de DevOps,
sendo estendido para as práticas de entrega e implantação contínuas. O termo
DevOps se refere à integração entre a área de desenvolvimento (Dev) e a área
de operações (Ops) de TI, agilizando a entrega de funcionalidades de sistemas.
TESTES DE VALIDAÇÃO
Os testes de validação começam no fim dos testes de integração e se
concentram em ações visíveis pelo usuário, além de saídas do sistema
reconhecíveis pelo usuário.
Um princípio geral de boas práticas de engenharia de requisitos é o de que
os requisitos devem ser testáveis; isto é, o requisito deve ser escrito para que um
teste possa ser concebido para esse requisito. Um testador pode então verificar
se o requisito foi satisfeito. A metodologia de testes de validação, portanto, é uma
abordagem sistemática para o planejamento de testes, em que é possível obter
um conjunto de testes para cada requisito do sistema.
A validação de software é conseguida por meio de uma série de testes que
demonstram conformidade com os requisitos. Um plano de teste descreve as
classes de testes a serem conduzidas, e um procedimento de teste define casos
de teste específicos. Esses casos de teste são projetados para garantir que todos
os requisitos funcionais sejam satisfeitos, que todo o conteúdo seja preciso e
corretamente apresentado, todos os requisitos de desempenho sejam alcançados
e que a documentação esteja correta, e que a usabilidade e outros requisitos
sejam atendidos (Pressman, 2010; Somerville, 2011).
Depois de cada caso de teste de validação ter sido realizado, existe uma
de duas condições possíveis (Pressman, 2010):
Cenários de testes
41
os usuários reais do sistema devem se relacionar com eles. Se forem utilizados
cenários de utilização como parte do processo de engenharia de requisitos do
sistema, então pode ser possível reutilizá-los como cenários de teste.
Um cenário de testes deve ser uma história narrativa mais próxima possível
da realidade de utilização do sistema e bastante complexa. Deve motivar as partes
interessadas; isto é, as partes devem se relacionar com o cenário e acreditar que
é importante que o sistema passe pelo teste. Além disso, o cenário deve ser de
fácil avaliação (Somerville, 2011).
TESTES DE SISTEMA
Teste de segurança
Testes de estresse
43
e Casos de teste que podem causar uma procura excessiva por dados
do disco rígido são criados. Essencialmente, o testador tenta "quebrar"
o programa.
Testes de desempenho
Testes de implantação
TESTES DE VERSÃO
TESTES DE USUÁRIO
46
Os testes beta ocorrem quando uma versão inicial, às vezes inacabada, de
um sistema, é disponibilizada a clientes ou usuários para avaliação. Os testadores
beta podem ser um grupo selecionado de clientes ou usuários iniciais do sistema.
Alternativamente, o software pode ser disponibilizado publicamente para
qualquer pessoa que esteja interessada. Testes beta são usados principalmente
para produtos de software que são usados em muitos ambientes diferentes (em
oposição a sistemas personalizados, que são geralmente usados em um ambiente
definido). É impossível que os desenvolvedores de produtos conheçam e
repliquem todos os ambientes em que o software será usado. Testes beta são,
portanto, essenciais para descobrir problemas de interação entre o software e os
recursos do ambiente em que ele é usado. Os testes beta também são uma forma
de marketing, visto que os clientes aprendem sobre o funcionamento do sistema
e o que ele pode fazer por eles (Somerville, 2011).
Testes de aceitação
Executar
testes de
aceitação
Fonte: Somenville, 2011.
47
detalhados podem não estar disponíveis e pode haver mudanças
significantes de requisitos durante o processo de desenvolvimento.
Planejamento dos testes de aceitação. Isso envolve a decisão sobre os
mn
48
necessário que os problemas identificados sejam corrigidos. Uma vez que
uma nova versão seja liberada com as correções, a fase de testes de
aceitação é reiniciada.
49
FINALIZANDO
Foi feita uma descrição sobre integração contínua, bem como foi concluída
a descrição dos conceitos de testes de integração, comentados na etapa anterior.
Depois, foram apresentados os conceitos de testes de validação. Em seguida, foi
feita uma visão geral sobre testes de sistema. No tema seguinte foi apresentado
o conceito de testes de versão, em que uma versão específica de um sistema é
testada. No último tema, foram comentados os testes de usuário, finalizando o
ciclo de vida do processo de testes no contexto de desenvolvimento de software.
50
==
REFERÊNCIAS