Com base em muitas fontes, não acredito que a definição simples de que o objetivo do teste seja encontrar o maior número possível de bugs - testamos para garantir que funcione ou não. Por exemplo, followint são objetivos do formulário de teste ISTQB:
Determine que (produtos de software) atendem aos requisitos especificados (acho que é a verificação)
Demonstrar que (produtos de software) são adequados ao objetivo (acho que é validação)
Detectar defeitos
Concordo que o teste é verificação, validação e detecção de defeitos. Isso está correto?
testing
theory
verification
João V
fonte
fonte
Respostas:
Eu acho que você acertou exatamente.
Verificação e validação são coisas diferentes e, de fato, são bem definidas. Embora eu não goste muito do documento, a ISO 9000ff é altamente relevante para o controle de qualidade e define a Verificação como comparando um produto com seus requisitos e a Validação como verificando se ele realmente atende às necessidades do cliente / usuário e todos sabemos que isso pode ser diferente. .
Ambos podem ser feitos através de testes. A verificação levaria a testes gerados nos requisitos do formulário. A validação leva ao teste realizado pelos testes sem referência direta aos requisitos. Eu acho que isso geralmente é chamado de teste exploratório. Obviamente, isso deve ser feito por pessoas com um entendimento real das necessidades reais dos usuários, para que os testes alfa e beta de usuários reais sejam opções óbvias.
Em uma base teórica, acho que alguém poderia argumentar que qualquer coisa coberta pelos dois primeiros não é um bug e, portanto, encontrar erros como um objetivo separado não faz sentido. Mas acho que há coisas que você realmente não pode verificar ou validar. Por exemplo, segurança: como você valida ou verifica se um sistema de software é seguro contra ataques? Em vez disso, você tenta encontrar vulnerabilidades. Esta pesquisa não verifica ou valida nada se não encontrar problemas, mas encontra erros se for bem-sucedida.
fonte
Da Wikipedia: "... Em outras palavras, a validação garante que o produto atenda às necessidades do usuário e que as especificações estejam corretas em primeiro lugar , enquanto a verificação garante que o produto foi construído de acordo com os requisitos e as especificações de design A validação garante que "você construiu a coisa certa". A verificação garante que "você construiu a coisa certa". A validação confirma que o produto, conforme fornecido, cumprirá o uso pretendido. "
Você não pode testar as necessidades do usuário e verificar se as especificações estavam corretas por código. Portanto, a validação não é feita pelo teste.
A verificação supõe que seus requisitos e design estejam corretos, para que você possa testá-lo escrevendo código (teste).
fonte
Para o mundo real, o teste é a verificação e validação do software que atende aos requisitos do software (comercial / funcional / não funcional). O objetivo destes é determinar se o software é adequado para a finalidade. Qualquer comportamento que não atenda aos requisitos do aplicativo é um defeito - cuja gravidade precisará ser ponderada antes de determinar se o software é adequado para a finalidade.
Os defeitos de baixa severidade provavelmente não são um impedimento para a passagem do software para um uso do tipo de produção. A severidade alta pode exigir uma correção para ser produzida. No mundo real, todos os softwares apresentam defeitos, alguns são problemas de codificação e outros, por falta de requisitos - o que pode não ser testado porque você não pode testar requisitos desconhecidos.
fonte
Existem muitas definições de verificação e validação. Muitas pessoas até usam a tag V&V para agrupar ambas em uma única atividade. O objetivo é garantir que o software faça as coisas certas e as coisas certas. Se é para verificar a conformidade com os requisitos ou tentar encontrar bugs, não é essencial nesse nível.
O teste é uma das muitas técnicas para verificação e validação, e não o contrário. A revisão de código é outra e a verificação formal, com provas matemáticas ainda outra.
No entanto, o teste deve ser realizado com o objetivo de encontrar bugs, não com o objetivo de verificar a conformidade com os requisitos.
A principal diferença está na mente do testador. É muito mais fácil criar um caso de teste mostrando que o software funciona como planejado (verificação de conformidade), do que criar um caso de teste mostrando que o software falha (localizando bugs).
Um grande testador é apaixonado por quebrar um software, não por exercitá-lo de maneira segura.
fonte
Vamos ver isso do ponto de vista prático. Para teste, você precisa definir casos de teste. Normalmente, você define casos de teste de acordo com os requisitos especificados, e eles devem abranger casos de "dia feliz" e "casos extremos" - especialmente os últimos geralmente são definidos com a intenção de interromper o software. Quando alguns de seus testes falham, eles mostram bugs / defeitos. Quando você tem uma quantidade razoável de casos de teste para cada requisito e todos os testes são aprovados, pode não ter provado totalmente que todos os requisitos foram atendidos, mas você aumentou a probabilidade de fazer isso e fez alguma verificação.
Portanto, para essa parte da pergunta, encontrar bugs e verificação pode ser apenas dois lados do mesmo processo:
testes falham: defeitos encontrados
testes são aprovados: verificação feita (pelo menos até certo ponto, se você fornecer testes suficientes e certos)
Em relação à validação: como apontado pelo @Mert, a validação pode ser feita através de testes de aceitação, mas não por outras formas de teste. Portanto, o teste em geral não causa validação, apenas quando realizado como teste de aceitação, por alguns dos usuários em potencial.
fonte
Tudo depende da sua definição de "verificação". Por exemplo, a verificação formal geralmente não é algo feita por uma equipe de controle de qualidade, mas é uma responsabilidade dos desenvolvedores. Quase ninguém faz a verificação formal por causa do alto custo associado (lacuna de conhecimento e recursos necessários).
fonte
O teste de software não é o mesmo que o controle de qualidade. Você entendeu direito. No geral, os testes de software incluem muitos estágios (fumaça, unidade, regressão, integração, aceitação pelo usuário etc.).
Portanto, garantir que o software funcione de acordo com os requisitos é o principal objetivo do controle de qualidade (especialista em garantia da qualidade - conhecido como o chamado testador há alguns anos). No entanto, não é apenas um teste . O controle de qualidade garante que um conjunto adequado de processos para executar a verificação da qualidade do produto em questão esteja em vigor ou, pelo menos, seja levado para a fase de design do projeto.
Portanto, o ideal é que você espere que seu controle de qualidade verifique o aplicativo em relação ao conjunto de requisitos e não tente testá-lo quebrando o software e encontrando defeitos.
fonte