como projetar um caso de teste

Esta pode ser uma pergunta ingênua para a maioria de vocês, mas estou meio que confuso com isso.

quando temos que projetar um caso de teste para algum programa, como sabemos qual é o valor/resultado esperado. O programa pode fazer alguns cálculos complexos e usar algoritmos complexos para calcular sua saída final, o que pode não ser possível computar por outros meios. Mesmo que fôssemos calcular na mesma entrada usando outros meios e, em seguida, usar o valor de saída por essa média como um valor esperado para testar nosso programa original, como podemos ter certeza de que o valor esperado que foi calculado a partir de um programa/A média estava correta, para ter certeza de que o programa também tem que ser testado, e assim estamos de volta à estaca zero.

0

3 Respostas

Se um cálculo é muito complexo para descobrir em papel com uma calculadora, então como você poderia programá-lo? Mesmo se o cálculo tiver que ser feito em pequenos passos, você pode escrever vários casos de teste diferentes no papel e testar essa etapa do cálculo no programa, e trabalhar o seu caminho através dela. Um computador só pode fazer o que um ser humano lhe diz para fazer.

2
adicionado
@Bilal Você pode resolvê-lo à mão, levaria apenas algum tempo. Mas de que outra forma você vai fazer isso? Quando você faz isso, e está escrevendo casos de teste, você precisa percorrer as mesmas etapas do seu programa e escrever novos valores para todas as instruções de atribuição e certificar-se de que eles são o que você espera que eles sejam.
adicionado o autor Nick Rolando, fonte
Eu não te segui, se um programa implementa um algoritmo, como o nosso caso de teste verifica se o programa implementou o algoritmo corretamente? isso pode parecer uma pergunta muito básica, mas eu sou novo em testes.
adicionado o autor comatose, fonte
Por exemplo, atualmente estou trabalhando em um problema que é algo como o problema da mochila, agora se eu quiser escrever um caso de teste para este programa que eu implementei, como eu procedo? Eu posso escrever alguns casos para pequenas entradas (onde eu posso resolver isso com lápis/papel), mas e se eu quiser checar o programa para grandes entradas, eu não posso resolver isso manualmente, então como eu verifico isso?
adicionado o autor comatose, fonte
Eu também não conseguia pensar em nenhuma outra alternativa, mas pensei que talvez houvesse alguma forma "mágica", de qualquer forma, eu entendo agora, Obrigado
adicionado o autor comatose, fonte

Sua pergunta não faz muito sentido.

Teste é a atividade de tratar o sistema em teste como uma caixa preta. O que você pergunta ao sistema (no seu caso: o cálculo) é basicamente isso: Ok, quando eu alimentar o método com esses valores, então eu quero que ele retorne este valor .

Simplesmente não há outra maneira senão saber antecipadamente qual deve ser o resultado de uma operação. Pode ser muito trabalho em alguns casos, mas todo o resto seria logicamente inconsistente, e testaria apenas o fato de que o autor do teste sabe como usar a estrutura de teste ...

1
adicionado

Sua pergunta é sobre o problema mais difícil no teste de software, conhecido como problema "oracle".

Para suportar o teste, gostaríamos de ter uma fonte confiável de resultados esperados para qualquer entrada de teste. Na maioria dos cenários de teste, isso basicamente significa que temos o equivalente a uma implementação perfeita e livre de erros do sistema em teste. Claro, se tivéssemos isso, poderíamos provavelmente pular o desenvolvimento do SUT e seus testes.

Mas isso geralmente não é o caso. Portanto, existem muitas estratégias práticas (e algumas exóticas) para produzir os resultados esperados para os casos de teste. Isso pode ser tão simples quanto usar uma planilha para calcular funções, selecionar algumas consultas que tenham resultados conhecidos ou comparar a saída do sistema equivalente ou similar existente com a saída do sistema em teste.

O Capítulo 18 do meu livro, Testando Sistemas Orientados a Objetos , fornece 16 padrões de projeto de teste para oráculos, a maioria dos quais pode ser automatizada.

This page gives a summary of the book and links to Amazon http://www.robertvbinder.com/home/thought-leadership/books/

Prumo

1
adicionado