Return to Video

5.2 - FIRST, TDD and Getting Started with RSpec

  • 0:00 - 0:04
    Ok, então vamos começar com esta próprias mãos sobre a abordagem do teste. O teste é uma
  • 0:04 - 0:09
    coisa que eu, tenho que admitir que é realmente apenas três ou quatro anos atrás que eu comecei a
  • 0:09 - 0:13
    religião sobre ele, e o que eu quero dizer com isso é que eu sempre meio que, você sabe, foi-me dito
  • 0:13 - 0:17
    que era importante, eu acreditava era importante, eu meio que tentei fazê-lo, mas
  • 0:17 - 0:21
    fazê-lo desta maneira realmente mudou minha vida e espero que isso vai mudar a sua também e
  • 0:21 - 0:25
    não, eu não estou na campanha presidencial, isto é, de qualquer forma, ok Então, vamos começar
  • 0:25 - 0:29
    falando sobre testes de unitário. Há algum background no livro sobre as diferentes
  • 0:29 - 0:33
    tipos de testes. Iremos nos concentrar inicialmente em testes unitário e um pouco sobre testes
  • 0:33 - 0:37
    funcionais e como acontece com tantas coisas nesta classe, há uma sigla útil que ajuda
  • 0:37 - 0:41
    a lembrar que testes unitários devem ser bons. Assim, uma delas é que deve ser rápido,
  • 0:41 - 0:44
    não deve demorar muito tempo para executá-los. Devem ser independentes, o que significa
  • 0:44 - 0:48
    que a execução de um teste antes de outro não deve fazer qualquer diferença. A ordem
  • 0:48 - 0:51
    em que você executá-los não deve ter dependências entre si. Eles devem ser
  • 0:51 - 0:55
    repetível, se um teste encontra um bug, ele deve achar que bug o tempo todo. em alguns
  • 0:55 - 1:01
    casos é fácil de fazer isso, em outros casos é surpreendentemente sutil. Auto-verificação.
  • 1:01 - 1:05
    O teste utilizado para significar não, que há muito tempo para muitas empresas, é que o software
  • 1:05 - 1:09
    foi jogado por cima do muro a este departamento de QA. E então as pessoas em QA seria
  • 1:09 - 1:12
    classificar manualmente de cutucar o software e fazer as coisas. E sim esse trabalho. Sim, isso
  • 1:12 - 1:16
    funcionou. Isso, nós não fazemos mais isso, certo ? O código de teste tem que conhecer a si mesma se
  • 1:16 - 1:20
    ele passou ou falhou. Nenhuma intervenção humana deve ser requerida para tomada dessa decisão.
  • 1:20 - 1:24
    E oportuna. Isso significa que o teste deve ser escrito direita em torno do
  • 1:24 - 1:27
    mesmo tempo, o código foi escrito. Se as alterações de código, a mudança de teste imediatamente. NA
  • 1:27 - 1:31
    verdade, na verdade estamos indo fazê-lo ainda mais agressiva. Nós vamos escrever o teste
  • 1:31 - 1:34
    primeiro, antes de o codigo estar escrito. Então, isso é tão oportuna como você pode ser. É como
  • 1:34 - 1:38
    entrega túnel do tempo. Então, o que significa isso? Porque, se os testes são rápidos, por que
  • 1:38 - 1:42
    você quer isso? Bem, é porque você pode executar um subconjunto dos testes o tempo todo. Se
  • 1:42 - 1:46
    você tem milhares e milhares de testes de unidade, que não é incomum, mesmo em um
  • 1:46 - 1:50
    projeto de tamanho médio. Pode demorar, você sabe, um ou dois minutos para executar o
  • 1:50 - 1:53
    teste completo de varredura, e que realmente te atrasa. O que você quer é ser capaz de
  • 1:53 - 1:57
    executar rapidamente apenas os testes que se aplicam ao pedaço de código que você está trabalhando, e
  • 1:57 - 2:01
    não tem esse tipo de levá-lo fora do ritmo. Independente. Por essa mesma razão,
  • 2:01 - 2:05
    você quer ser capaz de executar qualquer subconjunto e você quer ser capaz de executá-los em qualquer
  • 2:05 - 2:09
    ordem. Então, seria ruim se houvesse um conjunto de testes que só funcionasse corretamente
  • 2:09 - 2:13
    desde que você fez alguns outros testes na frente deles. Repetitivo. Você sabe, mais uma vez, execute-o
  • 2:13 - 2:17
    N vezes, obter os mesmos resultados. Se você quer isolar bugs, e ativar a depuração
  • 2:17 - 2:21
    automático, repetibilidade é essencial. Auto-verificação, como eu disse. Nenhum ser humano
  • 2:21 - 2:25
    Nenhuma verificação humana da saída. Isso significa que você pode classificar de ter testes executados em
  • 2:25 - 2:29
    segundo plano o tempo todo. E sempre que você muda algo que quebra alguma coisa 25
  • 2:29 - 2:33
    milhas de distância em outro pedaço de código, alguns testes irão detectar esse fato, e buscá-lo
  • 2:33 - 2:37
    e trazê-lo à sua atenção. E oportuna, como eu disse, vamos usar
  • 2:37 - 2:41
    test-driven development, onde escrever o teste antes de escrever o código. Assim,
  • 2:41 - 2:46
    a sigla céu. Nós vamos estar usando nossa especificação, o que eu penso como um domínio
  • 2:46 - 2:50
    específico para escrever testes. Para aqueles de vocês que não estão familiarizados com
  • 2:50 - 2:54
    o DSL, o que é, basicamente, como uma linguagem de programação pequena que só faz um
  • 2:54 - 2:58
    pequeno número de coisas dentro de um domínio de tarefas. Por isso, não tento ser geral,
  • 2:58 - 3:03
    e nós temos realmente visto exemplos de eles até agora. As migrações são um tipo de DSL,
  • 3:03 - 3:06
    certo. Há um, um pequeno conjunto de declarações cujo único trabalho é a de expressar
  • 3:06 - 3:11
    alterações no esquema de banco de dados. Agora migrações acontecer de ser um D.S.L. Isto é
  • 3:11 - 3:15
    Que está incorporado em Ruby. Significado, as migrações são apenas código Ruby, mas eles são estilizada para
  • 3:15 - 3:19
    parecer com as tarefas que eles fazem. E, de fato, veremos que a nossa especificação é, um exemplo
  • 3:19 - 3:23
    similar. Então, nós vamos chamar aqueles uma DSL interna. Ele é implementado dentro de outro
  • 3:23 - 3:28
    língua. As expressões regulares são outro DSL interna, certo? Há, como, este
  • 3:28 - 3:33
    vocabulário pouco sub coisas que você pode fazer em expressões regulares. Exemplo diferente
  • 3:33 - 3:36
    de um DSL externo ou de um stand-alone é SQL. Sequela consultas para bancos de dados, à direita,
  • 3:36 - 3:40
    que, é própria língua e aqueles de vocês que trabalharam com outros frameworks
  • 3:40 - 3:45
    antes de vir para Rails, geralmente o que você acaba fazendo é essencialmente a escrita de consultas
  • 3:45 - 3:48
    sequela e, em seguida, fazer passar uma string para alguém, certo? Então isso é um exemplo muito claro
  • 3:48 - 3:52
    de lidar com diferentes idiomas. [Tosse] Assim, em R spec, cada teste
  • 3:52 - 3:57
    é chamado de spec, para uma especificação. Surpreendentemente, eles habitam um diretório
Title:
5.2 - FIRST, TDD and Getting Started with RSpec
Description:

In this video, Armando introduces the five attributes of good unit tests, describes test-driven development and begins the RSpec demonstration.

more » « less
Video Language:
English
André Ribeiro de Miranda added a translation

Portuguese, Brazilian subtitles

Incomplete

Revisions