Fundamentos do Teste
Resumo CTFL 4.0
27/08/24 - Ana Carolina Rodrigues Rocha
Este conteúdo é um resumo do capítulo 1 do syllabus 4.0 para
Certified Tester Foundation Level - CTFL
, presente no quadro do ISTQB. Este resumo é baseado na versão
brasileira fornecida pelo
BSTQB.
É muito importante que você veja o significado linkado nas palavras-chave descritas, pois serão utilizadas
durante
todo o syllabus.
Você poderá revisar este conteúdo com base nos flashcards que criei no Brainscape.
Quaisquer erros ou incoerências que encontrar aqui, por favor entre em contato comigo pelo e-mail do rodapé.
Bons estudos ;) .
Objetivos:
- Aprender os princípios básicos dos testes, motivos pelos quais os testes são necessários e quais os objetivos do teste.
- Compreender o processo de teste, as principais atividades de teste e o testware.
- Habilidades essenciais para realização de testes.
É o conjunto de atividades que visam avaliar a qualidade, encontrar defeitos e consequentemente reduzir riscos e falhas de um artefato de software ou outro produto de trabalho que esteja sendo testado.
Envolve verificação (verifica se o sistema atende aos requisitos especificados) e validação (validar se o sistema atende as necessidades do usuários e outros stakeholders).
As atividades podem ser de testes estáticos (revisão e análise) e testes dinâmicos (execução do software). Utilizando diferentes técnicas e abordagens de teste para gerar casos de teste.
O teste precisa ser Planejado, gerenciado, estimado, monitorado e controlado.
Produto de trabalho: É o item que está sendo avaliado pelas atividade de teste. Ex.: funcionalidade que foi implementada, história de usuário, etc.
Os objetivos típicos do teste são:
- Avaliar produtos de trabalho.
- Identificar falhas e defeitos.
- Garantir a cobertura.
- Reduzir riscos.
- Verificar os requisitos e se foram atendidos.
- Verificar os requisitos contratuais, legais e normativos.
- Fornecer informações aos stakeholders.
- Criar confiança na qualidade.
- Validar o objeto de teste.
O Teste aciona e identifica falhas e defeitos no produto de trabalho. Analisa seus impactos e pode ser realizado em qualquer fase do ciclo de vida do software.
A Depuração visa encontrar e eliminar as falhas detectadas durante os testes. Seguindo os seguintes passos de acordo com o tipo de teste realizado:
Após o teste dinâmico: Reproduzir a falha → encontrar a causa → corrigir a causa.
Após o teste estático: corrigir a causa.
Após seguir esses passos é realizado o teste de confirmação, para verificar a correção, e o teste de regressão, para verificar se não há efeitos colaterais em outras partes do software que utilizam a funcionalidade alterada.
O teste é uma forma de controle de qualidade que ajuda a atingir os objetivos do projeto dentro do escopo, tempo, restrições e qualidade estabelecidas. Stakeholders também podem contruibuir para o sucesso dos testes e a atingir os objetivos, não se restringindo apenas a equipe de qualidade.
O teste é um meio econômico de detectar defeitos, contruibui para objetos de teste de maior qualidade, avalia a qualidade de um objeto de teste, contribui para tomada de decisões(ex.: liberação), fornece representação direta do usuário e ajuda a atender requisitos contratuais, legais e normas regulatórias.
Teste e QA não são a mesma coisa. Para explicar isso é necessário saber o que é QC e QA:
QC (Quality Control): Controle de Qualidade. Tem foco no produto, visa as atividades que apoiam níveis adequados de qualidade. Os testes e seus resultados são a principal forma de controle, são utilizados para corrigir defeitos. Outras formas de controle são métodos formais, simulação e prototipagem.
QA (Quality Assurance): Garantia de Qualidade. Tem foco no processo, visando sempre sua implementação e aprimoramento. Um bom processo, gera um bom produto de trabalho. Os testes e seus resultados fornecem feedback sobre os processos de desenvolvimento e teste.
Ou seja, o teste é uma forma de QC, utilizada por QA para fornecer feedbacks e aprimorar os processos.
Erro: É qualquer equívoco produzido pelo ser humano, pode haver vários motivos como pressão de tempo, falta de treinamento, cansaço, processos mal estruturados, etc. Caso não detectado, pode produzir um Defeito.
Defeito: É produzido por um erro, é uma anomalia encontrada em produtos de trabalho como script de teste, documentação, especificação de requisitos, código-fonte, etc. Caso não detectado e quando executado, pode produzir uma falha.</b>
Falha: É produzida por um defeito ou condições ambientais, é quando o sistema deixa de fazer o que deveria ou faz algo que não deveria.
Causa-raiz: É a situação que leva o ser humano ao erro, ou seja, a principal causa do erro. Deve ser analisada quando uma falha ou defeito é detectado, e ao corrigí-la outras falhas e defeitos podem ser evitados ou ter a frequência menor.
Segue o fluxo:
7 Princípios de Teste:
-
O teste mostra a presença de defeitos, não a sua ausência:
- O teste mostra que os defeitos estão presentes no objeto de teste, mas não que não existam.
- O teste reduz a probabilidade de defeitos no objeto de teste.
-
Testes exaustivos são impossíveis:
- Testar tudo nem sempre é viável, por motivos como tempo, esforço, orçamento, etc.
- Os esforços dos testes devem ser concentrados por meio de técnicas de teste, priorização de casos de teste e teste baseado em risco.
-
Testes antecipados economizam tempo e dinheiro:
- O Defeito corrigido no início do processo não provoca outros defeitos ou falhas, reduzindo o custo da qualidade.
- Testes estáticos e dinâmicos devem iniciar o mais cedo possível.
-
Os defeitos se agrupam:
- Um grupo de componentes normalmente contém a maioria dos defeitos ou é responsável pela maioria das falhas.
- É importante observar o agrupamento de defeitos para o teste baseado em risco.
-
Os testes se degradam:
- Se os mesmos testes forem repetidos, novos defeitos não serão encontrados.
- Talvez seja necessário modificar os dados de teste ou escrever novos testes. Obs.: Em casos de teste automatizados ou de regressão manter os mesmos testes pode ser benéfico.
-
Os testes dependem do contexto:
- Não existe uma abordagem universal para os testes.
- Os testes são feitos de formas diferentes em contextos diferentes.
-
Falácia da ausência de defeitos:
- Um sistema livre de defeitos, aonde a verificação é contínua, não garante que ele seja um sucesso.
- A validação também deve ser realizada para que os objetivos de negócio e expectativas do usuário e stakeholders sejam atendidas.
Algumas atividades de teste podem ajudar a atingir os objetivos do projeto. Aqui veremos quais são as atividades de teste e seus contextos, o que é um testware e sua rastreabilidade, além dos papéis no teste.
Um processo de teste é o conjunto de atividades de teste.
Os principais grupos de atividades são listados a seguir junto com suas tarefas, normalmente são implementadas de forma iterativa ou paralela. Lembrando que devem ser adaptadas as necessidades do projeto.
-
Planejamento do Teste:
- Definir os objetivos do teste.
- Selecionar a abordagem mais adequada.
-
Monitoramento e Controle de Teste:
- Verificação contínua.
- Comparação do progresso real com o esperado.
- Tomada de ações necessárias para seguir o plano.
-
Análise de Teste:
- Responder a pergunta "O que testar ?"
- Identificar os recursos testáveis.
- Priorizar as condições de teste, riscos e níveis de risco.
- Identificar defeitos na base de teste e avaliar a testabilidade.
-
Modelagem de Teste:
- Responder a pergunta "Como testar ?"
- Elaborar Casos de Teste, cartas de teste, etc.
- Identificar itens de cobertura.
- Identificar ferramentas e infraestrutura necessárias para os testes.
-
Implementação do Teste:
- Adquirir material de teste.
- Organizar casos de teste em conjuntos de teste.
- Criar os scripts de teste (manuais e automatizados).
- Criar cronograma de execução.
- Criar Ambiente de teste.
-
Execução do Teste:
- Executar os testes.
- Registrar resultados.
- Analisar anomalias.
-
Conclusão do Teste:
- Criar relatório de conclusão de teste.
- Geralmente ocorre nos marcos do projeto(ex.:entrega).
- Arquivar material de teste.
- Encerrar ambiente de teste.
- Identificar lições aprendidas e melhorias.
As atividades de teste são parte do desenvolvimento e tem também o objetivo de ajudar a atender as necessidades de negócios do projeto.
A forma como os testes e as atividades serão executadas dependem de vários fatores, alguns deles são:
- Stakeholders.
- Membros da equipe.
- Domínio do negócio.
- Fatores técnicos.
- Restrições do projeto.
- Fatores organizacionais.
- Ciclo de vida de desenvolvimento do software.
- Ferramentas.
Esses fatores têm impactos na estratégia de teste, técnicas de teste, grau de automação de teste, nível de cobertura, nível de detalhes em documentações e relatórios.
Exemplo: Você terá que definir o grau de automação de teste do software, o desejado pelos stakeholders é de 100% das funcionalidades automatizadas, entretanto o tempo disponível não é muito e o nível de habilidade dos membros da equipe não é tão alto. Dada essa situação, o mais apropriado seria providenciar um treinamento de curta duração para a equipe, incentivar a abordagem da equipe completa e definir testes de fumaça E2E para automação de testes.
Testware é o produto de trabalho fruto das atividades de teste. Alguns testwares gerados, de acordo com suas atividades, são:
- Planejamento de testes: Plano de teste, cronograma de teste, registro de risco, critérios de entrada e saída.
- Monitoramento e controle de testes: Relatórios de progresso, documento de diretrizes de controle, informações sobre os riscos.
- Análise de teste: Condições de teste, critérios de aceite, relatório de defeitos.
- Modelagem de teste: Casos de teste, cartas de teste, itens de cobertura, requisitos de dados, requisitos de ambiente.
- Implementação de teste: Procedimentos de teste, scripts de teste automatizados, conjuntos de teste, dados de teste, cronograma de execução, elementos do ambiente de teste.
- Execução de teste: Registro de testes e relatórios de defeitos.
- Conclusão do teste: Relatório de Conclusão, itens de melhoria do projeto ou iterações, lições aprendidas, solicitações de alteração.
A rastreabilidade permite a associação dos elementos da base de teste, o testware, os resultados e os defeitos encontrados.
Dá suporte a cobertura, verificando se os requisitos são cobertos pelos casos de teste e avaliando o nível de risco residual em um objeto de teste.
Auxilia também na determinação do impacto das mudanças, torna o progresso e os relatórios dos testes mais compreensíveis, facilitando na comunicação.
Exemplo de uma simples rastreabilidade: Existe uma história de usuário com o identificador, título e versão do software : "US-01 - Login - 1.0v". O caso de teste gerado para essa funcionalidade, teria o identificador do caso de teste, identificador da história de usuário referente a funcionalidade, versão do software, título do caso de teste: "[TC-01][US-01][1.0v] - Verificar Login com usuário válido"
Há ferrametas como Jira e Microsoft Azure, que auxiliam na rastreabilidade, podendo associar os elementos diretamente ao produto de trabalho que está sendo gerado.
Há duas funções principais nos testes, o papel de Gerenciamento de testes e de Testador. Pessoas diferentes podem exercer esses papéis em momentos diferentes, dependo das habilidades e do contexto do projeto/produto, mas também é possível que um profissional ocupe os dois papéis. As definições dos papéis são as seguintes:
- Gerenciamento de teste: Assume a gerencia da equipe de teste, suas atividades, é responsável pelo processo de teste. Realiza atividades de planejamento, monitoramento e controle, e conclusão de testes.
- Testador: Responsável pela parte técnica do teste, realiza atividades de análise, modelagem, implementação e execução de teste.
Habilidade é a capacidade de fazer algo bem feito, sendo assim os testadores devem ter a habilidade de realizar testes em diferentes níveis e independência de testes, além de ser participantes ativos dentro de uma equipe.
Habilidades:
- Conhecimento sobre testes: Saber utilizar Técnicas de teste, principais atividades, etc.
- Ser Métodico e ter curiosidade: Para identificar defeitos que são difíceis de encontrar e que normalmente passariam despercebidos sem essas habilidades.
- Boa comunicação: Saber ouvir, transmitir informações e trabalhar em equipe.
- Pensamento crítico, analítico e criatividade.
- Conhecimento técnico: Saber utilizar ferramentas adequadas.
- Conhecimento do negócio/domínio: Para se comunicar com o stakeholders/usuários finais/representantes de forma adequada.
A habilidade de comunicação é muito importante para nós testadores, pois geralmente somos os portadores das más notícias, e estas notícias podem ser recebidas como crítica ao trabalho do autor. As atividades de teste também podem ser consideradas destrutivas, embora contribuam muito para o sucesso e a qualidade do projeto, sendo assim os defeitos e falhas devem ser comunicados de forma construtiva.
A abordagem de equipe completa é uma prática vinda da Extreme Programming (XP), nela os membros da equipe compartilham o mesmo espaço de trabalho e qualquer um com habilidade necessária pode executar a tarefa solicitada, além de que todos são responsáveis pela qualidade.
Visa melhorar a dinâmica da equipe, comunicação, interação, compartilhamento de conhecimentos e habilidades. Os testadores transmitem conhecimento sobre testes e influenciam o desenvolvimento do produto.
"Um certo grau de independência torna o Testador mais eficaz na localização de defeitos devido às diferenças entre os vieses cognitivos do autor e do Testador" - cf. Salman - 1995.
Os produtos de trabalho são testados ...
Sem independência: pelo seu autor.
Alguma independência: pelos colegas do autor, mebros da mesma equipe.
Alta independência: por Testadores de fora da equipe, mas membros da mesma organização.
Independência muito alta: por Testadores de fora da organização.
É bom que seja realizado vários níveis de independência dentro de um mesmo projeto. Quanto maior a independência, maior será a liberdade para contestar ou refutar suposições feitas pelos stakeholders, também será maior a probabilidade de descobrir diferentes defeitos, pois a formação e perspectiva são diferentes do autor. Entretanto maior é a probabilidade de ficarem isolados da equipe de desenvolvimento, levando a falta de colaboração, problemas de comunicação e serem vistos como gargalos.
</div> </div> </div> </div>