SlideShare uma empresa Scribd logo
1 de 13
TDD Alaor Bianco alaorbianco@yahoo.com.br
Custo de Modificações (Clássico)
Cone da Incerteza Incerteza Custo Esforço
Custo de Modificações(Eng. de Soft. Moderna)
Como?! Design Evolutivo Simplicidade Feedback constante (e rápido) Testes Automatizados Refatoração
Exemplo Um programa para decompor em fatores primos Exemplo: 30 = 2.3.5 Exemplo: 20 = 2.2.5
Testes [TestMethod] publicvoidGetPrimos_Deve_Retornar_Sequencia_Primos() { IGeradorNumerosPrimos gerador = newGeradorPrimosMuitoSimples(); gerador.GetPrimos().Should().Have. SameSequenceAs( 				new[] { 2, 3, 5, 7, 13 }); }
Testes [TestMethod] publicvoid DecompoeFatorePrimos_Decompor_30_Deve_Retornar_2_3_5() {     var gerador = new GeradorPrimosMuitoSimples();     var decompositor = new 			Decompositor(gerador); decompositor.DecompoeFatorePrimos(30).Should()	.Have.SameSequenceAs(new[] { 2, 3, 5 }); }
Classes publicclassGeradorPrimosMuitoSimples : IGeradorNumerosPrimos { publicIEnumerable<int> GetPrimos()     {         var list = newList<int>  				{ 2, 3, 5, 7, 13 }; returnlist;     } }
Classes publicclass Decompositor { privatereadonlyIGeradorNumerosPrimos _geradorNumeroPrimos; public Decompositor(IGeradorNumerosPrimosgeradorNumerosPrimos)     { this._geradorNumeroPrimos = geradorNumerosPrimos;     } publicList<int> DecompoeFatorePrimos(int numero)     {         var list = newList<int>();         foreach (var primo in this._geradorNumeroPrimos.GetPrimos())         { if (primo == 1)             { break;             } while (numero % primo == 0)             { list.Add(primo);                 numero /= primo;             }         } returnlist;     } }
Programa staticvoidMain(string[] args) { int numero = 30;     var gerador = newGeradorPrimosMuitoSimples();     var decompositor = new Decompositor(gerador);     var list = decompositor. DecompoeFatorePrimos(numero);     Console.WriteLine( 		string.Format( 			"{0} = {1}",numero,  				string.Join(".", list)));     Console.ReadKey(); } Resultado => 30 = 2.3.5
Ferramentas do Exemplo MSTest SharpTestsEx
Exemplos SharpTestEx true.Should().Be.True(); false.Should().Be.False(); const string something = "something"; something.Should().Contain("some"); something.Should().Not.Contain("also"); something.ToUpperInvariant().Should().Not.Contain("some"); something.Should()     .StartWith("so")     .And     .EndWith("ing")     .And     .Contain("meth"); something.Should()     .Not.StartWith("ing")     .And     .Not.EndWith("so")     .And     .Not.Contain("body"); var ints = new[] { 1, 2, 3 }; ints.Should().Have.SameSequenceAs(new[] { 1, 2, 3 }); ints.Should().Not.Have.SameSequenceAs(new[] { 3, 2, 1 }); ints.Should().Not.Be.Null(); ints.Should().Not.Be.Empty(); ints.Should()     .Contain(2)     .And     .Not.Contain(4); (newint[0]).Should().Be.Empty();

Mais conteúdo relacionado

Mais procurados

Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02thomasdacosta
 
Linguagem c wellington telles - aula 08
Linguagem c   wellington telles - aula 08Linguagem c   wellington telles - aula 08
Linguagem c wellington telles - aula 08profwtelles
 
07 algoritmo - eSTRUTURA DE REPETIÇÃO
07   algoritmo - eSTRUTURA DE REPETIÇÃO07   algoritmo - eSTRUTURA DE REPETIÇÃO
07 algoritmo - eSTRUTURA DE REPETIÇÃORoney Sousa
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem GoAllisson Azevedo
 
Questao.4
Questao.4Questao.4
Questao.4Utyiama
 
Como trabalhar com código legado
Como trabalhar com código legadoComo trabalhar com código legado
Como trabalhar com código legadoSidney Filho
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesRegis Magalhães
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maplejeandson correa
 
Linguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoLinguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoRegis Magalhães
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funçõesthomasdacosta
 

Mais procurados (20)

Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02
 
Linguagem Go
Linguagem GoLinguagem Go
Linguagem Go
 
Linguagem c wellington telles - aula 08
Linguagem c   wellington telles - aula 08Linguagem c   wellington telles - aula 08
Linguagem c wellington telles - aula 08
 
