Como lidar com tais situações?
-
18-09-2019 - |
Pergunta
Quando um software é desenvolvido, vários tipos de teste é feito - unidade, integração, funcionais, manual.In meu projeto atual (winforms com sql server), que tem código legado (sem testes), temos muitos erros . Estamos tentando removê-los usando combinação de testes + manual (principalmente a integração)
Mas, ainda alguns bugs pode escapar.
Por exemplo (um cenário hipotético) - se um cliente tiver comprado algum valor das mercadorias para últimos 6 meses, ele deve ser dado algum desconto em compras que ele faz uma vez 6 meses tem estado lapsed.His deve ser atualizado para privilégio <. / p>
Mas, por alguma razão (bug no código) o sistema não está fazendo so.How devemos enfrentar tais situações? Deveríamos ter um script em execução no banco de dados que procura cenários como descrito? Outra extensão do cenário poderia ser, o cliente deve ser enviar um presente, uma vez que ele é privilegiada, mas o sistema está faltando a fazê-lo.
Os pensamentos?
Solução
"Se nós temos um script em execução no banco de dados que procura cenários como descrito?"
Você quer dizer "colocar um script no banco de dados para corrigir o problema", então não .
NO. Nunca. Sob nenhuma circunstância. Trabalhando em torno de um bug, adicionando lógica de caso especial peculiar é realmente uma idéia muito ruim.
-
Quando essa lógica peculiar-caso especial tem suas próprias erros, você adicionou o código buggy para tentar e código de buggy correta. A perda líquida.
-
Quando você tenta melhorar o sistema, você tem essa peculiar lógica de caso especial que não faz qualquer sentido.
a. Se você tiver sorte, você reparou o erro que era suposto trabalho ao redor, e será redundante. E agora? Que copiar para remover?
b. Caso contrário, ele irá contradizer outro código. E agora? Qual é o certo?
Se você quer dizer "colocar um script no banco de dados para ajudar a encontrar e depurar o problema", então sim. Por um curto período de tempo, usar todas as ferramentas à sua disposição para encontrar e erros de correção. Uma vez encontrados e corrigidos, este script é então inútil e deve ser excluído.
Se você quer dizer "escrever um script no banco de dados para testar a aplicação", então sim. Isso é o que scripts de teste de unidade são para. Usa-os.
É muito melhor para criar testes de unidade que é para criar scripts que você colocar no banco de dados. Os testes unitários são a melhor abordagem.
Outras dicas
Você deve ter um teste de banho automatizado no lugar. Este teste-suite irá implementar todos os cenários que a especificação exige. Como não se pode esperar seis meses para testar se as obras descontando, a implementação real é substituído por um implementação simulada (o exemplo é em java, mas os mesmos princípios se aplicam em outros idiomas), que, por exemplo 'simula' que 6 meses se passaram. Pode-se usar afirmações para automatizar os testes.
Depois de ter toda test-suite pronto, se todos os testes passam depois (como antes) uma refatoração / alteração do código, pode-se ter certeza de que nenhuma característica quebrou devido à refatoração.