Geversom - Software Developer: Testes Unitrios com Delphi
http://gedeveloper.blogspot.com.br/2009/06/testes-unitarios-...
Compartilhar
Denunciar abuso
Prximo blog
Criar um blog
Login
Geversom - Software Developer
Um espao para compartilhar conhecimentos.
TERA-FEIRA, 2 DE JUNHO DE 2009 POPULAR POSTS
Testes Unitrios com Delphi
Por: Paulo Roberto Quicoli Os testes unitrios visam realizar testes automatizados para suas classes. Esses testes por serem automatizados do segurana para que se faam alteraes sem aquele medo de ter quebrado algo no sistema. Quem aqui nunca fez uma alterao que arrumou uma coisa e sem querer estragou outra? Os testes unitrios atuam justamente nesse ponto, se voc faz algo que causa alguma conseqncia inesperada em alguma outra parte do sistema, que as vezes voc nem se lembra, os testes vo pegar a falha. Ferramentas de apoio Quando participei em 2004 da conferncia Extreme Programming Brasil eu era um dos poucos desenvolvedores Delphi l. Porm os conceitos e provas de conceito apresentados podem ser aplicados a qualquer equipe de desenvolvimento independente de linguagem utilizada. Sobre testes unitrios foi provado que: Do segurana, apoio, para que alteraes seja realizadas de forma mais dinmica Do coragem ao desenvolvedor para encarar as alteraes solicitadas Do base para entrega de um sistema sem bugs
Instalar ZeosLib no Delphi 2009 e Delphi 2010 Na minha opinio um dos melhores componentes para acesso a banco de dados o Zeoslib. Alm de fornecer acesso diversos SGDB, esse c... Gerenciamento de Projetos com Scrum Scrum sem dvida a metodologia gil que vem ganhando mais destaque ultimamente, especialmente depois de casos de sucesso com o Goog... Voc Conhece MariaDB SQL ? Voc j ouviu falar sobre esse banco de dados ?No? Ento saiba um pouco mais sobre o assunto: O MariaDB um novo banco de dados, de...
ARQUIVO DO BLOG
Arquivo do blog
LABELS BLOG ARCHIVE
2011 (5) Boas Prticas (5) 2010 (18) 2009 (28)
As ferramentas que do suporte a esse tipo de teste inicialmente surgiram para o Java e posteriormente foram traduzidas para outras linguagens e ambientes populares como Delphi e .NET. Se em Java temos o JUnit, para Delphi win32 temos o DUnit e para .NET temos o NUnit. DUnit Vou focar o artigo de hoje no DUnit com Delphi 7, visto que a maioria do desenvolvimento em Delphi ainda feito sobre win32 e com a verso 7 do Delphi. O framework pode ser baixado em http://dunit.sourceforge.net/ A instalao simples. Descompacte a o contedo do arquivo para alguma pasta e adicione no library path do Delphi o caminho \DUnit\Source Exemplo
Dezembro (3)
Delphi
(14)
Novembro (2) Outubro (1) Setembro (3) Agosto (9) Julho (2) Junho (6) Turbinando o Delphi com CnWizzard s Sopa de letrinhas
Desenvolvimento (5)
Dicas
(3)
(11)
Git
Informtica
(6)
mtodos geis
Os mais puristas em desenvolvimento TDD (Test Driven Development), desenvolvimento diridigo por testes, e XP (Extreme Programming) pregam que primeiramente devemos construir os testes para determinada classe e rod-lo. Dessa forma nos certificamos que os testes daro errado no inicio e s ento se inicia o desenvolvimento da classe a ser testada. Bem, para quem vem de uma cultura onde arrastar e soltar a melhor coisa do mundo, pra dar um n na cabea no ? Como vou testar algo que no est pronto.
(3)
Eco Developers 2009 Testes Unitrios com Delphi
SCM (3) scrum (3)
Mercado de tecnologia
1 of 4
03-06-2012 12:00
Geversom - Software Developer: Testes Unitrios com Delphi
http://gedeveloper.blogspot.com.br/2009/06/testes-unitarios-...
Software (4) tem muito trabalho e pouca m... Evento Microsoft Maio (2)
Bem, eu no sou purista e sou da opinio que devemos tirar o que h de melhor nisso e particularmente primeiro fao a classe e depois a testo. Inicie um novo projeto no delphi e adicione uma unit. Nessa unit insira a classe da Listagem 1.
Tecnologia
Testes (3)
(10)
xp (3)
Listagem 1. Classe a ser testada
PAGES
TNotas = class private FNota1: integer; FNota2: integer; FNota3: integer; FNota4: integer; procedure SetNota1(const Value: integer); procedure SetNota2(const Value: integer); procedure SetNota3(const Value: integer); procedure SetNota4(const Value: integer); public property Nota1: integer read FNota1 write SetNota1; property Nota2: integer read FNota2 write SetNota2; property Nota3: integer read FNota3 write SetNota3; property Nota4: integer read FNota4 write SetNota4; function Media: Real; end;
Incio Downloads
Implemente o mtodo Media conforme a Listagem 2.
Listagem 2. Mtodo Media function TNotas.Media: Real; begin Result := (Nota1 + Nota2 + Nota3 + Nota4)/4; end;
Testando a Classe Feche a aplicao e inicie um novo projeto, removendo deste o Form1, se criado. Acesse Project -> View Source e ajuste o cdigo do projeto de acordo com a Listagem 3.
Listagem 3. Preparando para utilizar DUnit uses Forms, TestFrameWork, GuiTestRunner; {$R *.res} begin Application.Initialize; GUITestRunner.RunRegisteredTests; end.
Salve o projeto e adicione uma nova Unit, nela vamos escrever o teste necessrio, conforme a Listagem 4.
2 of 4
03-06-2012 12:00
Geversom - Software Developer: Testes Unitrios com Delphi
http://gedeveloper.blogspot.com.br/2009/06/testes-unitarios-...
Listagem 4. Testes uses TestFramework, Model; type TNotasTestes = class(TTestCase) private FNotas: TNotas; protected procedure SetUp; override; procedure TearDown; override; published procedure TestMedia; end;
Observe que para testar uma classe, criamos outra de teste. Embora possa parecer trabalhoso e custoso, os benefcios oferecidos so compensadores. Toda classe de teste deve derivar de TTestCase, que apresenta dois mtodos que podem ser sobrecarregados e so muito teis. O SetUp e o TearDown. O Setup ser chamado antes de cada teste publicado ser executado. Assim, podemos preparar os testes com informaes necessrias antes de sua execuo. O TearDown, chamado depois que o teste realizado, podendo ser utilizado para liberar recursos alocados pelo teste. Pensando em nosso teste vemos que precisaremos de uma instncia de TNotas seja criada e aos o teste seja liberada. Utilizaremos ento o SetUp e TearDown para isso. Implemente o mtodo TestMedia conforme a Listagem 5.
Listagem 5. Codificando o teste procedure TNotasTestes.TestMedia; begin FNotas.Nota1 := 10; FNotas.Nota2 := 10; FNotas.Nota3 := 10; FNotas.Nota4 := 10; CheckEquals(10,FNotas.Media); end;
O framework DUnit oferece vrios mtodos que utilizamos para realizar testes, em nosso exemplo utilizamos o CheckEquals. CheckEquals vai verificar a igualdade dos valores passados, havendo diferena o teste identificado como falho. Antes de executarmos, preciso registrar o teste no framework, isso feito na seo initialization, veja a Listagem 6
Listagem 6. Registrando o teste initialization TestFramework.RegisterTest('Tests Suite', TNotasTestes.Suite);
Execute a aplicao, e d um ENTER, o teste ser executado
3 of 4
03-06-2012 12:00
Geversom - Software Developer: Testes Unitrios com Delphi
Cometendo um erro
http://gedeveloper.blogspot.com.br/2009/06/testes-unitarios-...
Digamos que precisamos alterar nossa classe de Notas, aumentar mais uma nota, de 4 para 5. E na correria apenas acrescentamos mais uma propriedade Nota5, esquecendo de ajustar a rotina do calculo. Ento ajustamos o teste para a nova situao, conforme a Listagem 7.
Listagem 7. Novo teste procedure TNotasTestes.TestMedia; begin FNotas.Nota1 := 10; FNotas.Nota2 := 10; FNotas.Nota3 := 10; FNotas.Nota4 := 10; FNotas.Nota5 := 5; CheckEquals(9,FNotas.Media); end;
Execute o teste, o mesmo ir falhar. Ao detectarmos a falha, podemos ento arrumar o clculo e executar novamente o teste, ento ele passar. Concluso Imagine em um sistema complexo como que os testes podem facilitar nossa vida, pegando as falhas que podemos causar. No fcil deixar o jeito de fazer as coisas como fazemos e partir para um novo modelo de desenvolvimento, mas com dedicao e boa vontade conseguimos resultados que nunca esperamos. At mais ! Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2739
Postado por Geversom Sousa s 09:18 Marcadores: Delphi
0 comentrios: Postar um comentrio
Digite seu comentrio...
Comentar como:
Selecionar perl... Visualizar
Incio Postagem mais antiga
Publicar
Postagem mais recente
Assinar: Postar comentrios (Atom)
Modelo Simple. Imagens de modelo por gaffera. Tecnologia do Blogger.
4 of 4
03-06-2012 12:00