Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Qualidade e Teste de Software

No description
by

Placido Segundo

on 4 December 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Qualidade e Teste de Software

PROCESSO DE QUALIDADE
NÍVEIS DE TESTE
FERRAMENTAS PARA SUPORTE AOS TESTES
CERTIFICAÇÕES E CARREIRA EM TESTE DE SOFTWARE
Qualidade e Teste de Software
MSc. Plácido Segundo

AGENDA
INTRODUÇÃO
PROCESSO DE QUALIDADE
NÍVEIS DE TESTE
TIPOS DE TESTE
FERRAMENTAS PARA SUPORTE AOS TESTES
CERTIFICAÇÕES E CARREIRA EM TESTE DE SOFTWARE

O QUE É TESTE DE SOFTWARE?
QUAL A FINALIDADE DE TESTAR UM SOFTWARE?
QUANDO INICIAR O CICLO DE TESTE EM UM SOFTWARE?
VERIFICAÇÃO x VALIDAÇÃO x QA
DEFEITO x ERRO x FALHA
INTRODUÇÃO
O QUE É TESTE DE SOFTWARE?
QUAL A FINALIDADE DE TESTAR UM SOFTWARE?
QUANDO INICIAR O CICLO DE TESTE EM UM SOFTWARE?
VERIFICAÇÃO x VALIDAÇÃO x QA
DEFEITO x ERRO x FALHA
Testar é o processo de executar um programa ou sistema com a intenção de encontrar defeitos (teste negativo) (Myers, 1979)
Testar é qualquer atividade que, a partir da avaliação de um atributo ou capacidade, permita determinar se o programa ou sistema obtém os resultados desejados (Hetzel, 1988)
DEFEITO
Ato inconsistente cometido por um indivíduo ao tentar entender uma determinada informação, resolver um problema ou utilizar um método ou uma ferramenta. Por exemplo, uma instrução ou comando incorreto.
ERRO
Manifestação concreta de um defeito num artefato de software. Diferença entre o valor obtido e o valor esperado.
FALHA
Comportamento operacional do software diferente do esperado pelo usuário. Uma falha pode ter sido causada por diversos erros e alguns erros podem nunca causar uma falha.
Segui o processo?
Fiz a coisa corretamente?
Fiz a coisa certa?
Se sua pergunta é...
QA - Garantia de Qualidade
Verificação
Validação
então você está falando de:
Custo para corrigir um defeito aumenta exponencialmente com o tempo.
Em 1983, uma III Guerra Mundial, quase teve início, devido a um bug no software de alerta Soviético. A falha fez com que o software mostrasse que os E.U.A. tinha lançado cinco mísseis.
A nosso sorte, foi que o Tenente Coronel Stanislav Petrov, considerou que a informação estava errada e não ordenou o contra-ataque, evitando assim o inicio da III Grande Guerra.
#testFacts_1
Em 1990, um bug numa central telefônica da AT&T deixou milhões de pessoas nos EUA sem comunicação de longa distância. O erro ocorreu num break do código C, que não foi testado corretamente.
#testFacts_2
No primeiro lançamento da série Ariane 5, em 4 de junho de 1996, menos de um minuto após o lançamento, o foguete francês Ariane 501 se autodestruiu. A falha ocorreu devido a uma anomalia interna de software, que ocorreu durante a execução de uma conversão de dados de um número de 64 bits em ponto flutuante para um inteiro de 16 bits com sinal. 
#testFacts_3
Uma falha na atualização do software empregado no Ministério do Trabalho e Pensões britânico, realizada pela empresa EDS, custou aos contribuintes mais de 1 bilhão de libras em 2004.
#testFacts_4
A máquina de radiação canadense Therac-25 irradiou doses letais em pacientes devido a um bug sutil chamado de “condição de corrida“. Um técnico acidentalmente configurou o Therac-25 de modo que o feixe de elétrons seria como um fogo de alta potência.
#testFacts_5
ETAPA 3
ETAPA 4
ETAPA 6
ETAPA 5
ETAPA 2
ETAPA 1
Modelagem de Testes
Esta etapa é caracterizada pela identificação de todos os elementos necessários para a implementação de cada caso de testes especificado. Fazem parte desta etapa a modelagem das massas de testes e a definição dos critérios de tratamento de arquivos (envelhecimento, descaracterização e comparação de resultados).
Preparação do Ambiente
Esta etapa é caracterizada por um conjunto de atividades que visa a disponibilização física de um ambiente de testes “segregado” que esteja pronto para sofrer a bateria de testes planejadas nas etapas anteriores, sem que existam “intervenções humanas” que interrompam o processo “contínuo” dos testes.
Execução dos Testes
Esta etapa é caracterizada pela execução e conferência dos testes planejados, de forma a garantir que o comportamento do aplicativo permanece em “conformidade” com os requisitos contratados pelo Cliente.
Análise dos Resultados
Esta etapa é caracterizada pela análise e confirmação dos resultados relatados durante a fase de execução dos testes. Os resultados em “não-conformidade” deverão ser “confirmados” e “detalhados” para que a Fábrica de Software realize as correções necessárias. Já os casos de testes progressivos em “conformidade” deverão ter seu resultado “POSITIVO” reconfirmado e seu “baseline” atualizado.
Planejamento dos Testes
Esta etapa caracteriza-se pela definição de uma proposta de testes baseada nas expectativas do Cliente em relação à prazos, custos e qualidade esperada, possibilitando dimensionar a equipe e estabelecer um esforço de acordo com as necessidades apontadas pelo Cliente.
Especificação dos Testes
Esta etapa é caracterizada pela identificação dos casos de testes que deverão ser construídos e modificados em função das mudanças solicitadas pelo Cliente, bem como pelo próprio aperfeiçoamento do processo de testes.
ETAPA 7
Encerramento do Processo
Esta etapa é caracterizada pela avaliação de todo o Processo de Teste de Software, comparando os resultados alcançados em relação ao que foi inicialmente planejado. Neste momento, diversos indicadores são extraídos, visando avaliar qualitativamente e quantitativamente o desempenho do trabalho, através de comparações históricas de projetos anteriores.
Pensamento
CRÍTICO
de um testador
Pense no objetivo
Atende os requisitos funcionais?
Pense no ambiente
Funciona da mesma maneira em todos os browsers e SO's?
Pense nos reqisitos implícitos e não funcionais
Está fácil de enteder? está rápido?
Pense no cliente
Se eu fosse o cliente eu queria ver...
Pense em possíveis problemas
Creio que com este dados é provável que ocorra um problema
Pense em definições
Se eu fosse um cliente, entenderia este
Label
?
Pense no uso em ambientes heterogêneos
No meu IPhone funciona, mas e no BlackBerry?
Seja
CRIATIVO
,
DETALHISTA
E
CRÍTICO
!
O que testar em um copo?
Testar o volume (capacidade)
Testar a transparênia?
Testar a durabilidade?
Testar a resistência ao frio?
Testar a resistência ao calor?
Testar a resistência ao som?
Testar a resistência física?
Testar como fica quando quebrado?
Testar o peso?
Testar as dimensões?
Testar o material usado?
Testar a espessura?
more.. more.. more..
Dimensão do teste que determina a fase do desenvolvimento que se aplica um determinado teste.
Teste Unitário
É aplicado aos menores componentes de código, é feito pelos programadores e testa as unidades individuais: funções, objetos e componentes.
Teste de Integração
É feito ao término de cada iteração para validar a execução das funções referentes aos casos de uso, é feito normalmente pelo analista de sistemas.
Teste de Sistema
Executa o sistema como um todo para validar a execução das funções acompanhando cenários elaborados (casos de teste) por um analista de testes em um ambiente de testes.
Teste de Aceitação
É feito antes da implantação do software, o cliente é quem executa este tipo de teste no ambiente de homologação, tem como objetivo verificar se o software está pronto para ser utilizado pelos usuários finais.
TIPOS DE TESTE
Teste de Requisitos
Verifica se o sistema é executado conforme o que foi especificado. São realizados através da criação de condições de testes e cheklists de funcionalidades.
Teste de Regressão
Testa se algo mudou em relação ao que já estava funcionando corretamente, ou seja, é voltar a testar segmentos já testados após uma mudança em outra parte do software.
Teste de Tratamento de Erros
Determina a capacidade do software de tratar transações incorretas.
Teste de Suporte Manual
Verifica se os procedimentos de suporte manual estão documentados e completos, determina se as responsabilidades pelo suporte manual foram estabelecidas.
Teste de Interconexão
Garante que a interconexão entre os softwares de aplicação funcione corretamente. Pois, softwares de aplicação costumam estar conectados com outros softwares de mesmo tipo.
Teste de Controle
Assegura que o processamento seja realizado conforme sua intenção. Entre os controles estão a validação de dados, a integridade dos arquivos, as trilhas de auditoria, o backup e a recuperação, a documentação, entre outros.
Teste Paralelo
Comparar os resultados do sistema atual com a versão anterior determinando se os resultados do novo sistema são consistentes com o processamento do antigo sistema ou da antiga versão.
Testes Funcionais
Testes Estruturais
Teste de Execução
Verifica os tempos de resposta, de processamento e o desempenho (performance), avaliando o comportamento do software no ambiente de produção e verificando se as premissas de desempenho são atendidas.
Teste de Estresse
Avalia o comportamento do software sob condições críticas, tais como restrições significativas de memória, espaço em disco, etc., ou seja, coloca o software sob condições mínimas de operação.
Teste de Recuperação
A recuperação é a capacidade de reiniciar operações após a perda da integridade de uma aplicação como, por exemplo: Ao desligar o computador, queda de energia elétrica, entre outros. O teste de recuperação garante a continuidade das operações após um desastre.
Teste de Operação
Avalia o processo e sua execução. São desenhados para estabelecer se o sistema é executável durante a operação normal. É um tipo de teste muito específico, depende do software a ser testado, um exemplo é o software de “Call Center”.
Teste de Conformidade
Verifica se o software foi desenvolvido de acordo com padrões, normas, procedimentos e guias de TI.
Teste de Segurança
Avalia a adequação dos procedimentos de proteção e as contramedidas projetadas, para garantir a confidencialidade das informações e a proteção dos dados contra o acesso não autorizado de terceiros.
Existem dois tipos de técnicas de teste de software:
A
Estrutural
que tende a revelar erros que ocorrem durante a codificação do programa. É conhecida também como técnica de “Caixa Branca”.
E a
Funcional
que garante o cumprimento dos requisitos pelo sistema. Essa técnica é conhecida também como técnica de “Caixa Preta”.
Gestão de Testes
TestLink
(
http://www.teamst.org
)
Gestão de Defeitos
Mantis
(
http://www.mantisbt.org
)
Gestão de Versões
Subversion
(
http://subversion.tigris.org
)
Automação de Testes (Funcionais web)
Selenium
(
http://www.seleniumhq.org
)
Automação de Testes (Funcionais desktop)
Sikuli

