InfoQ

InfoQ

Notícias

Meus Favoritos

Faça oLogin ou Cadastre-se para ativar o recurso de favoritos por tempo ilimitado.

O conteúdo foi adicionado aos favoritos!

Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.

Categorizando Testes

Postado por Amr Elssamadisy , traduzido por Rodrigo Piovezan em 18 Ago 2009

Seções
Desenvolvimento,
Processos e Práticas,
Arquitetura e Design
Tópicos
Agile ,
Técnicas Ágeis ,
Testes de Software
Tags
Testes

Em uma discussão recente no Yahoo! Grupo de test driven development Carlos Ble compartilhou seu entendimento de categorias de testes decorrente de sua pesquisa:

Acabei tendo a seguinte imagem:
Testes do desenvolvedor:
Testes unitários : Isolados, atômicos, inócuos: exercitados com xUnit
Testes de integração:
Testes isolados que podem mudar o estado do sistema, por exemplo: salvar em banco, escrever em arquivo... Um teste de integração não representa por si um requisito funcional. Podem ser escritos para xUnit. Eles verificam a integração do nosso código com uma ferramenta de terceiros ou com diferentes camadas de nosso próprio código, por exemplo: a camada de lógica de negócio requer a camada de acesso a dados
Testes funcionais: (também conhecidos como Testes de Sistema)
Um teste que exercita uma parte completa do sistema, algum requisito funcional. Ele pode mudar o status do sistema.
Testes do Product Owner:
Testes de aceitação: Testes funcionais cuja entrada e saída podem ser validadas por uma pessoa não-técnica, o product owner.

 

John Donaldson forneceu um modelo multidimensional para testes que foca em papéis de teste e tipos de teste:

Eu gosto da visão de testes que você propõe. Mas acho que é uma instância de um modelo maior, onde você tem (pelo menos) papéis de atuação e tipos de teste.

Papéis de atuação: desenvolvedor, testador, QA, usuário, sponsor, etc.

Tipos de teste: unitários, de integração, funcionais, sistêmicos, de aceitação, de carga prolongados (soak), preliminares (smoke), etc.

Em qualquer situação dada você provavelmente sabe qual papel se encarrega de qual teste - mas no próximo projeto isso pode ser diferente.

Dale Emery sugeriu que não saber qual tipo de teste você está escrevendo é um sintoma de código ruim e indica falta de clareza. Um teste pode cair em diversas categorias ao mesmo tempo e o que importa é o seu ponto de vista atual:

O desafio, penso eu, é que qualquer teste pode ser classificado razoavelmente de várias formas diferentes, dependendo de quais dimensões você está focando. E existem diversas dimensões que as pessoas usam para classificar testes. Eu identifiquei algumas aqui: http://cwd.dhemery.com/2004/04/dimensions/

Por isso estou menos interessado em saber "qual tipo" de teste é, e mais interessado em saber onde um teste se encaixa nas dimensões que são mais importantes para mim, dependendo do meu objetivo em determinado momento. Aquelas em que penso com mais frequência são:

  • Qual "unidade" esse teste define e valida? (Qual sistema, subsistema, objeto, colaboração...) - Qual funcionalidade o teste define e valida?
  • Quem está primariamente envolvido com esse teste? Quem se preocupa mais com os resultados da execução desse teste?
  • Quais decisões serão tomadas a partir dos resultados da execução desse teste?

Charlie Poole fornece uma análise detalhada da categorização de Carlos e sugere:

Na minha opinião, a distinção mais importante é entre os testes de objetivos do desenvolvedor e os testes de objetivos do cliente.

Essa discussão evidencia o fato de que classificar testes pode ser bastante confuso - especialmente para o iniciante.  O consenso é que a forma mais indicada para classificar testes é uma abordagem dimensional e que o tipo de classificação que é relevante depende dos objetivos do usuário naquele momento e do contexto.

