Você está na página 1de 6

6

Descrever o funcionamento de desenvolvimento de guia de teste


(tdd – Teste driver de development):

Funcionamento:

O TDD é a sigla para Teste Driven Development ou Desenvolvimento Orientado


a Teste. Basicamente o que queremos dizer é que antes de desenvolver os códigos do
software são desenvolvidos os testes. É um processo no qual você escreve o teste
antes de escrever o código. E quando todos os testes estão passando você melhora o
código. Basicamente o TDD se baseia em pequenos ciclos de repetições, onde para
cada funcionalidade do sistema um teste é criado antes.

Ciclo de desenvolvimento (Etapas):

Red, Green, Refactor. Ou seja:


Red: É a primeira fase do ciclo, em que o desenvolvedor escreve um código de teste
para uma nova funcionalidade, ainda que não haja o código de produção elaborado.
Provavelmente, esse teste vai falhar, mas é justamente essa a intenção...
Green: Está é a segunda etapa, em que o programador constrói o código que irá
passar no teste da etapa anterior. É importante que somente esse código seja escrito.
Refactor: Esta é a etapa final, para limpar o código, melhorar estruturas, diminuir as
linhas e aprimorar a performance.

Resumindo:
 Escrevemos um Teste que inicialmente não passa (Red)
 Adicionamos uma nova funcionalidade do sistema
 Fazemos o Teste passar (Green)
 Refatoramos o código da nova funcionalidade (Refactoring)
 Escrevemos o próximo Teste

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 


6

Figura 1. Ciclo de desenvolvimento do TDD

Nós temos, neste tipo de estratégia, um feedback rápido sobre a nova


funcionalidade e sobre uma possível quebra de outra funcionalidade do sistema. Assim
tempos muito mais segurança para as refatorações e muito mais segurança na adição
de novas funcionalidades.

Exemplo:

Este artigo é um exemplo extremamente simples de TDD (Test Driven Development)


Eles compõem uma sequência de exercícios igualmente simples. Indicado para o
desenvolvedor que quer aprender a técnica de TDD mas não conhece muito sobre
testes unitários e nem sobre arquitetura. Seu objetivo é construir uma classe
denominada Área que calcule tanto a área quadrada (primeiro método) como a área
cúbica (segundo método). Faremos USO de programação orientada a objetos,
obviamente. Vamos dividir para conquistar. Ataquemos a primeira função, a área
quadrada.

Começamos pelo teste.

Def testAreaQuadrada (self):

Area = Area ()

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 


6

area.lado1 = 3

area.lado2 = 9

self.assertEqual(27, area.quadrada())

O código não executa porque não temos nem a classe e nem o método, então vamos
lá.

Class Area ():

Def quadrada (self):

Pass

Agora ele executa mas não passa no teste (red). Tudo bem, já sabemos que teste
falhando é sinal de progresso e que podemos escrever o mínimo de código para o
teste passar.

Def quadrada (self):

Return lado1 * lado2;

Agora o teste passa (green), primeira função concluída!

Vamos para a segunda, o cubo. Novamente, iniciamos escrevendo o teste.

Def testAreaCubica (self):

Area = Area ()

area.lado1 = 3

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 


6

area.lado2 = 6

area.lado3 = 2

self.assertEqual(36, area.cubica())

Ao executar o sript, temos…

Attribute Error: 'Area' object has no attribute 'cubica'

Precisamos criar a função, apenas o corpo da função.

Def cubica (self):

Pass.

Agora vai! Execute o script, vemos o teste falhar (red), então partimos para o esforço
de vê-lo passar (green).

Def cubica (self):

Pass.

Return self.lado1 * self.lado2 * self.lado3

Tudo verde?

..

----------------------------------------------------------------------

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 


6

Ran 2 tests in 0.000s

OK

Código completo:

# -*- coding: utf-8 -*-

Import unittest

# Classe para abstrair

# cálculos geométricos referentes a área.

Class Área ():

# Retorna a área quadrada

Def quadrada (self):

Return self.lado1 * self.lado2

# Retorna a área cúbica

Def cubica (self):

Return self.lado1 * self.lado2 * self.lado3

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 


6

# Testes

Class MyCalcTest (unittest.TestCase):

Def testAreaQuadrada (self):

Area = Area ()

area.lado1 = 3

area.lado2 = 9

self.assertEqual(27, area.quadrada())

Def testAreaCubica (self):

Area = Area ()

area.lado1 = 3

area.lado2 = 6

area.lado3 = 2

self.assertEqual (36, area.cubica ())

If __name__ == '__main__':

Unittest. Main ()

NOMES: ISABEL ALMEIDA DA SILVA E FELIPE CHELLTON MARTINS | 

Você também pode gostar