MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Cronograma Oferecimentos anteriores

Testes com o SuSy

O SuSy (Submission and Testing System for Student Programs) é uma ferramenta para submissão e testes de programas, criada e desenvolvida pelo Prof. Tomasz Kowaltowski.

No SuSy, para cada tarefa, criamos um conjunto de testes com arquivos de entrada arq01.in, arq02.in, arq03.in,..., arqN.in. A cada um deles corresponde um arquivo de saída arq01.res, arq02.res, arq03.res,..., arqN.res. O seu programa passará em um teste i apenas se a saída for exatamente igual a do arquivo de resposta arq<i>.res. Este é o desafio!

Na página de submissão de cada tarefa há um link Arquivos auxiliares contendo todos estes testes e mais dois programas em Python. A ideia é que você utilize estes arquivos no seu computador, enquanto desenvolve o programa e só submeta para o SuSy quando o programa estiver pronto.

Como utilizar os testes no seu computador

Suponha que você está testando o arquivo lab01.py. Dado um dos arquivos arq<i>.in, você pode utilizá-lo como entrada na linha de comando da seguinte forma:

$ python3 lab01.py < arq01.in

Você pode redirecionar a saída para um arquivo arq<i>.out da seguinte maneira:

$ python3 lab01.py < arq01.in > arq01.out

O SuSy está configurado para comparar a saída do seu programa com o arquivo arq<i>.res utilizando o comando diff:

$ diff arq01.out arq01.res

Uma saída vazia indicará que o programa executou corretamente no seu computador. Caso contrário, observe as diferenças apontadas e depure seu programa. Por exemplo, um erro discutido no roteiro da tarefa 00 foi:

1c1
< Oi, mundo!!!!  
---
> Oi, mundo!

Estão disponíveis dois scripts Python para ajudar a fazer todos os testes abertos: o executa-testes.py para ambiente GNU/Linux e o executa-testes-windows.py para ambiente Windows. Estes scripts supõem que o arquivo lab<x>.py, os arquivos de entrada arq<i>.in e os arquivos com resultado arq<i>.res estão todos no mesmo diretório. O uso é

$ python3 executa-testes.py lab01.py

ou

> py executa-testes-windows.py lab01.py

A saída desejada será algo como:

Teste  1 : resultado correto
Teste  2 : resultado correto
Teste  3 : resultado correto
Teste  4 : resultado correto
Teste  5 : resultado correto