tdc 2013 7 dicas para acelerar os testes

Post on 05-Jun-2015

707 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação realizada no TDC 2013, na trilha de testes contendo dicas de como utilizar técnicas e ferramentas atuais para acelerar os testes de software e obter resultados mais efetivos.

TRANSCRIPT

© 2011 IBM Corporation

7 Dicas para Acelerar os Testes com Resultados Efetivos12 de Julho de 2013

Felipe Freire – pfreire@br.ibm.comIBM Software, Rational

TDC 2013

@pfelipebr

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Sobre a a apresentação – ObjetivoDar armas ao testador para mudar a organização

Compartilhar experiências com testes (dicas)

Experiência IBM em clientes globais

Eventos de testes

STAREAST / STARWEST

BRATESTE

Ajudar a trazer novas idéias para sua empresa

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Agenda

Introdução

Dicas

Dê foco aos testes

Antecipe a execução dos testes

Versione tudo (release)

Cloud – Flexibilize os ambientes de testes

Virtualize os serviços e ambientes de testes

Automatize corretamente

Mobile – testar múltipals configurações

Encerramento

3

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

4

Speed Value

of digital content in 2012, up 50% from 2011

New Insights

1.1.Technology factorsTechnology factors1.1.Technology factorsTechnology factors

2. People skills

3. Market factors

4. Macro-economic factors

Factors impacting organizations:Factors impacting organizations:

Technology is the key to success, according to CEOs …

IBM Global CEO Study

1

5. Regulatory concerns

6. Globalization

7. Socio-economic factors

8. Environmental issues

9. Geopolitical factors

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

5

Qualidade de Software: Problema de custo em todas as indústrias

Softwares são culpados por mais problemas de negócio do que qualquer outro produto feito pelo homem

A baixa qualidade dos softwares tornou-se um dos tópicos mais caros da história humana

– > $150 bilhões por ano nos EUA.

– > $500 bilhões por ano no mundo.

Projetos cancelados devido a baixa qualidade são > 15% mais custosos do que projetos bem sucedidos de mesmo tipo e tamanho..

Source: Capers Jones, 2011Based on 675 companies, 35 government/military groups, 13,500 projects, 50-75 new projects/month, 24 countries, 15 lawsuites

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

6

Desafios de entregar no prazo com qualidade

34% de todos os novos projetos de TI implantam com atraso**

experimenta atrasos na integração, configuração ou teste da aplicação

41%41%experimentam atrasos para identificação de problemas e ajustes em produção

45%45%das aplicações sofrem roll-back por problemas de qualidade

51%51%

tempo médio para entregar uma mudança simples

4-6 Semanas

4-6 Semanas

tempo médio para isolar um defeito

3-4 Semanas

3-4 SemanasGAP GAP

ProduçãoDesenvolvimento Testes

1. Dificuldade em atender às requisições de desenvolvimento e testes para configuração de ambientes – infraestrutura, middleware e aplicações2. Defeitos em aplicações e problemas de desempenho causam 50% dos rollbacks

1. Dificuldade em atender às requisições de desenvolvimento e testes para configuração de ambientes – infraestrutura, middleware e aplicações2. Defeitos em aplicações e problemas de desempenho causam 50% dos rollbacks

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Piores práticas – experiência pessoal

1. Deixar os testes para o final do projeto

1. Dois ciclos de testes são o suficiente

1. Qualquer um pode criar e executar os testes

1. Todos os testes devem ser detalhados e muito bem estruturados

1. Buscar 100% de automação

1. Executar o maior número de testes possíveis

1. Todos os defeitos encontrados devem ser corrigidos

1. Ignorar configurações para os testes

7

http://www.slideshare.net/pfelipe/ibm-rational-piores-prticas-em-testes

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

1) Dê foco aos testes

O esforço de testes pode beirar o infinito!

– Testar todas as variáveis, cenários, configurações…

Onde os testes são mais importantes?

– Histórico de outros projetos similares onde deu problema?

– Risco: quaiscaracterísticas do sistema são mais críticas?

Abordagem dos testes

Na média, desenvolvedores profissionais cometem de 15 a 50 erros a cada mil linhas de código criadas.

Code Complete (2nd edition) http://cc2e.com

CoQ = Technical Debt (Agile)

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

2) Antecipe a execução dos testes

Desenvolvimento iterativo / ágil

– Entregas parciais

– Oportunidade de verificar a qualidade antecipadamente

