Skip to content

Instantly share code, notes, and snippets.

@fmarga
Last active September 19, 2022 20:10
Show Gist options
  • Save fmarga/5212ab3547e061846f1b0c9116e36796 to your computer and use it in GitHub Desktop.
Save fmarga/5212ab3547e061846f1b0c9116e36796 to your computer and use it in GitHub Desktop.

Teste de Software

Recentemente comecei a estudar com mais profundidade assuntos relacionados à qualidade de software e, tendo isso em vista, debrucei-me mais atentamente sobre questões relacionadas a Teste de Software, como tipos, técnicas, ferramentas, etc. Logo abaixo deixo um resumo dos conteúdos estudados:

Por que Testar?

  • Testes de software servem para verificar e validar se o sistema codificado atende as necessidades impostas pelas regras de negócio propostas e se o usuário consegue usufruir das funcionalidades apropriadamente;
  • É capaz de encontrar falhas e defeitos na aplicação, reduzindo-os de maneira a melhorar a qualidade do software;
  • Melhora a usabilidade da aplicação, garantindo que o usuário encontrará um ambiente previamente estudado e planejado

O que é teste?

Técnicas de Testes

podem ser:

  • Estáticas 👉 São técnicas relacionadas ao âmbito da qualidade, não se executa o software e se analisa assuntos relacionados ao código
  • Dinâmicas 👉 São técnicas que executam o software, realizando os testes

Técnicas Estáticas:

Objetivos são encontrar:

  • Falhas de segurança
  • Práticas ruins
  • Erros de linguagem ou design
  • Especificações inconsistentes
  • Erros de run-time

Técnicas Dinâmicas:

São todos os tipos e níveis de teste de software, em que se verifica tempo de resposta, performance, capacidade do software de se adaptar a diversos ambientes

Tipos de Testes

  • Não Funcional

    • performance
    • segurança
    • usabilidade
    • acessibilidade
    • responsividade
    • obervalidade
  • Funcional

    • Baseados na estrutura (caixa branca)
    • Baseados na mudança (regressão e confirmação)
    • Baseados no comportamento (caixa preta)
    • Baseados na experiência (teste exploratório)

Técnicas

  • Baseados em comportamento (caixa preta)

    • Partição de equivalência (válida e inválida)
    • Análise do valor limite
    • Tabela de decisão
    • Pair wise
    • Transição de estado
  • Baseados na Experiência

    • Teste exploratório
    • Suposição de erro
    • Baseado em checklist
  • Baseados na Estrutura (caixa branca)

    • Teste de decisão (if/else/case)
    • Teste de fluxo (for/while)

Níveis de testes

Os testes podem ser relacionados em diferentes niveis, que são:

  • Unidade/Componente: Verifica a menor parte do software de forma isolada, pode ser uma classe, um método, uma função. Em geral é o tipo de teste mais rápido e barato de se fazer, normalmente sendo atribuído à pessoa desenvolvedora
  • Integração: Acontece a partir do momento em que se quer testar como dois elementos diferentes se comportam ao unirem-se para realizar uma determinada tarefa, geralmente utilizam-se mocks para simular essa interação
  • Sistema: Verifica como um sistema funciona como um todo, tentando entender se ele consegue realizar as tarefas às quais foi planejado
  • Regressão: Acontece quando uma nova feature é implementada, testando se nada da versão anterior deixou de funcionar adequadamente
  • Aceitação: Compara a versão final apresentada condiz com os requisitos do sistema proposto inicialmente, pode ser também:
    • alfa: quando a aplicação é aberta para um maior número de pessoas testar, mas dentro de um escopo (resto da empresa, por exemplo)
    • beta: quando um número maior de usuários tem acesso à versão, geralmente um público externo selecionado que atenda a determinados requisitos

Mapa mental

Resolvi juntar tudo (e mais um pouco das anotações que ainda não estão aqui) em um único mapa mental para ajudar a ter uma visão global do assunto, ele pode ser acessado aqui: mapa mental

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment