Advanced Live Testing
Augusto Pascutti / Nelson Senna
Advanced Live Testing
Augusto Pascutti / Nelson Senna
Nossa experiência com TDD
Augusto Pascutti / Nelson Senna
Os pilotos
Augusto Pascutti
Twitter: @augustohp
Github: augustohp
Slides: http://bit.ly/augustohp
Blog: http://augustopascutti.com
Nelson Senna
Twitter: @nelson_senna
Github: nelsonsar
Slides: http://bit.ly/nelsonsar
Blog: http://nelsonsar.github.io
O que é um teste?
1 <?php
2
3 namespace App;
4
5 class Download
6 {
7 public function fromUrl($fromUrl, $toFile)
8 {
9 $contents = file_get_...
1 <?php
2
3 namespace App;
4
5 class Download
6 {
7 public function fromUrl($fromUrl, $toFile)
8 {
9 $contents = file_get_...
1 <?php
2
3 namespace App;
4
5 class Download
6 {
7 public function fromUrl($fromUrl, $toFile)
8 {
9 $contents = file_get_...
1 <?php
2
3 namespace App;
4
5 class DownloadTest extends PHPUnit_Framework_TestCase
6 {
7 const DESTINATION_FILE = '/tmp/...
1 <?php
2
3 namespace App;
4
5 class DownloadTest extends PHPUnit_Framework_TestCase
6 {
7 const DESTINATION_FILE = '/tmp/...
Diferentes níveis de teste
1. Unitário (white-box)
2. Integração (white-box, black-box)
3. Acceptance (black-box)
O que é TDD?
–Ron Jeffries
“Código limpo que funciona.”
–Wikipedia: Test-driven development
“… metodologia que se baseia na repetição de
ciclos muito curtos de desenvolvimento.”
...
Um ciclo
Um ciclo
1. Criar um teste (RED)
Um ciclo
1. Criar um teste (RED)
2. Fazer uma mudança pequena (GREEN)
Um ciclo
1. Criar um teste (RED)
2. Fazer uma mudança pequena (GREEN)
3. Refactor
–Kent Beck / Nat Pryce
“O TDD não garante boa arquitetura. Ele dá um
retorno imediato do que, provavelmente, é uma
má arqu...
Por que usar TDD?
Por que usar TDD?
• Evitar que defeito vire falha
• Evitar o “stress loop”
• Aumenta coesão, diminui acoplamento
• É uma f...
Mão na massa?
O que iremos fazer?
Iterações
1. Falha ao salvar um e-mail na newsletter.
2. Validação de email ao salvar.
3. Salvar um e-mail.
http://github.com/PHPSP/Jarbas
Nossa experiência com TDD
Próximos SlideShares
Carregando em…5
×

Nossa experiência com TDD

803 visualizações

Publicada em

Palestra de TDD apresentada no InterconPHP no dia 19/07/2014.

A apresentação discorre rapidamente sobre conceitos básicos do Test Driven Development como:

- A diferença entre teste e teste automatizado;
- Os diferentes tipos de testes;
- O que é TDD;
- Explicação de um ciclo de TDD;
- E o porquê de usar TDD.

O repositório ao final da apresentação faz parte de uma demonstração de algumas iterações feitas pelos apresentadores para ilustrar os ciclos da prática.

0 comentários
8 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
803
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
8
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Nossa experiência com TDD

  1. 1. Advanced Live Testing Augusto Pascutti / Nelson Senna
  2. 2. Advanced Live Testing Augusto Pascutti / Nelson Senna
  3. 3. Nossa experiência com TDD Augusto Pascutti / Nelson Senna
  4. 4. Os pilotos
  5. 5. Augusto Pascutti Twitter: @augustohp Github: augustohp Slides: http://bit.ly/augustohp Blog: http://augustopascutti.com
  6. 6. Nelson Senna Twitter: @nelson_senna Github: nelsonsar Slides: http://bit.ly/nelsonsar Blog: http://nelsonsar.github.io
  7. 7. O que é um teste?
  8. 8. 1 <?php 2 3 namespace App; 4 5 class Download 6 { 7 public function fromUrl($fromUrl, $toFile) 8 { 9 $contents = file_get_contents($fromUrl); 10 // var_dump($contents); 11 $bytes = file_put_contents( 12 $toFile, 13 $contents 14 ); 15 // var_dump($bytes); 16 return $bytes; 17 } 18 }
  9. 9. 1 <?php 2 3 namespace App; 4 5 class Download 6 { 7 public function fromUrl($fromUrl, $toFile) 8 { 9 $contents = file_get_contents($fromUrl); 10 // var_dump($contents); 11 $bytes = file_put_contents( 12 $toFile, 13 $contents 14 ); 15 // var_dump($bytes); 16 return $bytes; 17 } 18 }
  10. 10. 1 <?php 2 3 namespace App; 4 5 class Download 6 { 7 public function fromUrl($fromUrl, $toFile) 8 { 9 $contents = file_get_contents($fromUrl); 10 // var_dump($contents); 11 $bytes = file_put_contents( 12 $toFile, 13 $contents 14 ); 15 // var_dump($bytes); 16 return $bytes; 17 } 18 }
  11. 11. 1 <?php 2 3 namespace App; 4 5 class DownloadTest extends PHPUnit_Framework_TestCase 6 { 7 const DESTINATION_FILE = '/tmp/test-file'; 8 9 public function tearDown() 10 { 11 unlink(self::DESTINATION_FILE); 12 } 13 14 public function testDownloadCreatesTheFile() 15 { 16 $file = self::DESTINATION_FILE; 17 $this->assertFileNotExists($file); 18 19 $downloader = new Download; 20 $url = 'http://example.org'; 21 $bytesWritten = $downloader->fromUrl($url, $file); 22 23 $this->assertGreaterThan(0, $bytesWritten); 24 $this->assertFileExists($file); 25 } 26 }
  12. 12. 1 <?php 2 3 namespace App; 4 5 class DownloadTest extends PHPUnit_Framework_TestCase 6 { 7 const DESTINATION_FILE = '/tmp/test-file'; 8 9 public function tearDown() 10 { 11 unlink(self::DESTINATION_FILE); 12 } 13 14 public function testDownloadCreatesTheFile() 15 { 16 $file = self::DESTINATION_FILE; 17 $this->assertFileNotExists($file); 18 19 $downloader = new Download; 20 $url = 'http://example.org'; 21 $bytesWritten = $downloader->fromUrl($url, $file); 22 23 $this->assertGreaterThan(0, $bytesWritten); 24 $this->assertFileExists($file); 25 } 26 }
  13. 13. Diferentes níveis de teste 1. Unitário (white-box) 2. Integração (white-box, black-box) 3. Acceptance (black-box)
  14. 14. O que é TDD?
  15. 15. –Ron Jeffries “Código limpo que funciona.”
  16. 16. –Wikipedia: Test-driven development “… metodologia que se baseia na repetição de ciclos muito curtos de desenvolvimento.” https://en.wikipedia.org/wiki/Test-driven_development
  17. 17. Um ciclo
  18. 18. Um ciclo 1. Criar um teste (RED)
  19. 19. Um ciclo 1. Criar um teste (RED) 2. Fazer uma mudança pequena (GREEN)
  20. 20. Um ciclo 1. Criar um teste (RED) 2. Fazer uma mudança pequena (GREEN) 3. Refactor
  21. 21. –Kent Beck / Nat Pryce “O TDD não garante boa arquitetura. Ele dá um retorno imediato do que, provavelmente, é uma má arquitetura.”
  22. 22. Por que usar TDD?
  23. 23. Por que usar TDD? • Evitar que defeito vire falha • Evitar o “stress loop” • Aumenta coesão, diminui acoplamento • É uma forma de documentação
  24. 24. Mão na massa?
  25. 25. O que iremos fazer?
  26. 26. Iterações 1. Falha ao salvar um e-mail na newsletter. 2. Validação de email ao salvar. 3. Salvar um e-mail.
  27. 27. http://github.com/PHPSP/Jarbas

×