– Ciclos de testes alinhados com as iterações / sprints

“Boas equipes desenvolvem bons softwares"

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Testes de Sistema

Requisitos

TesteUnitário

UAT

OAT

Performance

Barreiras da Qualidade

Ambiente Tradicional

Big Bang

× Múltiplos defeitos identificados de uma vez× Maior risco× Mais caro

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Requisitos

TesteUnitário

Performance

UAT

OAT

Testes Integrados

Teste de Integração

Sys Tests

Acelera o teste Reduz custo Diminui o risco

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

3) Versione tudo – inclusive a infraestrutura

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Troque o seu servidor por uma nuvem

Exemplo: 300 servidores para as equipes de desenvolvimento

– Cada equipe tem os seus servidores

– Hardware obsoleto

– Sem controle

– Testes e desenvolvimento rodando na mesma máquina

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

4) Flexibilize os ambientes de testes

Cloud

DevOps

↪Common Source Control

↪Automated Builds (Build Definitions)

↪Continuous Integration (CI)

↪Automated Delivery

↪Continuous Delivery to Test (CD)

↪Continuous Delivery to Production-like Systems (Infrastructure as Code)

↪Continuous Delivery thru Prod (Cloud based)

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

A esteira de entregas

Implantar

Ambiente de execução do sistema

Repositório deControle de fontes

Artefatos fontes

.jsp

.java

.html

chef recipes

.sh

Artefatos entregáveis

Build, Empacota, Testes unitáriosBinários Configuração da plataforma

Biblioteca

18

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

E depois que o software é construído?

19

Instruções de Instalação

Red Hat Linux

Nanana na nana na nanana. Na nanana na nana. Nana nanana nananan na nana na nana nanana na na nanana.

Apache Web Server

Nanana na nana na nanana. Na nanana na nana. Nana nanana nananan na nana na nana nanana na na nanana.

CLOUD

deploy.rb

cookbook_file "/home/jazz/.jrubyrc" do

# handle segfaults that occur when using JRuby w/ the IBM JDK

# see: http://jira.codehaus.org/browse/JRUBY-5700

source "jrubyrc"

mode "0644"

end

env_options = {

# ensure that build scripts can easily access Java and Jruby from the normal path

'ANT_HOME' => node[:ant][:ant_home],

'JAVA_HOME' => node[:java][:java_path],

'PATH' => "#{node[:java][:java_path]}/bin:#{node[:jruby][:install_dir]}/jruby/bin:#{ENV["PATH"]}"

}

# install external gem libs

%w{cucumber httpclient rake net-ssh net-scp httpclient jruby-openssl json-jruby rubyzip}.each do |gem_name|

execute "install_#{gem_name}" do

action :run

command "#{node[:jruby][:install_dir]}/jruby/bin/jgem install #{gem_name}"

environment(env_options)

end

deploy.rb

cookbook_file "/home/jazz/.jrubyrc" do

# handle segfaults that occur when using JRuby w/ the IBM JDK

# see: http://jira.codehaus.org/browse/JRUBY-5700

source "jrubyrc"

mode "0644"

end

env_options = {

# ensure that build scripts can easily access Java and Jruby from the normal path

'ANT_HOME' => node[:ant][:ant_home],

'JAVA_HOME' => node[:java][:java_path],

'PATH' => "#{node[:java][:java_path]}/bin:#{node[:jruby][:install_dir]}/jruby/bin:#{ENV["PATH"]}"

}

# install external gem libs

%w{cucumber httpclient rake net-ssh net-scp httpclient jruby-openssl json-jruby rubyzip}.each do |gem_name|

execute "install_#{gem_name}" do

action :run

command "#{node[:jruby][:install_dir]}/jruby/bin/jgem install #{gem_name}"

environment(env_options)

end

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Testing Tradeoffs

CostF

idelity

Traditional Staging Environment

Testing in Cloud-basedContinuousDelivery

Testing in Cloud-basedContinuous Delivery

with Service Simulation Traditional UAT without DevOps

Typical JUnit Tests

Build Verification Tests

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

21

DevOps - checklist

• Do you use source control?

• Can you deploy a system in one step?

• Do you deploy your applications daily and verify them?

• Do you have an issue tracking system for operations, linked to a bug database used for development?

• Do you validate platform software against expected KPIs, before deploying your application? 

• Do you have well defined delivery pipeline?

• Do you have agreed upon patterns for applications and platforms?

• Can your developers launch, use, and destroy representative environments on demand?

