No anexo, os arquivos que eu usei para testar a minha solução do EP1.
Note que o programa troco.c contém só a parte mais interessante do EP1: apenas lê
a quantidade de notas e moedas disponíveis, e depois calcula o troco
para diferentes valores, sem retirar dinheiro do caixa. Ou seja, todos
os trocos de cada arquivo inputXX.txt são calculados considerando
apenas o caixa inicial, dado pela primeira linha. Os arquivos outputXX.txt são as saídas
correspondentes.
Durante o desenvolvimento, eu editei à mão algumas destas saídas,
colocando valores que eu sabia que seriam corretos mas que meu programa
até então ainda não produzia. É o que se chama "test-driven
development", desenvolvimento motivado por testes: primeiro se faz o teste, depois se modifica o programa para passar no teste.
Para automatizar os
testes, pesquisei alguns esquemas de "unit testing" em C (é uma técnica de testes muito usada em Python, Java etc.). Como não achei nada muito simples de usar, então fiz o script testes.py em Python. Ele roda o programa com os inputs
e compara o resultado com os outputs correspondentes, indicando onde há
divergências. A idéia de automatizar os testes é tornar fácil rodar todos eles a cada alteração do programa, evitando o risco de que o tratamento de um caso particular introduza bugs em outros casos resolvidos anteriormente.
Espero que este esquema possa ser útil a mais colegas nos próximos EPs. Se quiserem mais explicações de como usar, basta escrever pedindo.
[ ]s
Luciano
Fórum