Utilizar os padrões existentes por Elias Nogueira Enviado
Re: Utilizar os padrões existentes por Felipe Rodrigues Enviado
Re: Utilizar os padrões existentes por Elias Nogueira Enviado
Re: Utilizar os padrões existentes por Felipe Rodrigues Enviado
Re: Utilizar os padrões existentes por Elias Nogueira Enviado
Re: Utilizar os padrões existentes por Felipe Rodrigues Enviado
  1. Voltar ao topo

    Utilizar os padrões existentes

    por Elias Nogueira

    Várias literaturas já possuem um padrão para os tipos de teste e dimensões de teste.
    O que vejo são pessoas falando mais sobre qualidade mas não olhando o que já existe e que está em utilização por diversos profissionais.

  2. Voltar ao topo

    Re: Utilizar os padrões existentes

    por Felipe Rodrigues

    Por outro lado, diversas literaturas são incoerentes na nomemclatura dos testes. Frequentemente teste funcionais são interpretados como testes de interface de usuário. Isso é um erro, como constata a descrição do teste funcional. Em outros casos, o teste de integração é considerado o teste de interface.

    Resumindo, pelo que eu tenho visto por aí, os conceitos estão bem bagunçados.

  3. Voltar ao topo

    Re: Utilizar os padrões existentes

    por Elias Nogueira

    Tu tens razão Rodrigo!
    Mas isso acontece muito aqui no Brasil.
    Com os autores de fora isso dificilmente acontece.

  4. Voltar ao topo

    Re: Utilizar os padrões existentes

    por Felipe Rodrigues

    Rodrigo? Quem é esse? =)

    Bom, isso acontece muito com autores de fora também. Pegue por exemplo a comunidade de Rails e Grails. Cada uma tem um conceito diferente de teste funcional e teste de integração. Isso fica claro para aqueles que leram "Agile Web Development with Rails" e "Grails - The definitive Guide". Fora outros casos. Tanto acontece que os caras da lista citada na notícia estão discutindo isso. =)

    Abração,

    Felipe

  5. Voltar ao topo

    Re: Utilizar os padrões existentes

    por Elias Nogueira

    Desculpa Felipe... rsrsrssrsrs
    Se tu ir nessa linha da Agile eu vou concordar sim!
    O pessoal de Agile costuma confundir muito as questões de teste. Toda a vez que eu encontro um agialista que fala sobre estes conceitos eu mando ler alguns livros de teste escritos pelos profissionais da área.
    O foco do teste pode ser difetente, mas as nomenclaturas e técnicas utlizadas não.
    E o pessoal ainda costuma tirar conlusões proprias ao inves de consultar a literatura existente, tipo Mayers, Karner, Elfried, Bret, James Bach, etc..
    Abraço!

  6. Voltar ao topo

    Re: Utilizar os padrões existentes

    por Felipe Rodrigues

    Agora chegamos num acordo! Os agilistas é que costumam confundir essas coisas mesmo.
    Mas como eu disse acima, acho que essa confusão fica só por conta da nomemclatura.

Conteúdo Educacional

Formando equipes de alto desempenho, parte 1: Início e fases de evolução

Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.

Business Model Canvas, passo a passo

O Business Model Canvas é uma ferramenta estratégica para a construção visual de novos produtos ou serviços. Conheça cada um dos seus elementos e como preencher o Canvas, passo a passo.

Google Apps Script, Parte 2: Google Docs, triggers e envio de emails

Nessa segunda e última parte de uma série sobre o Google Apps Script, conheça como funciona o envio de emails, a conversão de documentos e como criar menus e triggers.

Serviços de cloud computing PaaS: um guia para desenvolvedores Java

Este artigo avalia seis dos mais importantes fornecedores de serviços de cloud computing PaaS para desenvolvedores Java, analisando critérios como desempenho, escalabilidade e tecnologias suportadas.

Canvas de Modelo de Negócios: uma contribuição para o sucesso de Startups

O Canvas de Modelo de Negócios é um novo modo de comunicar e suportar a validação iterativa, incremental e empírica de modelos de negócio de startups e novos produtos substituindo o plano de negócios.

Entrevista com Rebecca Parsons Parte 2: Agile Distribuído, Arquitetura vs. Design e SOA

Nesta segunda e última parte de uma entrevista exclusiva para InfoQ Brasil, Rebecca Parsons, CTO da ThoughtWorks, fala sobre o Agile Distribuído e técnicas para definição de arquiteturas.

Entrevista com Rebecca Parsons Parte 1: Agile nas Empresas e Arquitetura Evolucionária

Nessa primeira parte de uma entrevista com a CTO da ThoughtWorks, veja recomendações sobre formas de construir e arquitetar sistemas para obter o máximo de flexibilidade e responsividade a mudanças.

Agile das equipes à organização: o papel do gerente, estratégias e dicas para a adoção

Os gerentes de projetos podem assumir o papel crítico de liderar a introdução do Agile. Vejas conceitos, dicas e técnicas para apoiar esse processo de mudanças.