• Do you provide Infrastructure and Platform as a Service for your development teams?

• Do you have automated tests to validate your application function and security?

• Do your new operation engineers understand how to automate system administration?

• Do your operations and development teams collaborate regularly?

*Based on “The Joel Test: 12 Steps to Better Code”http://www.joelonsoftware.com/articles/fog0000000043.html

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Define constrained systems and services for virtualization

Integration OperabilityUser AcceptanceSystem IntegrationSystemUnit Integration OperabilityUser AcceptanceSystem IntegrationSystemUnit

Performance

Developer uses virtual services to unit test code on their workstation – no elaborate environment required

Development and Test teams uses virtual services for early stage advanced testing

The full system or components of the system can be performance tested early in the cycle. Virtual services can be used when components are not available

Later in the cycle, final pre-production versions of services are swapped in as they become available. Final testing is done against real services

5) Virtualização de serviços e aplicaçõesbenefícios para todo o ciclo

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Incremental Integration TestingIncremental Integration Testing

Actual Service/App

Virtual Service/App

Test Virtualization is an enabler for continuous Integration Testing

Services, applications, systems are introduced into the continuous integration cycle in a prioritized, controlled fashion.

Test Virtualization Solution is a key enabler for Continuous Integration Testing

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

6) Automatize corretamente

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Há retorno no investimento em automação dos testes?

Testes executados com maior frequencia

Testes levam menos tempo para executar

Leva menos esforço humano para executar os testes

Podemos cobrir mais características do sistema

Podemos executar o equivalente a dias/semanas de testes em poucos minutos / horas

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Ferramentas substituem testadores?

“Podemos reduzir o número de testadores uma vez que utilizarmos ferramentas de

automação?”

– Quem são seus testadores?

• Seres “não-pensantes”, ou

• Investigadores inteligentes?

– Precisamos de mais skills, não menos

– Automação pode liberar o testador para realizar mais designs de testes

e exploração

• E assim achar mais defeitos

Ferramentas não substituem testadores, só suportam eles!

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Gerentes: o que buscar na automação dos testes

Benefícios da automação devem ser crescentes – ex: número de testes, cobertura

Custos devem ser cada vez menores

– Custo de construção para novos testes, manutenção (por teste), análise de falhas

Sinais de problemas na arquitetura do testware – testadores não-técnicos conseguem escrever e executar testes automatizados?

– Me mostre um teste automatizado rodando

– Vamos mudar para outra ferramenta? (observe a reação)

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

7) Mobile – testar múltipals configurações

Client Tier Devices

Mobile-specific challenges:Lots of device targetsProvisioning rules and

artifactsCurated app storesDependent upon

backend service versions

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Resumo

1. Dê foco aos testes

2. Antecipe a execução dos testes

3. Versione tudo (release)

4. Cloud – Flexibilize os ambientes de testes

5. Virtualize os serviços e ambientes de testes

6. Automatize corretamente

7. Mobile

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Collaborative Lifecycle Management

Delivery PipelineDelivery Pipeline

OSLC

ConfigurationAutomationConfigurationAutomation

OSLC

Continuous IntegrationContinuous Integration

OSLC

Quality ManagementQuality Management

OSLC

Provisioning AutomationProvisioning Automation

OSLC

Cloud

Pull configurations

Track work

Trigger deployment Deploy

service

Track quality

Track work

Trigger Delivery

Update configurations

Pull changes

Continuous Delivery

Change ManagementChange Management

OSLC

OSLC

Requirement ManagementRequirement Management

Trigger tests

Service Simulation & Testing

Service Simulation & Testing

OSLC

Configure endpoints

Start stubs

Application MonitoringApplication Monitoring

OSLC

Monitor application

Configure agents

Link defect

Track incident

Incident ManagementIncident Management

OSLC

Deployment DesignDeployment Design

OSLC

Generate automation

© 2012 IBM Corporation

Enabling Product and Service Innovation | Rational

Links

Jazz.Net

6 Ways for Enterprises to Adopt DevOps blog – http://ibm.co/xq71xY

Understanding and Adopting DevOps (Series on my Blog) – http://bit.ly/MyDevOps

Blog da Rational Brasil – O Mundo depende de software

– https://www.ibm.com/developerworks/mydeveloperworks/blogs/rationalbrasil/

Dorothy Graham Independent Test Consultant - www.DorothyGraham.co.uk

Felipe Freire (@pfelipebr)pfreire@br.ibm.com

top related