O documento discute a importância de testes contínuos para entregar software de forma mais rápida e com melhor qualidade. Ele explica que ambientes de teste complexos podem ser simplificados com a virtualização de serviços, permitindo testes mais rápidos. Além disso, a automação de implantações ajuda a controlar implementações complexas. Juntos, testes contínuos e implantações contínuas permitem validar o software e o processo de implantação de forma mais eficiente.
2. Aprendizagem atrasada, é por isso que projetos
tradicionais falham
Semanas/Meses
para validar se o
código atendem
os requisitos
Meses ou Anos para
aprender se as
ideias/requisitos atendem as
necessidades do mercado
3. Time para feedback do cliente é dirigido pelo risco
Tradicionalmente
•Organizações procuram um
equilibrio entre: velocidade, custo &
risco.
•Times de desenvolvimento não
foram tão ágeis com são hoje; testes
nunca tem tempo suficiente
4. Time para feedback do cliente é dirigido pelo risco
Tradicionalmente
•Organizações procuram um
equilibrio entre: velocidade, custo &
risco.
•Times de desenvolvimento não
foram tão ágeis com são hoje; testes
nunca tem tempo suficiente
*Survey of 250 Testers
90% dos testadores tem alguma ,mas
não “completa” confiança no software
que está sendo entregue.
34% daqueles que não
expressou nenhuma
mudança foram
regulamente entregue
trimestralmente ou
melhor
34% daqueles que não
expressou nenhuma
mudança foram
regulamente entregue
trimestralmente ou
melhor
5. Desvio a esquerda: pra vencer no mercado,
aprenda rápido
• As empresas estão perguntando para seus times como entregar software com
melhor qualidade
• Times de desenvolvimento estão se tornando mais e mais ágeis; Testes
ainda parece nunca ter tempo suficiente.
6. Foco: Teste de Integração
Está quase
pronto!!
Só preciso fazer
aquela pequena
integração no final.
Está quase
pronto!!
Só preciso fazer
aquela pequena
integração no final.
7. Teste de Integração no final do ciclo de vida
100%
Cronograma Projeto
ProgressodoDesenvol.
(%código)
Data
Original
Integração
Começam
8. Antecipar a validação conduz a uma curva suave
100%
Cronograma Projeto
ProgressoDesenvol.
(%código)
♫
9. Estratégia
1. Implantar toda solução
em um ambiente de
Teste
2. Setup cenários de
teste
3. Run Teste de
regressão
4. Criar “visão boa” da
versão do sistema
5. Repetir quando tiver
mudanças
Pet Shop
Content
J2EE App
MySQL DB
SIT
WEB
MID
DB
PROD
WEB
MID
DB
Tomcat
Deploy
Process
Rollback
Process
Restart
Process
12. Entregando aplicativos compostos
Desafios
1. Implantar toda solução
em um ambiente de
Teste
2. Setup cenários de teste
3. Run Teste de regressão
4. Criar “visão boa” da
versão do sistema
5. Repetir quando tiver
mudanças
coordenar
as
mudanças
coordenar
as
mudanças
ProvisionamentoProvisionamento
Rastrear /
Coletar versões
que estão em
teste
Rastrear /
Coletar versões
que estão em
teste
13. Testes é frequêntemente confrontado com atrasos e gargalos
Desafios diários dos testes
1. Dificuldade para automatizar testes quando os serviços
dependentes têm que ser desenvolvido
2. A falta de produção completa em um laboratório de testes
3. Software e / ou sistemas ainda não existem e as
prioridades podem ser diferentes entre equipes de
desenvolvimento
4. Testes com os serviços de terceiros poderá resultar em
custos de acesso, elevando o custo dos testes
5. Defeitos que bloqueiem podem interromper os testes end-
to-end
6. Simplesmente não há tempo suficiente devido a todas as
interrupções!
14. Continuous Testing é…
Validar diáriamente aplicações compostas mais cedo e com o custo menor
Continuous Testing
DevOps Foundation
Automação Teste
• Execução autônoma
• Validar fluxo de negócio
em todos canais
• Durável, fácil manutenção,
resiliente mudança
Implantação automatizada em ambientes de teste
• Confiável • Repetitivo • Rastreável
Ambiente Teste
• Realistico & Completo
- (Similar Produção)
• Disponível sob demanda
• Barato para montar
15. Continuous Testing é…
Criar ambiente de teste similar a produção
Ambiente de teste Ágil requer quatro capacidades
Infraestrutua Dinâmica
Entrega
Automatizada
Test Environments
DevOps Foundation
Virtualização de
Serviços
Gestão dos Dados
Teste
17. Incrementalmente Testando a IntegraçãoIncrementalmente Testando a Integração
Virtualização habilita a continuidade na integração
e nos testes
Serviços, aplicações, sistemas são introduzidos
dentro do ciclo de integração contínua de forma
priorizada, controlada.
Abordagem completa para o paralelismo do
desenvolvimento
Solução de Virtualização em Testes tem papel chave
num Ciclo Moderno de Desenvolvimento de Software
Actual Service/App
Virtual Service/App
18. Databases Internal
Messages
Third-party
Services
virtual components
Simultaneously
test across
multiple test
stages
DevDev QAQA
IBM Rational Test
Virtualization Server
Combining continuous testing withSolução IBM para Continuous Testing
IBM UrbanCode
Deploy
IBM Rational
Test Workbench
integrated with
Test Environments
Dynamic Infrastructure
Deploy what is ready,
virtualize the rest
Continuously test in
production-like env.
Deploy private, secure
right sized test data
IBM InfoSphere
Optim Test Data Mgmt
UC Deploy Plugins
IBM Rational
Quality Manager
Manage quality across
the delivery lifecycle
19. Resumo
• Chegar ao mercado mais rápido exige testes mais rápidos
• Testadores precisam de testes automatizados, ambientes para
executá-los, e os últimos códigos nesses ambientes.
• Ambientes complexos podem ser simplificados com virtualização
de serviços.
• Implementações complexas pode ser controlada com aplicação
de Automação de Entrega.
• Continuous Testing juntamente com Continuous Deployment,
verifica software / valida o processo de implantação
A place to test. Many tests run auto-magically. The latest stuff put in that place, with the tests run.
We always want to be testing.
Stub interfacing components out that are unavailable at the time and then re-introduce them when they are available.
Continuous integration testing at a “system” level. When new components are introduced the automated test suite scan be run as regression tests. Thereby controlling the risk of extra functionality being deployed into the test environment by having mitigated the risk through earlier testing against stubs. This is an incremental and iterative approach to integration testing.