07 algoritmo - eSTRUTURA DE REPETIÇÃO
07   algoritmo - eSTRUTURA DE REPETIÇÃO07   algoritmo - eSTRUTURA DE REPETIÇÃO
07 algoritmo - eSTRUTURA DE REPETIÇÃO
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Linguagem C 06 Funcoes
Linguagem C 06 FuncoesLinguagem C 06 Funcoes
Linguagem C 06 Funcoes
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem Go
 
06 algoritmo
06   algoritmo06   algoritmo
06 algoritmo
 
Questao.4
Questao.4Questao.4
Questao.4
 
Linguagem C 02 String
Linguagem C 02 StringLinguagem C 02 String
Linguagem C 02 String
 
Como trabalhar com código legado
Como trabalhar com código legadoComo trabalhar com código legado
Como trabalhar com código legado
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E Matrizes
 
Tdc2010
Tdc2010Tdc2010
Tdc2010
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maple
 
Linguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoLinguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De Repeticao
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funções
 

Semelhante a TDD

Semelhante a TDD (20)

Java4
Java4Java4
Java4
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
Java3
Java3Java3
Java3
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
 
Series lab
Series labSeries lab
Series lab
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
JUnit
JUnitJUnit
JUnit
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
Ling c
Ling cLing c
Ling c
 

TDD

  • 1. TDD Alaor Bianco alaorbianco@yahoo.com.br
  • 3. Cone da Incerteza Incerteza Custo Esforço
  • 4. Custo de Modificações(Eng. de Soft. Moderna)
  • 5. Como?! Design Evolutivo Simplicidade Feedback constante (e rápido) Testes Automatizados Refatoração
  • 6. Exemplo Um programa para decompor em fatores primos Exemplo: 30 = 2.3.5 Exemplo: 20 = 2.2.5
  • 7. Testes [TestMethod] publicvoidGetPrimos_Deve_Retornar_Sequencia_Primos() { IGeradorNumerosPrimos gerador = newGeradorPrimosMuitoSimples(); gerador.GetPrimos().Should().Have. SameSequenceAs( new[] { 2, 3, 5, 7, 13 }); }
  • 8. Testes [TestMethod] publicvoid DecompoeFatorePrimos_Decompor_30_Deve_Retornar_2_3_5() { var gerador = new GeradorPrimosMuitoSimples(); var decompositor = new Decompositor(gerador); decompositor.DecompoeFatorePrimos(30).Should() .Have.SameSequenceAs(new[] { 2, 3, 5 }); }
  • 9. Classes publicclassGeradorPrimosMuitoSimples : IGeradorNumerosPrimos { publicIEnumerable<int> GetPrimos() { var list = newList<int> { 2, 3, 5, 7, 13 }; returnlist; } }
  • 10. Classes publicclass Decompositor { privatereadonlyIGeradorNumerosPrimos _geradorNumeroPrimos; public Decompositor(IGeradorNumerosPrimosgeradorNumerosPrimos) { this._geradorNumeroPrimos = geradorNumerosPrimos; } publicList<int> DecompoeFatorePrimos(int numero) { var list = newList<int>(); foreach (var primo in this._geradorNumeroPrimos.GetPrimos()) { if (primo == 1) { break; } while (numero % primo == 0) { list.Add(primo); numero /= primo; } } returnlist; } }
  • 11. Programa staticvoidMain(string[] args) { int numero = 30; var gerador = newGeradorPrimosMuitoSimples(); var decompositor = new Decompositor(gerador); var list = decompositor. DecompoeFatorePrimos(numero); Console.WriteLine( string.Format( "{0} = {1}",numero, string.Join(".", list))); Console.ReadKey(); } Resultado => 30 = 2.3.5
  • 12. Ferramentas do Exemplo MSTest SharpTestsEx
  • 13. Exemplos SharpTestEx true.Should().Be.True(); false.Should().Be.False(); const string something = "something"; something.Should().Contain("some"); something.Should().Not.Contain("also"); something.ToUpperInvariant().Should().Not.Contain("some"); something.Should() .StartWith("so") .And .EndWith("ing") .And .Contain("meth"); something.Should() .Not.StartWith("ing") .And .Not.EndWith("so") .And .Not.Contain("body"); var ints = new[] { 1, 2, 3 }; ints.Should().Have.SameSequenceAs(new[] { 1, 2, 3 }); ints.Should().Not.Have.SameSequenceAs(new[] { 3, 2, 1 }); ints.Should().Not.Be.Null(); ints.Should().Not.Be.Empty(); ints.Should() .Contain(2) .And .Not.Contain(4); (newint[0]).Should().Be.Empty();