Programação com Objectos/Projecto de Programação com Objectos/Testes Automáticos 2020-2021

From Wiki**3

< Programação com Objectos‎ | Projecto de Programação com Objectos
AVISOS - Avaliação em Época Normal

Esclarecimento de dúvidas:

  • Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [1].
  • Não utilizar fontes de informação não oficialmente associadas ao corpo docente (podem colocar em causa a aprovação à disciplina).
  • Não são aceites justificações para violações destes conselhos: quaisquer consequências nefastas são da responsabilidade do aluno.

Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Programação com Objectos):

  • O material de apoio é de uso obrigatório e não pode ser alterado.
  • Verificar atempadamente (mínimo de 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de desenvolvimento.

Processo de avaliação (ver informação completa em Avaliação do Projecto):

  • Datas: 2020/10/23 12:00 (inicial); 2020/11/09 12:00 (intercalar); 2020/12/11 12:00 (final); 2020/12/14-2019/12/18 (teste prático).
  • Todas as entregas são cruciais para o bom desenvolvimento do projecto, sendo obrigatórias: a não realização de uma entrega implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina.
  • Verificar atempadamente (até 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de avaliação, incluindo a capacidade de acesso ao repositório.
  • Apenas se consideram para avaliação os projectos existentes no repositório oficial. Apenas se considera para avaliação o ramo 'main'.
  • Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório ou de outros materiais, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.
  • A avaliação do projecto pressupõe o compromisso de honra de que o trabalho correspondente foi realizado pelos alunos correspondentes ao grupo de avaliação.
  • Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação.
Material de Uso Obrigatório
As bibliotecas po-uuilib e o conteúdo inicial do CVS são de uso obrigatório:
  • po-uuilib (classes de base) po-uuilib-201708311009.tar.bz2 (não pode ser alterada) - javadoc
  • woo-core (classes do "core") (via CVS) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
  • woo-app (classes de interacção) (via CVS) (deve ser completada -- os nomes das classes fornecidas não podem ser alterados)
A máquina virtual, fornecida para desenvolvimento do projecto, já contém todo o material de apoio.
Uso Obrigatório: Repositório CVS
Apenas se consideram para avaliação os projectos existentes no repositório CVS oficial.

Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.

Durante a execução do projecto são realizados testes automáticos sobre o conteúdo do repositório, sendo publicados diariamente os resultados dos testes (apenas durante a Época Normal).

Ficheiros removidos do módulo woo-core (durante os testes) e substituídos por versões canónicas
woo-core/
├── Makefile
└── src
    └── woo
        └── exceptions
            ├── BadEntryException.java
            ├── ImportFileException.java
            ├── MissingFileAssociationException.java
            └── UnavailableFileException.java
Ficheiros removidos do módulo woo-app (durante os testes) e substituídos por versões canónicas
woo-app
├── Makefile
└── src
    └── woo
        └── app
            ├── App.java
            ├── clients
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── exceptions
            │   ├── DuplicateClientKeyException.java
            │   ├── DuplicateProductKeyException.java
            │   ├── DuplicateSupplierKeyException.java
            │   ├── FileOpenFailedException.java
            │   ├── InvalidDateException.java
            │   ├── Message.java
            │   ├── UnauthorizedSupplierException.java
            │   ├── UnavailableProductException.java
            │   ├── UnknownClientKeyException.java
            │   ├── UnknownProductKeyException.java
            │   ├── UnknownServiceLevelException.java
            │   ├── UnknownServiceTypeException.java
            │   ├── UnknownSupplierKeyException.java
            │   ├── UnknownTransactionKeyException.java
            │   └── WrongSupplierException.java
            ├── lookups
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── main
            │   ├── DoOpenMenuClients.java
            │   ├── DoOpenMenuLookups.java
            │   ├── DoOpenMenuProducts.java
            │   ├── DoOpenMenuSuppliers.java
            │   ├── DoOpenMenuTransactions.java
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── products
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            ├── suppliers
            │   ├── Label.java
            │   ├── Menu.java
            │   └── Message.java
            └── transactions
                ├── Label.java
                ├── Menu.java
                └── Message.java

Testes de Presença de Diagramas UML

Durante o período que antecede a primeira entrega (UML), são executados testes de presença dos diagramas no repositório.

Os projectos não são executados, mas são comunicados erros de compilação para projectos que já tenham commits.

Resultados dos testes

Os resultados dos testes de presença estão disponíveis nos seguintes locais:

Grupos que tenham as anotações NOTHING COMMITTED ou UML MISSING (estando em falta o diagrama woo-core) não estão em condições de aprovação à disciplina.

Pacotes de Testes para a Entrega Intermédia

Os pacotes de testes para o projecto são os seguintes:

Resultados dos testes

Os resultados da execução dos vários testes estão disponíveis nos seguintes locais:

Descrição dos testes da entrega intermédia (diários)
A-01-01-M-ok - Abrir aplicação sem import e ver os menus todos 
A-01-02-M-ok - Abrir aplicação com fornecedores e clientes, Ver e guardar em app01.woo 
A-01-03-M-ok - Abrir aplicação vazia, Carregar app01.woo e ver fornecedores e clientes 
A-01-04-M-ok - Abrir aplicação com produtos, Ver produtos e guardar em app02.woo 
A-02-01-M-ok - Mostrar data inicial 
A-02-02-M-ok - Avançar data válida e mostrar data
A-02-04-M-ok - Avançar data duas vezes e mostrar data 
A-03-01-M-ok - Ver cliente inválido  com clientes carregados  
A-03-03-M-ok - Ver cliente válido sem compras e sem notificações
A-04-01-M-ok - Ver clientes (vazio)  
A-04-02-M-ok - Ver lista de clientes importados por ordem 
A-05-01-M-ok - Registar cliente (sem clientes)
A-05-02-M-ok - Registar cliente no fim de clientes
A-08-01-M-ok - Ver fornecedores (vazio)
A-08-02-M-ok - Ver lista de fornecedores importados por ordem
Descrição dos testes da entrega intermédia (avaliação)
A-01-01-M-ok - Abrir aplicação sem import e ver os menus todos 
A-01-02-M-ok - Abrir aplicação com fornecedores e clientes, Ver e guardar em app01.woo 
A-01-03-M-ok - Abrir aplicação vazia, Carregar app01.woo e ver fornecedores e clientes 
A-01-04-M-ok - Abrir aplicação com produtos, Ver produtos e guardar em app02.woo 
A-01-05-M-ok - Abrir aplicação via import, carrega app02.dat e vê fornecedores e produtos 
A-01-06-M-ok - Abrir ficheiro não existente 
A-01-07-M-ok - Abrir aplicação com clientes e fornecedores, guardar em app03.dat, criar cliente, guardar
A-01-08-M-ok - Abrir aplicação vazia, carregar app03.dat e ver. Alterar data e guardar
A-01-11-M-ok - Abrir aapp03.dat e ver data
A-02-01-M-ok - Mostrar data inicial 
A-02-02-M-ok - Avançar data válida e mostrar data
A-02-03-M-ok - Avançar data inválida e Mostrar data 
A-02-04-M-ok - Avançar data duas vezes e mostrar data 
A-03-01-M-ok - Ver cliente inválido  com clientes carregados  
A-03-02-M-ok - Ver cliente inválido sem clientes carregados  
A-03-03-M-ok - Ver cliente válido sem compras e sem notificações
A-03-05-M-ok - importar e ver clientes com chave em minúsculas
A-04-01-M-ok - Ver clientes (vazio)  
A-04-02-M-ok - Ver lista de clientes importados (por ordem)
A-04-03-M-ok - Ver lista de clientes importados (desordenados)
A-04-04-M-ok - Ver lista de clientes importados (desordenados e com maiúsculas e minúsculas)
A-05-01-M-ok - Registar cliente (sem clientes)
A-05-02-M-ok - Registar cliente no fim de clientes
A-05-03-M-ok - Registar cliente no início da lista/no meio da lista
A-05-04-M-ok - Registar cliente com chave duplicada 
A-05-05-M-ok - Registar clientecom chave diferente mas duplicada.
A-05-06-M-ok - Registar cliente com chave minusculas e ver que está bem ordenado
A-08-01-M-ok - Ver fornecedores (vazio)
A-08-02-M-ok - Ver lista de fornecedores importados (por ordem)
A-08-03-M-ok - Ver lista de fornecedores importados (desordenados)

Pacotes de Testes para a Entrega Final

Os pacotes de testes para o projecto são os seguintes:

Resultados dos testes

Os resultados da execução dos vários testes estão disponíveis nos seguintes locais:

Descrição dos testes da entrega final (diários)
A-01-01-M-ok - Abrir aplicação sem import e ver os menus todos 
A-01-02-M-ok - Abrir aplicação com fornecedores e clientes, Ver e guardar em app01.woo 
A-01-03-M-ok - Abrir aplicação vazia, Carregar app01.woo e ver fornecedores e clientes 
A-01-04-M-ok - Abrir aplicação com produtos, Ver produtos e guardar em app02.woo 
A-01-05-M-ok - Abrir aplicação via import, carrega app02.dat e vê fornecedores e produtos 
A-01-06-M-ok - Abrir ficheiro não existente 
A-01-07-M-ok - Abrir aplicação com clientes e fornecedores, guardar em app03.dat, criar cliente, guardar
A-01-08-M-ok - Abrir aplicação vazia, carregar app03.dat e ver. Alterar data e guardar
A-01-09-M-ok - Carrega import com produtos e clientes, baixa preço de um produto, vê um dos clientes e guarda app04.dat 
A-01-10-M-ok - Carrega app04.dat e vê notificações dos clientes todos 
A-01-11-M-ok - Abrir aapp03.dat e ver data

A-02-01-M-ok - Mostrar data inicial 
A-02-02-M-ok - Avançar data válida e mostrar data
A-02-03-M-ok - Avançar data inválida e Mostrar data 
A-02-04-M-ok - Avançar data duas vezes e mostrar data 

A-03-01-M-ok - Ver cliente inválido  com clientes carregados  
A-03-02-M-ok - Ver cliente inválido sem clientes carregados  
A-03-03-M-ok - Ver cliente válido sem compras e sem notificações
A-03-05-M-ok - importar e ver clientes com chave em minúsculas

A-04-01-M-ok - Ver clientes (vazio)  
A-04-02-M-ok - Ver lista de clientes importados (por ordem)
A-04-03-M-ok - Ver lista de clientes importados (desordenados)
A-04-04-M-ok - Ver lista de clientes importados (desordenados e com maiúsculas e minúsculas)

A-05-01-M-ok - Registar cliente (sem clientes)
A-05-02-M-ok - Registar cliente no fim de clientes
A-05-03-M-ok - Registar cliente no início da lista/no meio da lista
A-05-04-M-ok - Registar cliente com chave duplicada 
A-05-05-M-ok - Registar clientecom chave diferente mas duplicada.
A-05-06-M-ok - Registar cliente com chave minusculas e ver que está bem ordenado

A-08-01-M-ok - Ver fornecedores (vazio)
A-08-02-M-ok - Ver lista de fornecedores importados (por ordem)
A-08-03-M-ok - Ver lista de fornecedores importados (desordenados)

A-09-01-M-ok - registar fornecedor em clientes vazio 
A-09-02-M-ok - registar fornecedor no fim da lista de fornecedores
A-09-03-M-ok - registar fornecedor no início da lista/no meio da lista
A-09-04-M-ok - registar fornecedor com chave duplicada 
A-09-05-M-ok - registar fornecedor com mesmo identificador de cliente 
A-09-06-M-ok - registar fornecedor com identificador em minúsculas 

A-10-01-M-ok - Inibir transacções de um fornecedor e ver todos 
A-10-02-M-ok - Inibir/Permitir transacções de um fornecedor e ver todos 
A-10-03-M-ok - Inibir transacções de um fornecedor inexistente

A-11-01-M-ok - Mostrar transacções de um fornecedor inexistente e de um fornecedor sem transacções

A-12-01-M-ok - Visualizar produtos de loja sem produtos
A-12-02-M-ok - Visualizar só caixas e contentores ordenados 
A-12-03-M-ok - Visualizar só livros ordenados 

A-13-01-M-ok - Alterar preço válido de produto sem clientes
A-13-02-M-ok - Baixar preço válido de produto sem clientes 
A-13-03-M-ok - Alterar preço inválido de produto
A-13-04-M-ok - Baixar preço válido de produto com clientes via import 
A-13-05-M-ok - Baixar preço válido de produto com clientes via import  e ver notificações
A-13-06-M-ok - Criar cliente e baixar preço válido de produto e ver notificações  
A-13-07-M-ok - Criar cliente e baixar preço válido de produto e ver notificações de todos

A-14-01-M-ok - Criar Box, Container em loja vazia
A-14-02-M-ok - Criar Book em loja vazia
A-14-03-M-ok - Criar Box, Container e Book em loja com produtos (tudo por ordem)
A-14-04-M-ok - Criar Box, Container com argumentos errados em tipo e qualidade de serviço
A-14-05-M-ok - Criar Box, Container e Book no fim e no meio em loja com produtos ordenados  
A-14-08-M-ok - Criar Box, Container e Book com fornecedores inválidos 

A-15-01-M-ok - Aplicação sem produtos e ver produtos com preço abaixo de 50
A-15-02-M-ok - Aplicação com produtos e ver produtos com preço abaixo de 1  e -1 (nenhum) e resultado da filtragem é só um produto.
A-15-05-M-ok - Mostra facturas de cliente sem facturas e inválido
A-15-06-M-ok - Mostra facturas de cliente com facturas mas nenhuma paga

A-16-01-M-ok - Ver transacções vazia e id inválido
A-16-02-M-ok - Ver várias vendas e encomendas 
A-16-05-M-ok - Fazer uma compra válida e ver transacção
A-16-06-M-ok - Fazer uma compra válida e ver cliente e transacções de cliente e produto
A-16-07-M-ok - Fazer uma compra com user inválido e outra com produto inválido, ver transações e cliente no 2º caso
A-16-10-M-ok - Fazer  compra com quantidade + n ver transacção e produto  e cliente 
A-16-11-M-ok - Fazer duas compras com o mesmo cliente e ver dados 
A-16-12-M-ok - Fazer duas compras com clientes distintos e ver dados 
A-16-16-M-ok - Visualizar Venda de Caixa, Contentor e Livro a cliente Normal em P1 
A-16-17-M-ok - Visualizar Venda de Caixa, Contentor e Livro a cliente Normal em P2 
A-16-20-M-ok - Visualizar Venda de Caixa, Contentor e Livro a cliente Selection em P1 
A-16-21-M-ok - Visualizar Venda de Caixa, Contentor e Livro a cliente Selection em P2 

A-17-01-M-ok - Registar encomenda com fornecedor inválido
A-17-02-M-ok - Registar encomenda com fornecedor válido mas um dos produtos inválidos 
A-17-03-M-ok - Registar encomenda válida só com um produto, ver encomenda
A-17-04-M-ok - Registar encomenda válida só com um produto, ver encomenda do fornecedor 
A-17-05-M-ok - Registar encomenda válida só com um produto, ver existências
A-17-06-M-ok - Registar encomenda válida com vários produtos, ver encomenda da loja
A-17-07-M-ok - Registar encomenda válida com vários produtos, ver encomenda do fornecedor
 
A-18-01-M-ok - Pagar uma transacção inválida
A-18-02-M-ok - Pagar uma encomenda
A-18-03-M-ok - Pagar uma venda para cliente Normal em P2 e continua Normal
A-18-04-M-ok - Pagar uma venda para cliente Normal em P2 e passa a Selection   
A-18-05-M-ok - Pagar uma venda para cliente Normal em P2 e passa a Selection  com 2ª compra
A-18-06-M-ok - Pagar uma venda para cliente Normal em P2 e passa a Elite 
A-18-07-M-ok - Pagar uma venda para cliente Normal em P4 e continua Normal (ver pontos)  
A-18-08-M-ok - Pagar uma venda para cliente Normal em P1 ( e continua Normal devido ao desconto 
A-18-12-M-ok - Pagar uma venda para cliente Selection em P1 e continua Selection e guarda estado Selection.woo
A-18-13-M-ok - Carrega Selection.woo, paga venda para cliente Selection em P1 e passa a Elite com uma compra
A-18-14-M-ok - Carrega Selection.woo, paga venda para cliente Selection em P2 e passa a Elite com duas compras  
A-18-15-M-ok - Carrega Selection.woo, paga venda duas vezes para cliente Selection em P2 e continua Selection
A-18-16-M-ok - Carrega Selection.woo, paga venda para cliente Selection em P3 com um dia e continua Selection 
A-18-17-M-ok - Carrega Selection.woo, paga venda para cliente Selection em P4 com 5 dias de atraso e passa Normal (Ver cliente e transacção)
Descrição dos testes da entrega final (avaliação)
(a disponibilizar)