Visão geral do teste de software
O Teste de Software é a avaliação do software em relação aos requisitos coletados dos usuários e especificações do sistema. O teste é conduzido no nível de fase do ciclo de vida de desenvolvimento de software ou no nível de módulo no código do programa. O teste de software inclui Validação e Verificação.
Validação de Software
A validação é o processo de examinar se o software atende ou não aos requisitos do usuário. É realizado no final do SDLC. Se o software atender aos requisitos para os quais foi feito, ele é validado.
- A validação garante que o produto em desenvolvimento esteja de acordo com os requisitos do usuário.
- A validação responde à pergunta - "Estamos desenvolvendo o produto que atende a tudo o que o usuário precisa deste software?".
- A validação enfatiza os requisitos do usuário.
Verificação de Software
Verificação é o processo de confirmar se o software está atendendo aos requisitos de negócios e é desenvolvido de acordo com as especificações e metodologias adequadas.
- A verificação garante que o produto sendo desenvolvido está de acordo com as especificações do projeto.
- A verificação responde à pergunta - "Estamos desenvolvendo este produto seguindo firmemente todas as especificações de design?"
- As verificações se concentram no projeto e nas especificações do sistema.
Alvos do teste são -
Errors- Esses são erros reais de codificação cometidos por desenvolvedores. Além disso, há uma diferença na saída do software e a saída desejada, é considerada um erro.
Fault- Quando existe um erro, ocorre uma falha. Uma falha, também conhecida como bug, é o resultado de um erro que pode fazer com que o sistema falhe.
Failure - a falha é considerada a incapacidade do sistema de realizar a tarefa desejada. A falha ocorre quando existe falha no sistema.
Teste manual versus teste automatizado
O teste pode ser feito manualmente ou usando uma ferramenta de teste automatizada:
Manual- Este teste é executado sem a ajuda de ferramentas de teste automatizadas. O testador de software prepara casos de teste para diferentes seções e níveis do código, executa os testes e relata o resultado ao gerente.
O teste manual consome tempo e recursos. O testador precisa confirmar se os casos de teste corretos são usados ou não. A maior parte dos testes envolve testes manuais.
AutomatedEste teste é um procedimento de teste feito com a ajuda de ferramentas de teste automatizadas. As limitações do teste manual podem ser superadas usando ferramentas de teste automatizadas.
Um teste precisa verificar se uma página da web pode ser aberta no Internet Explorer. Isso pode ser feito facilmente com testes manuais. Mas para verificar se o servidor web pode suportar a carga de 1 milhão de usuários, é quase impossível testar manualmente.
Existem ferramentas de software e hardware que ajudam o testador na realização de testes de carga, testes de estresse e testes de regressão.
Abordagens de teste
Os testes podem ser realizados com base em duas abordagens -
- Teste de funcionalidade
- Teste de implementação
Quando a funcionalidade está sendo testada sem levar em consideração a implementação real, isso é conhecido como teste de caixa preta. O outro lado é conhecido como teste de caixa branca, onde não apenas a funcionalidade é testada, mas a maneira como ela é implementada também é analisada.
Testes exaustivos são o método mais desejado para um teste perfeito. Todos os valores possíveis na faixa dos valores de entrada e saída são testados. Não é possível testar todos os valores no cenário do mundo real se a faixa de valores for grande.
Teste de caixa preta
É realizado para testar a funcionalidade do programa. Também é chamado de teste 'comportamental'. O testador, neste caso, possui um conjunto de valores de entrada e respectivos resultados desejados. Ao fornecer a entrada, se a saída corresponder aos resultados desejados, o programa é testado 'ok' e, de outra forma, problemático.
Neste método de teste, o design e a estrutura do código não são conhecidos pelo testador, e os engenheiros de teste e usuários finais conduzem este teste no software.
Técnicas de teste de caixa preta:
Equivalence class- A entrada é dividida em classes semelhantes. Se um elemento de uma classe passar no teste, presume-se que toda a classe foi aprovada.
Boundary values- A entrada é dividida em valores finais superiores e inferiores. Se esses valores passarem no teste, presume-se que todos os valores intermediários também podem passar.
Cause-effect graphing- Em ambos os métodos anteriores, apenas um valor de entrada por vez é testado. Causa (entrada) - O efeito (saída) é uma técnica de teste onde combinações de valores de entrada são testadas de forma sistemática.
Pair-wise Testing- O comportamento do software depende de vários parâmetros. No teste de pares, os vários parâmetros são testados em pares para seus diferentes valores.
State-based testing- O sistema muda de estado no fornecimento de entrada. Esses sistemas são testados com base em seus estados e entrada.
Teste de caixa branca
É conduzido para testar o programa e sua implementação, a fim de melhorar a eficiência ou estrutura do código. Também é conhecido como teste 'Estrutural'.
Neste método de teste, o design e a estrutura do código são conhecidos pelo testador. Os programadores do código conduzem este teste no código.
A seguir estão algumas técnicas de teste de caixa branca:
Control-flow testing- O objetivo do teste de fluxo de controle para configurar casos de teste que cobrem todas as instruções e condições de ramificação. As condições de ramificação são testadas para serem verdadeiras e falsas, para que todas as declarações possam ser cobertas.
Data-flow testing- Esta ênfase técnica de teste para cobrir todas as variáveis de dados incluídas no programa. Testa onde as variáveis foram declaradas e definidas e onde foram usadas ou alteradas.
Níveis de Teste
O teste em si pode ser definido em vários níveis de SDLC. O processo de teste é executado em paralelo ao desenvolvimento de software. Antes de saltar para a próxima etapa, uma etapa é testada, validada e verificada.
O teste separadamente é feito apenas para garantir que não haja erros ou problemas ocultos no software. O software é testado em vários níveis -
Teste de Unidade
Durante a codificação, o programador executa alguns testes nessa unidade de programa para saber se ela está livre de erros. O teste é realizado sob a abordagem de teste de caixa branca. O teste de unidade ajuda os desenvolvedores a decidir se as unidades individuais do programa estão funcionando de acordo com os requisitos e sem erros.
Teste de integração
Mesmo que as unidades de software funcionem bem individualmente, é necessário descobrir se as unidades, se integradas juntas, também funcionariam sem erros. Por exemplo, passagem de argumento e atualização de dados etc.
Teste de Sistema
O software é compilado como produto e depois testado como um todo. Isso pode ser feito usando um ou mais dos seguintes testes:
Functionality testing - Testa todas as funcionalidades do software em relação ao requisito.
Performance testing- Este teste prova a eficiência do software. Ele testa a eficácia e o tempo médio gasto pelo software para realizar a tarefa desejada. O teste de desempenho é feito por meio de teste de carga e teste de estresse, onde o software é colocado sob alta carga de usuário e dados em várias condições ambientais.
Security & Portability - Esses testes são feitos quando o software se destina a funcionar em várias plataformas e é acessado por várias pessoas.
Teste de aceitação
Quando o software está pronto para ser entregue ao cliente, ele passa pela última fase de testes, onde é testado quanto à interação e resposta do usuário. Isso é importante porque, mesmo que o software atenda a todos os requisitos do usuário e o usuário não goste da forma como aparece ou funciona, ele pode ser rejeitado.
Alpha testing- A própria equipe de desenvolvedores realiza o teste alfa usando o sistema como se estivesse sendo usado no ambiente de trabalho. Eles tentam descobrir como o usuário reagiria a alguma ação no software e como o sistema deveria responder às entradas.
Beta testing- Depois que o software é testado internamente, ele é entregue aos usuários para usá-lo em seu ambiente de produção apenas para fins de teste. Este ainda não é o produto entregue. Os desenvolvedores esperam que os usuários, nesta fase, tragam problemas minuciosos, que foram omitidos.
Teste de Regressão
Sempre que um produto de software é atualizado com novo código, recurso ou funcionalidade, ele é testado exaustivamente para detectar se há algum impacto negativo do código adicionado. Isso é conhecido como teste de regressão.
Documentação de teste
Os documentos de teste são preparados em diferentes estágios -
Antes do Teste
O teste começa com a geração de casos de teste. Os seguintes documentos são necessários para referência -
SRS document - Documento de requisitos funcionais
Test Policy document - Descreve até que ponto o teste deve ser realizado antes de liberar o produto.
Test Strategy document - Isso menciona aspectos detalhados da equipe de teste, matriz de responsabilidade e direitos / responsabilidades do gerente e engenheiro de teste.
Traceability Matrix document- Este é um documento SDLC, que está relacionado ao processo de coleta de requisitos. Conforme surgem novos requisitos, eles são adicionados a esta matriz. Essas matrizes ajudam os testadores a saber a origem do requisito. Eles podem ser rastreados para frente e para trás.
Enquanto está sendo testado
Os seguintes documentos podem ser exigidos enquanto o teste é iniciado e está sendo feito:
Test Case document- Este documento contém uma lista de testes que devem ser realizados. Inclui plano de teste de unidade, plano de teste de integração, plano de teste de sistema e plano de teste de aceitação.
Test description - Este documento é uma descrição detalhada de todos os casos de teste e procedimentos para executá-los.
Test case report - Este documento contém o relatório do caso de teste como resultado do teste.
Test logs - Este documento contém logs de teste para cada relatório de caso de teste.
Após o teste
Os seguintes documentos podem ser gerados após o teste:
Test summary- Este resumo de teste é uma análise coletiva de todos os relatórios e registros de teste. Ele resume e conclui se o software está pronto para ser iniciado. O software é lançado sob o sistema de controle de versão se estiver pronto para iniciar.
Teste vs. Controle de Qualidade, Garantia de Qualidade e Auditoria
Precisamos entender que o teste de software é diferente de garantia de qualidade de software, controle de qualidade de software e auditoria de software.
Software quality assurance- São meios de monitoramento do processo de desenvolvimento de software, pelos quais se garante que todas as medidas sejam tomadas de acordo com os padrões da organização. Esse monitoramento é feito para garantir que os métodos de desenvolvimento de software adequados foram seguidos.
Software quality control- Este é um sistema para manter a qualidade do produto de software. Pode incluir aspectos funcionais e não funcionais do produto de software, que aumentam a boa vontade da organização. Este sistema garante que o cliente está recebendo um produto de qualidade para sua necessidade e o produto certificado como 'apto para uso'.
Software audit- Esta é uma revisão do procedimento usado pela organização para desenvolver o software. Uma equipe de auditores, independente da equipe de desenvolvimento, examina o processo de software, procedimento, requisitos e outros aspectos do SDLC. O objetivo da auditoria de software é verificar se o software e seu processo de desenvolvimento estão em conformidade com os padrões, regras e regulamentos.