Como o FIT funciona. FIT: Framework for Integrated Tests FIT. http://fit.c2.com. Dados de testes. Programa. Fixtures. classes. Resultados de testes



Documentos relacionados
Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

insfcanceof new public switch transient while byte continue extends for int null

JSP - ORIENTADO A OBJETOS

Desenvolvimento OO com Java Orientação a objetos básica

Conversão de Tipos e Arrays

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Programação por Objectos. Java

Capítulo 4. Packages e interfaces

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Programação por Objectos. Java

3 Classes e instanciação de objectos (em Java)

9 Comandos condicionais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Alguns truques do Excel. 1- Títulos com inclinação. 2- Preencha automaticamente células em branco

INTRODUÇÃO À LINGUAGEM C++

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Estrutura de Dados Básica

4.4. UML Diagramas de interacção

Linguagem de Programação I. Orientação a Objetos em Java

Programação: Estruturas de seleção

Requisitos Executáveis: O modelo FIT / FitNesse

Computação II Orientação a Objetos

Sintaxe Básica de Java Parte 1

Panorâmica geral sobre PHP. PHP é uma linguagem que permite fazer. um ficheiro em PHP contem código PHP misturado com HTML.

Algoritmos e Programação

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

Programação para web JavaScript

Capítulo 8. Introdução UML

Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

Programação de Computadores - I. Profª Beatriz Profº Israel

A Linguagem Java. Alberto Costa Neto DComp - UFS

PADRÃO PARA MONITORAMENTO DE APLICATIVOS PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Lição 9 Trabalhando com bibliotecas de classes

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Roteiro 1: Dados, variáveis, operadores e precedência

Noções Várias em Visual Basic

Estrutura Condicional em Java

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Programação Visual TIC - 3PA. Lista de Exercícios 02

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Gestão de projectos na Web

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Unidade 5: Sistemas de Representação

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

Módulo de registo de eventos. guia de utilização

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Linguagem de Programação I

Algoritmos e Técnicas de

MOODLE: actividade WiKi

Instituto Superior Politécnico Gaya Escola Superior de Ciência e Tecnologia

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

a p r e s e n t a CARTILHA WIKI

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Guia rápido de criação e gestão de um espaço no SAPO Campus

Tutorial :: Introdução ao VHDL em ambiente Design Works

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Engenharia do Conhecimento

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

BC0505 Processamento da Informação

DotNetNuke. Gestão de Conteúdos. Módulos - II. Inserção de conteúdos nos módulos. Módulo de Text/HTML. Módulo de Sre-Notícias. Módulo de Sre-Formação

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Programação por Objectos. Java

Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

4.1. UML Diagramas de casos de uso

Sistemas de Apoio à Decisão

Variáveis e Comandos de Atribuição

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Java Threads. Introdução

Aula de JavaScript 05/03/10

SISTEMA DE BIBLIOTECAS DO IFRS. Manual do Usuário

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores Licenciatura em Engenharia Informática e de Computadores

Objetivos do Capítulo

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Linguagens de Programação

JavaScript (ou JScript)

Tipos de Dados Simples

Técnicas de Programação II

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Trabalho Prático Nº1 Introdução ao C#.NET

2.3. PHP Tipos de dados e operadores

Capítulo II Modelos de Programação Distribuída

Transcrição:

Como o FIT funciona FIT: Framework for Integrated Tests http://fit.c2.com Dados de testes Fixtures Programa classes FIT Resultados de testes Universidade Portucalense Engenharia de Software ES04 2014-2015 1

ColumnFixture Para testar regras e cálculos Fixtures Cada caso define valores de campos, métodos a invocar, e os resultados esperados RowFixture Para testar resultados que são coleções de objetos ActionFixture Para testar sequências de ações Há outros tipos de fixtures. Estes três são os originais e mais significativos. Universidade Portucalense Engenharia de Software ES04 2014-2015 2

ColumnFixture (1) Uma tabela HTML baseada numa ColumnFixture Cada título de coluna deve corresponder a um atributo ou método na fixture associada Cada linha descreve um caso de teste Uma ColumnFixture executa os testes linha a linha, de cima para baixo Cada linha é executada da esquerda para a direita Um título de coluna que não termine em () nem? é interpretado como o nome de um atributo; o valor na célula dessa coluna é atribuído ao atributo Um título de coluna que termine em? ou () é interpretado como o nome de um método; o valor na célula é o resultado esperado da execução do método Universidade Portucalense Engenharia de Software ES04 2014-2015 3

Column Fixture (2) Nome do package e classe da fixture edu.ncsu.csc.columnclass atributo1 atributo2 metodo1? metodo2() 1 a true 3 2 b false 6 Nomes dos atributos e métodos Valores de dados e resultados Universidade Portucalense Engenharia de Software ES04 2014-2015 4

