O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Advanced live testing em tempo real

425 visualizações

Publicada em

Nelson Senna e Augusto Pascutti mostram em tempo real Advanced Live Testing no InterCon PHP 2014.

O InterCon aconteceu no último dia 19 de Julho no Intercontinental em São Paulo - http://interconphp.imasters.com.br/

Publicada em: Educação
  • Seja o primeiro a comentar

Advanced live testing em tempo real

  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. “Código limpo que funciona.” –Ron Jeffries
  16. 16. “… metodologia que se baseia na repetição de ciclos muito curtos de desenvolvimento.” –Wikipedia: Test-driven development 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. “O TDD não garante boa arquitetura. Ele dá um retorno imediato do que, provavelmente, é uma má arquitetura.” –Kent Beck / Nat Pryce
  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

×