SlideShare uma empresa Scribd logo
1 de 16
FIT Framework for IntegratedTest
O FIT é uma ferramenta de automação e colaboração criada por WardCuningham que permite que várias pessoas envolvidas no projeto trabalhem juntas para a captura, a implementação e teste das regras do software. O que é
O FIT é uma ponte entre a manifestação de um requisito baseando-se em Test-DrivenDevelopment. Finalidades
Elementos Básicos
Uma “fixture” é uma classe que liga os dados de teste com o código que resolve os problemas de negócio (implementação). Com as fixtures, os dados de teste se tornam “executáveis” permitindo que as regras de negócio sejam validadas de maneira automatizada. Elementos Básicos (cont.)
Exemplo de fixture: DivisaoFixture, testando e direcionando o desenvolvimento packageprofit.test;   importprofit.application.DivisaoFacade; importfit.ColumnFixture;   publicclassDivisaoFixtureextendsColumnFixture { public Double dividendo; public Double divisor; privateDivisaoFacade facade = newDivisaoFacade(); public Double resultado() throws Exception { returnfacade.execute(dividendo, divisor); 	}	 } Elementos Básicos (cont.)
Elementos Básicos (cont.) Os dados para teste são colocados num documento HTML e geralmente em formato de tabela.  O cabeçalho desta tabela indica a Fixture (uma classe) que será responsável por direcionar a construção e aplicar os teste.
Resultados do FIT
Nos resultados de teste podemos ver que os resultados corretos foram pintados de verde pelo FIT. Já na última linha, ocorreu um erro devidamente destacado pelo FIT em amarelo. Os testes são direcionados pelas tabelas com os dados de teste que constam num diretório do projeto. Resultados do FIT (cont.)
A FITLibrary, uma extensão muito útil do FIT, possui uma implementação que lê todo um diretório(FolderRunner) e executa os testes. Outra extensão, o FITNesse, permite a entrada dos dados para teste num Wiki próprio. Isso permite uma colaboração até maior com a área de negócios, melhorando a colaboração entre clientes e desenvolvedores. Extensões e Fixtures
O FIT e sua principal extensão, o FITNesse, possuem inúmeros estilos de fixture diferentes. As principais são: ColumnFixture – utilizada para testar regras e cálculos. (vide exemplo anterior) RowFixture – Para testar listas de objetos. ActionFixture – Para testar sequências de ações. Extensões e Fixtures (cont.)
Antes de tudo é aconselhável criar um projeto separado para os testes do FIT. Nesse projeto estarão contidos os HTML que a área de negócio irá construir e fixture que os programadores irão desenvolver, portanto, devido ao tamanho e complexidade é necessário criar um novo projeto. Por default o teste do FIT é gerado na fase de “integration-test” do ciclo de vida de construção do Maven(Build Lifecycle).  Automatizando o teste do FIT com Maven
[object Object], <dependencies>     <!-- FITLibrary -->     <dependency>     	<groupId>org.fitnesse</groupId>     	<artifactId>fitlibrary</artifactId>     	<version>20080812</version> </dependency>   </dependencies> Configuração do pom.xml
[object Object]
É interessante configurar a tag “ignoreFailures” para true, a fim de que não seja interrompido a construção do projeto mesmo em caso de erro nos testes.Configuração do pom.xml (cont.)
<build>    <plugins> <!-- FIT --> 	<plugin>           <groupId>org.codehaus.mojo</groupId>           <artifactId>fit-maven-plugin</artifactId>           <executions>              <execution>                 <phase>integration-test</phase>                 <configuration>                    <outputDirectory>${basedir}/target/fit</outputDirectory>                    <sourceDirectory>${basedir}/src/main/fit</sourceDirectory>                    <sourceIncludes>**/test*.html</sourceIncludes>                    <ignoreFailures>true</ignoreFailures>                 </configuration>                 <goals>                    <goal>run</goal>                 </goals>              </execution>           </executions>        </plugin>    </plugins> </build> Configuração do pom.xml (cont.)

Mais conteúdo relacionado

Semelhante a FIT - Framework for Integration Tests

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOPelliando dias
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Rogerio Cordeiro
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na PráticaIgo Coelho
 
EMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaEMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaWallaceRoque
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app enginepugpe
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Diego Pacheco
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 

Semelhante a FIT - Framework for Integration Tests (20)

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Introdução Wicket
Introdução WicketIntrodução Wicket
Introdução Wicket
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
RYSYS Overview
RYSYS OverviewRYSYS Overview
RYSYS Overview
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Facelets
FaceletsFacelets
Facelets
 
Workshop05
Workshop05Workshop05
Workshop05
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na Prática
 
EMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaEMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de cobertura
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 

FIT - Framework for Integration Tests

  • 1. FIT Framework for IntegratedTest
  • 2. O FIT é uma ferramenta de automação e colaboração criada por WardCuningham que permite que várias pessoas envolvidas no projeto trabalhem juntas para a captura, a implementação e teste das regras do software. O que é
  • 3. O FIT é uma ponte entre a manifestação de um requisito baseando-se em Test-DrivenDevelopment. Finalidades
  • 5. Uma “fixture” é uma classe que liga os dados de teste com o código que resolve os problemas de negócio (implementação). Com as fixtures, os dados de teste se tornam “executáveis” permitindo que as regras de negócio sejam validadas de maneira automatizada. Elementos Básicos (cont.)
  • 6. Exemplo de fixture: DivisaoFixture, testando e direcionando o desenvolvimento packageprofit.test;   importprofit.application.DivisaoFacade; importfit.ColumnFixture;   publicclassDivisaoFixtureextendsColumnFixture { public Double dividendo; public Double divisor; privateDivisaoFacade facade = newDivisaoFacade(); public Double resultado() throws Exception { returnfacade.execute(dividendo, divisor); } } Elementos Básicos (cont.)
  • 7. Elementos Básicos (cont.) Os dados para teste são colocados num documento HTML e geralmente em formato de tabela. O cabeçalho desta tabela indica a Fixture (uma classe) que será responsável por direcionar a construção e aplicar os teste.
  • 9. Nos resultados de teste podemos ver que os resultados corretos foram pintados de verde pelo FIT. Já na última linha, ocorreu um erro devidamente destacado pelo FIT em amarelo. Os testes são direcionados pelas tabelas com os dados de teste que constam num diretório do projeto. Resultados do FIT (cont.)
  • 10. A FITLibrary, uma extensão muito útil do FIT, possui uma implementação que lê todo um diretório(FolderRunner) e executa os testes. Outra extensão, o FITNesse, permite a entrada dos dados para teste num Wiki próprio. Isso permite uma colaboração até maior com a área de negócios, melhorando a colaboração entre clientes e desenvolvedores. Extensões e Fixtures
  • 11. O FIT e sua principal extensão, o FITNesse, possuem inúmeros estilos de fixture diferentes. As principais são: ColumnFixture – utilizada para testar regras e cálculos. (vide exemplo anterior) RowFixture – Para testar listas de objetos. ActionFixture – Para testar sequências de ações. Extensões e Fixtures (cont.)
  • 12. Antes de tudo é aconselhável criar um projeto separado para os testes do FIT. Nesse projeto estarão contidos os HTML que a área de negócio irá construir e fixture que os programadores irão desenvolver, portanto, devido ao tamanho e complexidade é necessário criar um novo projeto. Por default o teste do FIT é gerado na fase de “integration-test” do ciclo de vida de construção do Maven(Build Lifecycle). Automatizando o teste do FIT com Maven
  • 13.
  • 14.
  • 15. É interessante configurar a tag “ignoreFailures” para true, a fim de que não seja interrompido a construção do projeto mesmo em caso de erro nos testes.Configuração do pom.xml (cont.)
  • 16. <build> <plugins> <!-- FIT --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>fit-maven-plugin</artifactId> <executions> <execution> <phase>integration-test</phase> <configuration> <outputDirectory>${basedir}/target/fit</outputDirectory> <sourceDirectory>${basedir}/src/main/fit</sourceDirectory> <sourceIncludes>**/test*.html</sourceIncludes> <ignoreFailures>true</ignoreFailures> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> Configuração do pom.xml (cont.)