• Nenhum resultado encontrado

Requisitos Executáveis: O modelo FIT / FitNesse

N/A
N/A
Protected

Academic year: 2021

Share "Requisitos Executáveis: O modelo FIT / FitNesse"

Copied!
32
0
0

Texto

(1)

Requisitos Executáveis:

O modelo FIT / FitNesse

Jorge Diz

(2)

Instrutor

Jorge Alberto Diz

•Mestre em Eng. Elétrica (UNICAMP ´95)‏

•Bach. em Ciência da Computação (UNICAMP ´89)‏ •Programando desde ´83, em Java desde ´99

•Automação de testes desde ´94

•Ensinando desde ´01, na Globalcode desde ´06 •Certificado SCJP, SCWCD, CSM

(3)

Apresentação da agenda

Especificação X requisito X teste X exemplo

A pirâmide alimentar: o recheio do sanduiche Genealogia do FitNesse e ATDD

Arquitetura

Fixtures prontas

Fixtures programadas TDD, ATDD, BDD

(4)

Qual a diferença entre ... ?

•Especificação funcional •Requisito •Requisito de teste •Exemplo •Cenário de teste •Caso de teste

(5)

Qual a diferença entre ... ?

testes

(6)

Qual a diferença entre ... X, Y, Z ?

Convergência de artefatos

menos ruído na comunicação

(7)

Especificação por Exemplos

”Exemplos não são uma outra forma de ensinar: forma”

(8)

Developer Tests:

Olhando para a tecnologia

Testes técnicos, de componentes Ferramentas: XUnit, mocks, ...

Customer Tests:

Olhando para o negócio

Testes de aceitação, regras de negócio, GUI Ferramentas: FIT / FitNesse, Cucumber,

Selenium

(9)

Q2: GUI, regras de negócio (Selenium, FitNesse, Cucumber) Q3: Exploratório, usabilidade, aceitação funcional Q1: Unitários, componentes Q4: Desempenho / segurança Testes sup orte ao t ime crít ica ao pro du to

Quadrantes de Marick

Tecnologia Negócio Crítica ao pro du to Ap oi o à eq ui pe

(10)

Pirâmide de testes: frágil

Interface

Usuário

Unidades

(11)

Pirâmide de testes: ágil (Mike Cohn)

Interface

Usuário

Regras de

Negócio

Unidades

Pirâmide de Cohn

(12)

(*) Jason Huggins, autor do Selenium

(13)
(14)

FIT – Framework for Integration Tests

•Usuário descreve exemplos de regras de negócio em

planilhas (Excel, OpenOffice)

•Natural para vários perfis de usuários

•Planilhas são traduzidas para tabelas HTML

(15)
(16)

Histórico do FitNesse

•FIT (Framework for Integration Testing)

•Wiki

•FIT + Wiki = FitNesse

(17)

Histórico de ?DD

•TDD (test driven development) = test-first + refactoring

•ATDD = Acceptance TDD =

Testes de aceitação como guia para desenvolver

“Requisitos executáveis”

•BDD = Behavior Driven Development)

(18)

Teste de web apps

Complicadores:

• Disponibilizar (ou aproximar) o ambiente de servidor web

• Dependência de configurações • Dependência de browsers

• Dependência de JavaScript • AJAX / tempos de espera

(19)

Teste de web apps

Moral da história:

• Muita dor de cabeça no teste de UI

• Relação custo/benefício do teste de UI é menos favorável

(20)

Teste de web apps

• O quê estamos testando ?

•Módulos, classes isoladamente ---> X(J)Unit

•Regras de negócio → FIT / FitNesse

•Funcionalidade de componentes web → Cactus (in container)

•Interface usuário--> Selenium (in browser) •Estresse/desempenho ---> JMeter

(21)
(22)

Fixtures

• Classes interpretadoras de tabelas

• Cada uma implementa uma interpretação diferente.

• Escritas em uma linguagem de programação (Java, C#, Python, Ruby, ...)

•Acionam a lógica das classes do sistema sendo testado.

(23)
(24)

FitNesse – fixture

package br.com.globalcode.aceitacao;

import fit.ColumnFixture;

import br.com.globalcode.impostos.RendaNaFonte;

public class ImpostoDeRendaNaFonteFixture extends ColumnFixture{

public double salarioBruto;

public int dependentes;

public double impostoRetido() {

return RendaNaFonte.desconto(salarioBruto); }

public double salarioLiquido() {

return RendaNaFonte.liquido(salarioBruto); }

(25)

Classe de negócio

package br.com.globalcode.impostos;

public class RendaNaFonte {

public static double desconto(double bruto) {

return bruto * 0.2; }

public static double liquido(double bruto) {

return bruto * 0.8; }

(26)
(27)

Fixtures

(28)

Fixtures para usuário

Não precisam de programação

 DBFit

 Banco de dados

Generic Fixture

 Acesso direto às classes de negócio (reflexão)

PlainSeleniumFixture, WebTest

(29)

Fixtures extensíveis

É necessário escrever numa linguagem de programação (Java e outras)

 ColumnFixture

 Planilha com colunas de entrada e resultados

 RowFixture

 Similar à anterior, com repetição em linhas

 ActionFixture, DoFixture

 Criação de linguagens específicas de domínio

 TableFixture

(30)

DSLs em planilhas FIT

 DSL = “domain-specific language”

 Linguagens específicas para um determinado

domínio de aplicação. Ex: teste de GUI, seguro de automóvel

 Criadas caso-a-caso, aproveitam o motor do FIT

/ Slim

 Podem ser implementadas utilizando fixtures

customizadas (DoFixture)

(31)

Futuro e Conclusões

• Promove colaboração de analistas de negócio,

testers, desenvolvedores

• Front-end para múltiplos usos

• Motor de testes sem front-end (Trinidad) apto

para integração contínua

(32)

Contato

Email: [email protected]

Email, Gtalk: [email protected]

• Twitter: @jorgediz

Referências

Documentos relacionados

10.2 - Entrevista profissional de seleção (adiante EPS): este método de seleção visa avaliar a experiência profissional e aspetos comportamentais, nomeadamente

Conhecer a prevalência das infecções hospitalares e seus fatores associados é o primeiro passo para se pensar em estratégias eficazes no controle desse tipo de

41-A da Lei 9.504/97, aplicável às hipóteses de abuso de poder econômico simples (embora, ad argumentandum, mesmo se não fosse reconhecido o abuso de poder

Essa ideologia foi fortemente associada à tradição da resistência grega aos persas e, assim, os partos foram quase automa- ticamente vinculados pelas elites romanas à Pérsia

Também foi criado um programa chamado “renováveis na hora” onde surgem incentivos para o aumento da utilização de energias endógenas nos edifícios, ou seja, procura

Texto Publicado em Jornal Oficial: AVISO Procedimento concursal comum para preenchimento de um posto de trabalho de na carreira e categoria de Técnico Superior do mapa de pessoal não

5º Os créditos tributários vencidos, constituídos por meio de Auto de Infração ou Nota de Lançamento, inscritos ou não em dívida ativa, poderão ser quitados através de

adquiridos que não pertencem à padronização do hospital Aquisição de materiais hospitalares. Planilha - Indicadores