(
http://www.sikuli.org/
)
Automação de Testes (Estruturais)
JUnit
(
http://junit.org
) +
Eclemma
(
http://eclemma.org
)
Carga, Stress e Performance
JMeter
(
http://jakarta.apache.org/jmeter/index.html
)
ECLEMMA
1ª Etapa
3ª Etapa
5ª Etapa
7ª Etapa
6ª Etapa
4ª Etapa
2ª Etapa
Sim, o Capitão América é zueira!
Previne alguns prejuizos..
Previne GRANDES acidentes..
Previne até Mortes!
+ prejuizos..
TEST CERTIFICATIONS
CARREIRA
Quem mais emprega?
Fábricas de Software;
Consultorias Especializadas;
Institutos de Inovação e Pesquisa;
Instituições Financeiras;
Fábricas de Teste (Home Office);
Mercado de Games;
Testar é verificar se o software está fazendo o que deveria fazer e se não está fazendo o que não deveria fazer (Rios, Cristalli, Moreira e Souza, 2003)
BR zueiro...
Considerações Finais
Poder pode.. e é muito comum inclusive!

Porque não deveria?
Implementação de testes "viciados";
Baixa cobertura do código;
Developers não enxergam suas falhas;
Developers não gostam ou tem preguiça de testar;
Sou programador, posso testar meu próprio código?
Alguns pensamentos mais modernos defendem uma visão diferente...

Porque deveria?
Detecção de defeitos cada vez mais cedo;
Maior liberdade para o engenheiro de teste focar em aspectos não funcionais, fluxos de integração e outros pontos que fogem a unidade do desenvolvedor.
Cont...
Por onde começar?
Obrigado!
Contatos:
Skype: placidoii
E-mail: pcss@cin.ufpe.br
Quem eu sou?
Graduado em Sistemas de Informação
Especialista em Engenharia de Software
Mestre em Gestão de TI

Atuação Profissional
Engenheiro de Software
Professor
Freelancer
Dota player!
Pai do Gustavo!
REQUISITOS
PROJETO
CODIFICAÇÃO
TESTES DE
DESENVOLVIMENTO
TESTES DE
ACEITAÇÃO
UTILIZAÇÃO
ETAPAS DO CICLO DE DESENVOLVIMENTO
Full transcript