Código da ColumnFixture package edu.ncsu.csc; import fit.columnfixture; public class ColumnClass extends ColumnFixture { public int atributo1; public String atributo2; public boolean metodo1() { // o código entraria aqui return...; } public int metodo2() { // o código entraria aqui return...; } } public void execute() { } // o código entraria aqui Universidade Portucalense Engenharia de Software ES04 2014-2015 5

Exemplo de ColumnFixture (1) exemplo.futebol.calculapontos equipa jogos vitorias empates derrotas pontos() Aliados 20 18 2 0 56 Unidos 19 15 0 4 56 Amigos 19 9 6 4 33 Amadores 19 8 5 6 29 exemplo.futebol.calculapontos identifica a classe a ser usada neste teste; é uma classe derivada de ColumnFixture As colunas equipa, jogos, vitorias, empates e derrotas referem-se a atributos que têm que existir na classe CalculaPontos A coluna pontos() refere-se a um método que tem que existir na classe CalculaPontos Em cada teste, o valor de cada coluna é atribuído ao atributo correspondente, depois o método é invocado e o resultado comparado com o valor da tabela Universidade Portucalense Engenharia de Software ES04 2014-2015 6

Exemplo de ColumnFixture (2) exemplo.futebol.calculapontos equipa jogos vitorias empates derrotas pontos() Aliados 20 18 2 0 56 Amigos 19 15 0 4 Unidos 19 9 6 4 33 Amadores 19 8 5 6 29 56 expected 45 actual O resultado do teste é uma tabela HTML que assinala os valores obtidos, consoante são iguais ou diferentes dos esperados Universidade Portucalense Engenharia de Software ES04 2014-2015 7

RowFixture (1) Uma tabela HTML baseada numa RowFixture Aplica-se quando os valores de retorno dos métodos são coleções de objetos A primeira linha identifica a RowFixture a ser usada no teste; é uma classe derivada de RowFixture A segunda linha identifica os atributos ou métodos dos objetos, um em cada coluna Cada linha a partir da terceira identifica objetos que devem fazer parte da coleção retornada pela fixture, e o valor de cada atributo desse objeto; a ordem dos objetos não é importante O método public Object[] query() throws Exception da classe referida na primeira linha retorna a coleção cujo conteúdo é comparado com a tabela Universidade Portucalense Engenharia de Software ES04 2014-2015 8

RowFixture (2) Identifica a classe usada no teste Atributos dos objetos exemplo.minharowfixture args[0] Argumentos atributo1 atributo2 atributo3 método4() 1 a true 3 2 b false 6 Objetos retornados na coleção Universidade Portucalense Engenharia de Software ES04 2014-2015 9

Exemplo de RowFixture (1) exemplo.futebol.calculatabela equipa jogos vitorias empates derrotas pontos() Aliados 20 18 2 0 56 Unidos 19 15 0 4 45 Amigos 19 9 6 4 33 O método public Object[] query() throws Exception da classe CalculaTabela deve retornar um array de objectos, por exemplo do tipo EquipaTeste. Cada objeto do tipo EquipaTeste tem os atributos equipa, jogos, vitorias, empates e derrotas, e o método pontos() que retorna um valor inteiro. A coleção retornada por query() é comparada com a tabela. Universidade Portucalense Engenharia de Software ES04 2014-2015 10

Código da RowFixture package exemplo.futebol; import fit.rowfixture; public class CalculaTabela extends RowFixture {... public Object[] query() throws Exception {......... lista = campeonato.getclassificacoes(); listateste = lista.toarray(); // o retorno tem que ser um array return listateste; // array de objetos do tipo EquipaTeste } } // indica a classe dos objetos retornados pelo método query() public Class gettargetclass() { return EquipaTeste.class; } Universidade Portucalense Engenharia de Software ES04 2014-2015 11

Exemplo de RowFixture (2) exemplo.futebol.calculatabela equipa jogos vitorias empates derrotas pontos() Aliados 20 18 2 0 56 Unidos 19 15 0 4 45 Amigos 19 9 6 4 33 Amadores missing 19 8 5 6 29 Neste exemplo mostramos um caso em que a coleção retornada tem mais um objeto (o referente à equipa Amadores ) do que os que constavam da tabela de teste. A discrepância é assinalada. Qualquer discrepância entre os valores da tabela de teste e os valores dos objetos retornados pelo método query será assinalada. Universidade Portucalense Engenharia de Software ES04 2014-2015 12

Métodos reset e execute Quando se escreve uma classe que deriva RowFixture, podem ser reescritos (override) dois métodos: reset() É invocado antes do processamento de cada linha da tabela execute() É invocado imediatamente antes de ser processada a primeira célula que contém () ou?, em cada linha da tabela, ou após ser processada a última célula de cada linha da tabela, conforme o caso que surgir primeiro Podem ser usados para tratar cada linha como uma transação. reset() pode limpar as variáveis e preparar o estado do objeto para a próxima transação, e execute() pode fazer o processamento da transação Universidade Portucalense Engenharia de Software ES04 2014-2015 13

Action Fixture (1) Uma tabela HTML baseada numa ActionFixture Cada tabela representa uma sequência de passos usados para executar um caso de teste Cada linha da coluna representa um comando a ser executado; são executados por ordem, de cima para baixo A primeira coluna descreve um comando que é executado A classe ActionFixture tem quatro comandos possíveis; se estendermos esta classe podemos criar mais comandos start: nome da classe que é a fixture associada a este teste enter: um método com um argumento (simula uma entrada de dados, por exemplo um textfield) press: um método sem argumentos e sem retorno (simula um botão) check: um método sem parâmetros com retorno (testa um resultado, comparando o valor dado com o retornado pelo método) Sempre que é executado o comando check, termina um caso de teste Universidade Portucalense Engenharia de Software ES04 2014-2015 14

Action Fixture (2) Identifica que esta tabela descreve uma ActionFixture Fit.ActionFixture Start: chamada só uma vez; classe associada a esta Fixture start exemplo.minhaactionfixture enter metodo1 1 press metodo2 check metodo3 true Comandos Universidade Portucalense Engenharia de Software ES04 2014-2015 15

Código da ActionFixture package edu.ncsu.csc; import fit.actionfixture; public class ActionClass extends ActionFixture { public void metodo1(int num) { } // o código entraria aqui public void metodo2() { } // o código entraria aqui public boolean metodo3() { // o código entraria aqui return...; } } Universidade Portucalense Engenharia de Software ES04 2014-2015 16

Tipos de dados Tipos de dados convertidos automaticamente: String; inclui null e blank byte ou Byte short ou Short int ou Integer long ou Long float ou Float double ou Double char ou Character boolean ou Boolean Arrays true, yes, y, +, 1 são entendidos como true; o resto é entendido como false lista de valores separados por vírgula; os valores são convertidos em array Universidade Portucalense Engenharia de Software ES04 2014-2015 17

Expressões de comparação de valores Nas células para as quais se esperam valores numéricos podem ser escritas expressões de comparação O símbolo _ (underscore) representa o valor de retorno do método Podem ser usados operadores relacionais habituais _ < 32 _ >= 99 Podem usadas gamas de valores 38 <= _ < 55 Em expressões simples pode ser omitido o símbolo _ < 99 Universidade Portucalense Engenharia de Software ES04 2014-2015 18

Parâmetros Podem ser passados parâmetros nas células da tabela que ficam à direita do nome da fixture; no exemplo abaixo, 8. Podem ser passados mais parâmetros nas células seguintes No código, estes valores do tipo String são acedidos pelo array args: args[0], args[1], etc. No exemplo, args[0] vale 8 exemplo.minharowfixture 8 atributo1 atributo2 atributo3 atributo4 1 a true 3 2 b false 6 Universidade Portucalense Engenharia de Software ES04 2014-2015 19

Fitnesse Ferramenta de execução de testes baseados em FIT Funciona como um servidor web, com interface do tipo wiki Permite definir os testes de forma interativa Permite importar a definição dos testes a partir de tabelas definidas, por exemplo, em folhas de cálculo Fitnesse é o que é visível, mas por trás está FIT a executar os testes Fitnesse tem uma ferramenta alternativa opcional para a execução dos testes, SLIM. Suporta fixtures diferentes, algumas mais flexíveis do que as FIT As páginas são HTML, criadas automaticamente a partir de páginas de texto Universidade Portucalense Engenharia de Software ES04 2014-2015 20

Formatação de texto Criação de páginas Bold: três plicas '''Este texto é apresentado em negrito''' Itálico: duas plicas ''Este texto é apresentado em itálico'' Para centrar uma linha: é antecedida por!c Para criar uma linha de separação: quatro ou mais traços ---- Para escrever texto não formatado: incluí-lo entre!- e -! Exemplo:!- '''bold''' -! tem como efeito escrever '''bold''' Outro exemplo:!-<i>hello</i>-! tem como efeito hello Texto pré-formatado: {{{ texto pré-formatado }}} Universidade Portucalense Engenharia de Software ES04 2014-2015 21

Definição do Path a usar!path c:\directory Criação de páginas(2) Exemplo: todos os ficheiros jar de um diretório:!path /usr/javalib/*.jar Exemplo: todos os ficheiros jar de um diretório e subdiretórios: Listas!path /usr/javalib/**.jar [space]* Item one [space][space]* Sub item one Listas numeradas [space]1 Item one [space]1 Item two Os testes estão descritos em tabelas O texto escrito fora das tabelas é considerado comentário Universidade Portucalense Engenharia de Software ES05 2014-2015 22

Exemplo de página!contents -R2 -g -p -f -h!path D:\Particular\git\DespesasFIT\DespesasFIT\bin\ fit.actionfixture start fixtures.despesateste enter descricao Almoço enter colaborador Ze enter valor 15 Universidade Portucalense Engenharia de Software ES04 2014-2015 23

Fitnesse - arquitectura Universidade Portucalense Engenharia de Software ES04 2014-2015 24