Pergunta

Eu ouvi recentemente de Testes Funcionais sobre Unit Testing.

Eu entendo que Unit Testing testa cada uma das possibilidades de um determinado pedaço de código a partir de sua forma mais atômica. Mas o que dizer Functional Testing?

Isto soa somente a mim, gosto de testar se o código funciona, mas é tão confiável quanto Unit Testing?

Já me disseram que havia duas escolas de pensamentos para o assunto. Certains preferiria Unidade de testes, outros testes funcionais.

Há qualquer bons recursos, links, livros, quaisquer referências ou um de vós todos os que podem explicar e elighten meu caminho sobre o assunto?

Obrigado!

Foi útil?

Solução

A resposta de Jason está correto. Diferentes tipos de testes têm finalidades diferentes, e pode ser em camadas para obter melhores resultados (bom projeto, especificações de reuniões, defeitos reduzidos).

  • O projeto teste de unidade = drives (com Desenvolvimento Teste-Driven , ou TDD)
  • Integração de teste = fazer todas as peças trabalham juntos
  • o teste de aceitação do cliente = ele permite atender as necessidades do cliente
  • Os testes manuais = muitas vezes cobre a interface do usuário; testadores dedicados pode encontrar o que a automação acidentes
  • O teste de carga = quão bem funciona o sistema de executar com quantidades realistas de dados

Há alguma sobreposição entre essas categorias; testes de unidade pode especificar o comportamento, por exemplo.

E há outros; por mais que a maioria das pessoas se preocupam em saber, consulte Teste de Software .

Um ponto as pessoas perdidas é que o teste de unidade está testando pedaços de código em isolamento . testes de unidade bons não bater o banco de dados, por exemplo. Isso tem duas vantagens: torna os testes de correr rápido para que você executá-los com mais freqüência, e força-o a escrever as classes de baixo acoplamento (melhor design)

.

Você pediu recursos; Eu recomendo o livro de Roy Osherove A Arte da Unidade de Teste com exemplos em .NET . Embora nenhum livro é perfeito, este dá muitas dicas excelentes sobre a escrita de testes bons.

EDIT: E para escrever testes contra software existente, nada bate livro Michael Feathers funcionar eficazmente com legacy Code .

Outras dicas

O teste de unidade contra o teste funcional não é uma xor, mas sim uma and. O teste de unidade é de cerca de unidades de teste em isolamento durante o teste funcional é sobre o teste do todo em integração (fazer todas as unidades trabalha em conjunto corretamente?).

Ambos são componentes necessários de boas práticas de engenharia de software.

O teste de unidade testa suas unidades de código (métodos, etc.) para se certificar de que eles fazem o que você espera que eles.

O teste funcional testa seu projeto de sistema para certificar-se as peças interagem corretamente. Se você escrever um comando que leva e int e retorna uma string e testá-lo totalmente, você pode ter certeza que funciona. Mas se você não tem testes do sistema, você nunca pode perceber que o resto do código pensa que pode aceitar um valor nulo, mas não pode.

Ambos os tipos de testes são importantes.

edit: Para adicionar uma visão um pouco diferente do que gbjbaanb disse:

  • Teste de unidade = meus trabalhos de código
  • Teste funcional = meu projeto trabalhos
  • teste Integração = meu código está usando sua 3ª material do partido corretamente (bancos de dados, etc)
  • Fábrica de Teste de Aceitação = minhas obras do sistema
  • Site Acceptance Test = seu código é uma porcaria, isso totalmente não é o que eu pedi!?!
  • Teste de unidade = menor, o nível granular.
  • test = mediano, nível modular funcional.
  • teste Integração = nível de aplicação mais elevada.
  • Fábrica de Teste de Aceitação = vê-lo todos os trabalhos
  • Site Acceptance Test = ver tudo falhar:)

Todos os acima são úteis, mas eles não são mutuamente exclusivas. Você deve estar fazendo a maioria deles, mas a quantidade de tempo que você gasta em cada parte depende dos resultados que você começa a partir deles, isso é tudo. Se o seu código é muito modular para ser facilmente unidade testada, então gastar seus esforços nos testes funcionais. Se você estiver escrevendo uma biblioteca de componentes pequenos, gastar o seu tempo na unidade de testá-los, e se você está sistemas de controle de escrita para mísseis militares deve ser definitivamente aceitação local testá-las (como explosões, mesmo quando ele não é divertido :))

O teste funcional, também chamado Testing System , tem como objectivo testar o sistema completo, e verificar os requisitos funcionais são satisfeitas.

Unidade de ensaio visa testar as "unidades", ou seja, as funções ou métodos do sistema é de construção de em isolamento . Às vezes é chamado de teste de desenvolvedor. O teste de unidade pode ser difícil após o fato, é por isso TDD escreve o teste antes do código .

Essas são complementar como as unidades podem trabalhar de forma independente e não quando integrado todos juntos, ou eles podem passar nos testes de unidade, e não cumprir todos os requisitos do produto.

Unidade de Teste e Teste Funcional ter dois resultados diferentes.

verifica Unidade teste que um pequeno pedaço de código funciona como esperado. Geralmente é feito pelo desenvolvedor para garantir que o código funciona corretamente. Eles são geralmente automatizado por um teste-estrutura também.

verifica o teste funcional que um recurso funciona como esperado, passando por um certo caminho através do programa. Eles são geralmente executados por uma pessoa no software garantindo que o programa funcionará eles maneira que é suposto para o usuário. É, como tal, é um nível mais elevado, e, assim, testa várias unidades de uma só vez.

Eu acho que ambos são importantes. Se você tem recursos limitados, porém, e tem que escolher / escolher técnicas, e eu acho que depende dos produtos que você criar, mas para o que eu faço (produtos de controle automotivo usados ??por seres humanos através de alguns botões) testes funcionais são mais importantes. Ele verifica e garante que, quando o usuário recebe o produto, ele faz o que é suposto fazer. Isso não significa que devemos optar por testes de unidade, mas se push-vem-a-empurrão, funcional é o mais importante para assegurar o grande experiência do usuário e obter o produto para fora da porta.

Se você produzir, digamos, um motor de banco de dados (ou algum outro produto que não é necessariamente voltados para o usuário), o teste de unidade pode ser o que você realmente deve fazer.

Um teste de unidade testa um pedaço de código e confirma para um programador que um outro pedaço de código está fazendo o que é suposto. Em Desenvolvimento Test Driven, a unidade de teste são primeiramente escritos e observada a falhar, antes de o código é escrito fazendo com que o teste para passar. Os programadores estão interessados ??em testes de unidade. Teste Unidade são rápidos a executar.

Uma função de teste testa a sua requisito caixa preta e demonstra que um pedaço de funcionalidade do usuário está no lugar. Por exemplo, se eu pressionar o botão vermelho grande, o sino começa a tocar. O teste funcional pode até não ser testar código. Talvez existe um processo mecânico que causar o sino para o anel de ter pressionado o botão. Clientes estão interessados ??em testes funcionais como eles confirmam que um processo de alto nível se a trabalhar de uma forma que eles entendem. Eles são muitas vezes lentos para executar.

Há um lugar para ambos na maior parte do trabalho de desenvolvimento.

O teste de unidade está lá para testar pequenas unidades de código, para ver que eles funcionam como esperado.

O teste funcional está lá para teste que a funcionalidade geral do sistema é como esperado.

Eles estão em níveis diferentes e ambos devem ser usados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top