3º Módulo – Técnico em Desenvolvimento de Sistema
Professoras Caroline e Angela
É o responsável por identificar e definir os testes exigidos, monitorar o
processo de teste em detalhes e os resultados em cada ciclo de teste e
avaliar a qualidade geral. Deve garantir a qualidade dos componentes
produzidos por meio da verificação de evidência de testes e utilização de
técnicas especializadas em testes de programas e sistemas.
https://www.trt9.jus.br/pds/pdstrt9/roles/tests_analyst_7DF07642.html
https://www.catho.com.br/profissoes/analista-de-testes
https://www.vagas.com.br/cargo/analista-de-testes
O QUE É TESTE DE SOFTWARE?
É a verificação feita sobre um sistema ou parte dele para
garantir que uma determinada entrada produza, sempre,
uma saída esperada.
Questões:
1) Quando testar?
2) Como testar?
3) O que testar?
TESTE DE SOFTWARE
QUANDO TESTAR?
NÍVEIS DE TESTE
QUANDO TESTAR?
TESTE DE REGRESSÃO
TESTE BETA
NÍVEIS DE TESTE TESTE ALFA
TESTE DE ACEITAÇÃO
TESTE SISTEMA
TESTE INTEGRAÇÃO
TESTE DE UNIDADE
TESTE DE UNIDADE
Objetivo: encontrar falhas de funcionamento dentro de uma pequena
parte do sistema funcionando independentemente do todo.
Feitos pelo programador.
O alvo são sub-rotinas, métodos, classes, i.e., as menores unidades do
sistema.
Geralmente é automatizado, através de ferramentas como Junit,
PHPUnit, XXXUnit e outras.
Precisa estar sempre atualizado, coerente com as regras de negócio
atuais do sistema.
TESTE DE UNIDADE
Criação de classe de teste que compara os resultados obtidos na
execução dos métodos das classes.
TESTE DE INTEGRAÇÃO
Objetivo: validar a comunicação entre os componentes de um sistema.
Feitos pelo programador
O alvo são funcionalidades que envolvem a integração de componente.
Geralmente os tipos de falhas encontradas são de transmissão de dados
Ex.: um componente A invoca um método de um componente B espera
um valor inteiro, porém, vem um valor decimal, causando uma falha no
componente A.
Geralmente é automatizado, através de ferramentas como Junit, PHPUnit...
Podem ser feitos antes de o sistema estar concluído, à medida em que os
componentes vão ficando prontos
TESTE DE INTEGRAÇÃO
Ex.: Componente de geração de boleto bancário, com a integração de
3 componentes.
-Conexão com Banco de Dados
Calculadora
• Retorno: Juros • Retorno: foi
quantidade de • Retorno: possível ou não
dias percentual de gerar boleto
• Tipo: inteiro juros por dia • Tipo: booleano
• Tipo: decimal
Calculadora Processadora
Atraso Pagamentos
TESTE DE SISTEMA
Objetivo: executar o sistema sob ponto de vista de seu usuário final,
varrendo as funcionalidades em busca de falhas em relação aos
objetivos originais.
Planejados e executados pela equipe de teste
Cenários de teste coerentes com os requisitos especificados para o
sistema.
São realizados após a codificação do sistema estar concluída
TESTE DE SISTEMA
Ex.: Cadastro de usuário, via navegador, inserindo dados inválidos ou
incorretos para testar a resposta do sistema.
TESTE DE ACEITAÇÃO
Objetivo: executar o sistema sob ponto de vista de seu usuário final,
varrendo as funcionalidades em busca de falhas em relação aos
objetivos originais.
Planejados e executados por um grupo restrito de usuários finais do
sistema, que simulam operações de rotina do sistema de modo a
verificar se seu comportamento está de acordo com o solicitado.
Visa permitir ao cliente determinar se aceita ou não o sistema.
TESTE ALFA
Objetivo: executar o sistema de forma não planejada, sob ponto de
vista de seu usuário final, porém, apenas por um grupo pequeno de
pessoas.
Visa a identificação de possíveis erros não detectados até o
momento, encontrados enquanto mais usuários finais utilizam o
sistema de forma natural, não planejada.
Representantes do time de programadores irão acompanhar de
perto estes testes para coletar possíveis falhas a serem corrigidas e
melhorias a serem implementadas
TESTE ALFA
O grupo restrito de usuários que testarão geralmente é
composto por membros da própria organização e
também do cliente.
TESTE BETA
Objetivo: executar o sistema de forma não planejada, sob ponto de
vista de seu usuário final, porém, por um grupo grande de pessoas.
Visa a identificação de possíveis erros não detectados até o momento,
encontrados enquanto ainda mais usuários finais utilizam o sistema de
forma natural, não planejada.
Representantes do time de programadores não irão fazer
acompanhamento e coleta de erros. No teste Beta, os usuários é que
reportam os erros encontrados.
TESTE BETA
O grupo de usuários
que testarão
geralmente são
usuários reais e
desconhecidos, sendo
de uma determinada
localidade, idioma ou
que satisfizeram
determinados critérios
definidos pelo
fornecedor do sistema.
TESTE DE REGRESSÃO
Objetivo: reexecutar testes após alterações serem realizadas no
sistema, para conferir se tudo continua funcionando corretamente
(detectar efeitos colaterais):
• Após mudanças de regras durante o desenvolvimento
• Após a correção de uma falha encontrada
• Após a implementação de melhorias para lançamento de novas
versões.
Consiste em se aplicar, a cada nova versão do software ou a cada
ciclo, todos os testes que já foram aplicados nas versões ou ciclos de
teste anteriores do sistema.
TESTE DE REGRESSÃO
Ex.: correções de erros em atualizações do Windows: os testes
anteriormente escritos devem ser novamente aplicados para ter
certeza que a atualização não impactou o restante dos recursos.
O QUE É TESTE DE SOFTWARE?
É a verificação feita sobre um sistema ou parte dele para
garantir que uma determinada entrada produza, sempre,
uma saída esperada.
Questões:
1) Quando testar?
2) Como testar?
3) O que testar?
TESTE DE SOFTWARE
COMO TESTAR?
TÉCNICAS DE TESTE
TESTE DE SOFTWARE
TÉCNICAS DE TESTE
• Teste de Métodos e Classes Teste baseado em
• Teste de Comandos de Repetição entradas e saídas de
• Teste de Condições Cenários Macro
A análise estática de código é uma das práticas que verifica a
qualidade do código-fonte. Esta verificação é realizada antes
mesmo que haja execução do software.
Está relacionada à verificação, pois analisa como o código-fonte
foi construído internamente e é realizada com base num
conjunto de regras pré-estabelecidas.
Verificação por estilo: Considera
elementos como indentação,
espaços e tabs, convenção de
nomes, número de parâmetros,
alinhamento na vertical, formato e
presença de comentários, dentre
outros. São todos os aspectos que
contribuem para tornar o código
mais padronizado, organizado e
legível. Considerar a
documentação de padronização da
linguagem de programação.
Verificação por bugs: Trata de encontrar erros no sistema. Isto é
importante para antecipar a identificação de problemas no software (até
antes mesmo de sua execução pelo cliente).
Verificação por boas
práticas: Aplica uma gama de
regras para verificar se práticas
corretas estão sendo realizadas,
como evitar duplicação de código,
tamanho de métodos e classes,
tamanho de parâmetros, criação
desnecessária de variáveis locais e
muitas outras.
https://www.youtube.com/watch?v=kfFEulG6qkI
http://www.devwilliam.com.br/extra/profissional/10-boas-praticas-de-programacao
TESTE ESTÁTICO (ANÁLISE ESTÁTICA)
Objetivo: analisar o código sem executá-lo e verificar se as boas
práticas adotadas foram obedecidas.
Existem ferramentas conhecidas como lint ou linter que fazem a
análise estática do código.
• Ex.: Findbugs, PHP CodeSniffer, Ndepend, entre outras.
Outra opção é configurar a IDE ou adicionar extensões no editor que
podem indicar correções de erros da linguagem ou de estilo de
codificação.
https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
TESTE ESTÁTICO (ANÁLISE ESTÁTICA)
Perguntas importantes:
• Código está documentado?
• Variáveis e constantes possuem boa nomenclatura?
• Código está organizado e com boa legibilidade?
• Existem possíveis variáveis não inicializadas ou nulas não tratadas
pelo programador?
• O programador obedeceu à arquitetura do sistema ao codificar?
• As conexões com o banco de dados estão sendo fechadas após
utilizadas?
TESTE ESTÁTICO (ANÁLISE ESTÁTICA)
TESTE DINÂMICO
Objetivo: validar o sistema
através de sua execução.
É o método tradicional: insere
uma entrada, executa o
sistema e confere a saída.
As análises estáticas e
dinâmicas se complementam
TÉCNICAS DE TESTE
VELOCIDADE DE EXECUÇÃO BAIXA EXECUÇÃO MUITO RÁPIDA
MANUAIS AUTOMÁTICOS
REPETITIVO E CANSATIVO NÃO CANSAM E NÃO SEMTEM PREGUIÇA
NÃO EXIGE TECNOLOGIAS EXIGE DOMÍNIO DAS TECNOLOGIAS
ALTO CUSTO A CADA EXECUÇÃO ALTO CUSTO APENAS NA CRIAÇÃO
POSSUEM LIMITAÇÕES QUANDO ENVOLVE PERMITE TESTAR SITUAÇÕES IMPOSSÍVEIS
GRANDE PARALELISMO DE TESTAR MANUALMENTE
PODEM EXPLORAR ALÉM DO CENÁRIO DE FAZ APENAS O PROGRAMADO
TESTE
PODEM AVALIAR QUESTÕES VISUAIS NÃO AVALIAM QUESTÕES VISUAIS
PODEM AVALIAR QUESTÕES DE
NÃO AVALIAM USABILIDADE
USABILIDADE
O QUE É TESTE DE SOFTWARE?
É a verificação feita sobre um sistema ou parte dele para
garantir que uma determinada entrada produza, sempre,
uma saída esperada.
Questões:
1) Quando testar?
2) Como testar?
3) O que testar?
TESTE DE SOFTWARE
O QUE TESTAR?
TIPOS DE TESTE
TESTE DE FUNCIONALIDADE
Objetivo: validar que as funcionalidades do sistema estão
funcionando corretamente.
Envolve:
• Unidade
• Integração
• Sistema
• Aceitação
• Alfa
• Beta
• Regressão
TESTE DE DESEMPENHO
Objetivo: validar o desempenho do sistema no que diz respeito ao
seu tempo de resposta para determinadas operações.
Exemplos:
• Tempo de resposta de um sistema bancário para processar uma
operação
• Tempo de resposta do whatsapp para fazer upload de fotos
• Tempo de resposta de um robô médico para responder a
comandos
Ferramenta: Jmeter
TESTE DE USABILIDADE
Objetivo: validam aspectos que envolvem a experiência do
usuário ao utilizar o sistema.
Exemplos:
• Estética de um website
• Definição e disposição de cores da interface do aplicativo
• Tipo de interface a ser utilizada: Touch screen? Gestos?
Sensível ao som?
• Ajuda on-line e contextual
• Manual do usuário
TESTE DE SEGURANÇA
Objetivo: validam a proteção do sistema contra invasões ou
acesso não autorizado a informações.
Exemplos:
• Sites com acesso restrito
• Tráfego de informações criptografadas
TESTE DE PORTABILIDADE
Objetivo: valida o funcionamento do sistema em diferentes
plataformas e dispositivos, nas quais o sistema está proposto a
funcionar.
Exemplos:
• IOS,
• Android,
• Windows,
• Linux,
• Smarphones,
• Tablets,
• Notebooks, etc.
TESTE DE STRESS
Objetivo: validam o comportamento do sistema em condições extremas.
O stress no sistema pode abranger cargas de trabalho extremas, memória
insuficiente, hardware e serviços indisponíveis ou recursos compartilhados
limitados.
Executados o quanto antes para se ter o tempo necessário para corrigir ou
melhorar o desempenho do sistema conforme necessário.
Exemplos:
• Sobrecarga de acesso a um website.
• Sobrecarga de processamento em um sistema de gestão de clientes.
Ex.: extração de relatórios grandes em paralelo
ETAPAS DE DESENVOLVIMENTO DE TESTE
CENÁRIOS DE
EXECUÇÃO DOS
TESTE DE
• REQUISITOS • ARQUITETURA TESTES
SISTEMA
• EX: cadastro de • TECNOLOGIAS
cliente, login,
• ESPECIFICAÇÃO • SISTEMA
TÉCNICA DAS • CODIFICAÇÃO • ACEITAÇÃO
locação de filmes, FUNCIONALIDADES
etc • OPERAÇÕES DO • ALFA
CENÁRIOS DE SISTEMA
TESTES DE
• BETA
TESTE DE UNIDADE E
ACEITAÇÃO INTEGRAÇÃO