
Teste de Software

Conceitos de Teste:
>> (Myers, 1979)
Testar é o processo de executar um programa ou sistema com a intenção de encontrar defeitos (teste negativo)
>> (Hetzel, 1988)
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
>> (Rios, Cristalli, Moreira e Souza, 2003)
Testar é verificar se o software está fazendo o que deveria fazer, de acordo com seus requisitos, e se não está fazendo o que não deveria fazer
Por que Testar:
>> Qualidade
>> Economia
>> Segurança
>> Confiabilidade
>> Negócio
Regra 10 de Myers
>> A cada fase, o custo da correção é multiplicado
>> >> Por...
>> >> >> dez vezes.
Exemplo: se o defeito for encontrado na primeira fase, ele gera 1x de gasto em relação à correção.
se for encontrado na próxima fase, já fica 10x, e na outra fase, 100x e assim sucessivamente.
Quanto Teste é suficiente:
>> Para decidir quanto teste é suficiente, deve-se levar em consideração:
>> >> O nível do risco, incluindo risco técnico, do negócio e do projeto, além das restrições do projeto como tempo e orçamento
Por que é importante o apoio da empresa para a equipe de teste:
>> É importante instituir a equipe de teste e apoiar o trabalho desta equipe.
>> Mostrar as outras áreas a importância da execução do teste, do processo de teste como o todo para a qualidade final do produto de software
>> Apresentar a equipe como colaboradora do processo e não como pessoas que simplesmente apontam erros em documentações ou sistemas.
>> Esperar a resposta da equipe de Teste para então liberar um produto de software,
>> Não permitir entregas sem que o produto esteja testado
Quando deve ser iniciado o teste:
>> O ideal é que a equipe de teste esteja envolvida desde .....
>> O início do levantamento dos requisitos.
>> Após os requisitos prontos, aos analistas de teste devem avaliar para ver se tem alguma inconsistência .
>> E assim por diante, fazendo a verificação de todas as documentações geradas.
"Teste e depois codifique" (Hetzel) e "Teste cedo e frequentemente" (Beizer)
Risco:
O que é Risco –
>> “Processo sistemático de identificar, analisar e responder aos fatores de riscos a que um projeto está sujeito.”
Análise de Riscos –
>> É uma avaliação dos recursos de informação de uma organização, seus controles e suas vulnerabilidades.
Vulnerabilidade -
>> É uma falha no desenho, implementação ou operação que permite a concretização de uma ameaça.
Controle –
>> É uma maneira de tentar reduzir as causas dos riscos, evitando desse modo sua ocorrência ou, pelo menos reduzindo sua frequência de ocorrência
Tipos de Risco no processo de Teste:
>> Orçamento; insuficiente para execução dos serviços de teste;
>> Qualificação da equipe de teste; equipe sem treinamentos;
>> Ambiente de teste; ambiente de teste mais próximo do ambiente de produção;
>> Ferramentas; faltas de ferramentas necessárias para sucesso de um tipo de teste;
>> Metodologias; falta de metodologia adequada e condizente com o desenvolvimento;
>> Cronograma de recebimento de programas para teste e cronograma para devolução; Caso os prazos sejam exíguos. Negociar.
>> Novas Tecnologias; uso de tecnologias não dominadas pela equipe de teste.
Fontes de Risco
>> Organização
>> Orçamento
>> Prazo
>> Recursos Humanos
>> Processo
>> Ambiente
>> Requisitos
>> Tecnologia
>> Cliente
>> Subcontratação
Estratégia de Teste
Uma boa "Estratégia de Teste", levanta 3 simples questões:
- Quando testar?
- O que testar?
- Como testar?
A estratégia define:
As ferramentas e técnicas de teste a serem empregadas.
Os critérios de conclusão e êxito do teste a serem usados. O teste de interfaces para sistemas externos.
Simulação de danos físicos ou de ameaças à segurança.
Planejar Teste
>> 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.
>> Esta lista representa o conjunto de atividades que deverão ser executadas para que cada macro atividade seja considerada finalizada, funcionando como um "check-list" de execução da etapa de "Planejamento dos Testes".
Estimativa de Teste
>> A estimativa, como uma atividade de gerenciamento, é ....
>> >> a criação de um objetivo aproximado para custos e datas de finalização associadas com as atividades envolvidas em uma operação ou projeto em particular.
>> As melhores estimativas:
>> Representam uma visão coletiva de pessoas experientes e apresentam suporte para os participantes envolvidos
>> Fornecem catálogos específicos e detalhados de custos, recursos, tarefas e pessoas envolvidas
>> Apresentam, para cada atividade estimada, os custos, esforços e duração mais prováveis
Executar Teste
>> Durante a execução dos testes funcionais por uma equipe independente do desenvolvimento, é importante estabelecer uma forma comunicação para o relato do progresso da execução dos testes.
>> O testador é o técnico responsável pela execução de teste.
>> Ele deve observar as condições de teste e respectivos passos de teste documentados pelo analista e evidenciar os resultados de execução.
>> Em casos de execuções de teste mal sucedidas, esse profissional pode também registrar ocorrências de teste (na maioria das vezes, defeitos) em canais através dos quais os desenvolvedores tomarão conhecimento das mesmas e tomarão as providências de correção ou de esclarecimentos.
Teste de Sistema
>> O teste de sistema é uma fase do processo de teste de software em que o sistema já completamente integrado é verificado quanto a seus requisitos num ambiente de produção.
>> Está no escopo da técnica de Caixa Preta, e dessa forma não requer conhecimento da estrutura (lógica) interna do sistema.
Teste de Usabilidade
>> Teste que verifica a usabilidade da tela, a disposição dos campos, inserção de dados, localização dos botões, inserção de hints para facilitar a compreensão pelo usuário, etc.
Testes que enfatizam:
fatores humanos,
estética,
consistência na interface do usuário,
ajuda on-line e contextual,
assistentes e agentes,
documentação do usuário e
material de treinamento.
Teste de Integração
>> Teste de integração é a fase do Teste em que módulos são combinados e testados em grupo.
>> Ela sucede o Teste de Unidade, em que os módulos são testados individualmente, e antecede o Teste de Sistema, em que o sistema completo (integrado) é testado num ambiente que simula o ambiente de produção
Teste de Regressão
>> O teste de regressão é uma técnica do teste que consiste na aplicação de testes à versão mais recente do software, para garantir que não surgiram novos defeitos em componentes já testados.
Teste de Stress
>> Tipo de teste de confiabilidade destinado a avaliar como o sistema responde em condições anormais.
>> O stress no sistema pode abranger cargas de trabalho extremas, memória insuficiente, hardware e serviços indisponíveis ou recursos compartilhados limitados
Teste de Aceitação
>> O teste de aceitação é a última ação de teste antes da implantação do software. A meta do teste de aceitação é verificar se o software está pronto e pode ser usado pelos usuários finais para executar as funções e as tarefas para as quais foi criado.
Teste de Alfa
>> O teste ALFA é executado por um cliente nas instalações do desenvolvedor em ambiente controlado, onde o desenvolvedor acompanha registrando os problemas encontrados.
Teste de Beta
>> O teste BETA é realizado em uma ou mais instalações do cliente final, sem a intervenção do desenvolvedor, sendo assim é uma aplicação real do software. Os problemas são reportados regularmente ao desenvolvedor.
Boas Práticas na descrição de um erro:
Sumário de Teste
>> O sumário de teste contém o resultado FINAL do teste do projeto ou da iteração.
>> Temos neste documento:
>> Um gráfico com porcentagem de erros e suas categorias
>> Os casos de uso que fazem parte do escopo do teste
>> E as informações gerais de como foi conduzido o teste
O que deve ser automatizado?
>> Quando tomamos a decisão de iniciar a automação na execução dos testes, é bom avaliar quais testes serão automatizados primeiro. De acordo com o Elias Nogueira, já há certos tipos de testes que sofrem uma tendência a automação, sendo eles:
>> Testes de regressão;
>> Smoke Tests - teste de fumaça;
>> Tarefas repetitivas;
>> Funcionalidades críticas do software;
>> Testes com cálculos matemáticos.



