Latest / Entre Chaves / Snippet #18 O que é pirâmide de testes e por que usar
Transcript
- 0:08Meu nome é Marcos Lane. Eu sou reality na BTIEO entre
- 0:12chaves me convidou para fazer um snippet de um tema de muita
- 0:15importância, a pirâmide de teste.
- 0:17Um conceito básico, mas fundamental para entender como
- 0:20testar um software de forma mais eficiente.
- 0:22Quando a gente fala em qualidade, não basta apenas
- 0:25testar, é preciso saber o que testar e quando.
- 0:27Testar. A pirâmide de teste ajuda nisso.
- 0:30Isso porque organiza os testes conforme custo, velocidade e
- 0:33objetivo. A grande ideia da pirâmide é bem
- 0:35simples, quanto mais baixo estamos nela, mais rápidos e
- 0:38baratos os testes costumam ser. Quanto mais alto, mais demorados
- 0:41e caros eles ficam. Em outras palavras, uma boa
- 0:44estratégia de teste evita depender de mais de validações
- 0:47complexas e lentas, priorizando testes simples, rápidos e
- 0:50baratos sempre que possível. Para entender isso melhor, vamos
- 0:53imaginar o seguinte cenário nas 3 etapas diferentes da pirâmide,
- 0:56o teste unitário, o teste de integração e os testes in to
- 0:59wend. Imagina uma porta de correr e um
- 1:02tringo de ferrolho, aquele de banheiro público que você só
- 1:05arrasta o negocinho por lado e a porta tranca?
- 1:07Na base da pirâmide temos o teste unitário que verifica uma
- 1:10pequena e isolada parte do sistema.
- 1:13No exemplo, eu posso testar o trinco sozinho, eu movo a trava
- 1:16pra frente pra trás e percebo que ele desliza tranquilamente.
- 1:19Também eu posso testar a porta de correr separadamente, vendo
- 1:22se ela corre bem no trilho e fecha como deveria, sem sobrar
- 1:25espaços em relação a moldura. Nesse caso, cada elemento
- 1:29funciona sozinho. Esse tipo de teste é equivalente
- 1:32no software a verificar uma função, um método ou uma regra
- 1:35de negócio isolada. E aqui tá um ponto.
- 1:37E que é importante os testes unitários.
- 1:39Eles são rápidos e baratos de se fazer e executar.
- 1:42Eles exigem pouco ambiente, pouca configuração e normalmente
- 1:45apontam um problema com precisão, por isso devem ser a
- 1:48maior parte da estratégia de testes.
- 1:50Agora, no meio da pirâmide, temos o teste de integração, que
- 1:53verificam se 2 partes que funcionam separadamente também
- 1:56funcionam quando colocadas juntas.
- 1:58No exemplo, o trinco funciona sozinho e a porta também.
- 2:01Mas quando eu instalo um trinco de ferrolho em uma porta de
- 2:04correio, surge o problema, o trinco se move, a porta fecha,
- 2:07mas o trinco não tranca a porta, já que ele não é feito por esse
- 2:10tipo de porta, mas sim portas que abrem e fecham pra frente e
- 2:13pra trás. Ou seja, separadamente.
- 2:15Tudo parece certo, mas na integração aparece a falha num
- 2:18software. Isso acontece quando 2 módulos
- 2:21passam os seus testes isolados, mas falham quando precisam
- 2:24trocar dados, informações ou trabalhar em conjunto.
- 2:27No topo da pirâmide, o teste and to wend valido o fluxo completo
- 2:31do ponto de vista do usuário. No exemplo, seria uma pessoa
- 2:34entrando no banheiro fechando a porta de correr, tentando travar
- 2:38pra ter privacidade e percebendo que mesmo a porta deslizando e o
- 2:42trinco fechando, o conjunto não proporciona a privacidade do
- 2:45usuário, que era a ideia inicial.
- 2:47Esse tipo de teste ele é importante porque mostra a
- 2:50experiência do uso completo do sistema, mas ele tem um custo
- 2:53bem maior. Testes and to Wendy são mais
- 2:55demorados e mais caros, tanto. Para criar quanto para se
- 2:58manter, por exemplo, rodar mais ou menos 25 testes em de to wend
- 3:03de um projeto pode levar até 3 horas, enquanto rodar 4000
- 3:07testes unitários leva entre só 10 a 15 minutos, dependendo da
- 3:11máquina. Os testes em de to wend costumam
- 3:13depender de mais componentes funcionando ao mesmo tempo, que
- 3:17faz ser mais sensível a mudança e leva mais tempo para rodar.
- 3:20Por isso, não deve ser a maior parte da estratégia, mas sim uma
- 3:23camada menor, reservada para validar cenários realmente
- 3:26críticos. Resumindo, a pirâmide de teste
- 3:29mostra exatamente isso. Na base ficam os testes
- 3:31unitários, que são rápidos, baratos e numerosos.
- 3:34No meio, ficam os testes de integração, que valem no
- 3:37comunicação entre as partes do sistema, e no topo ficam os
- 3:40testes em que são mais completos, mas também lentos e
- 3:43caros. No exemplo da porta, eu vejo que
- 3:46o trink sozinho funciona, a porta sozinha funciona, mas o
- 3:49conjunto como um todo falha e isso só fica totalmente claro.
- 3:53Quando analisamos desde as partes isoladas até a
- 3:56experiência completa, mostrando que todas as partes são
- 3:59essenciais para o funcionamento de um sistema que preza pela
- 4:02qualidade e pela experiência do usuário.
- 4:04Esse raciocínio ajuda a gente a entender porque que a pirâmide
- 4:07de teste faz sentido. Se uma equipe tenta validar tudo
- 4:11só com testes and to end, ela acaba gastando muito mais tempo,
- 4:14mais dinheiro e mais esforço para encontrar problemas que
- 4:18poderiam ter sido encontrados lá atrás com os testes unitários
- 4:21simples ou testes de integração. Já quando a base é forte, com
- 4:24testes rápidos e baratos, e o topo é usado com critério e
- 4:28estratégia, a qualidade se torna mais sustentável e assertiva
- 4:31automaticamente. No fim, testar bem não é só
- 4:34testar muito, mas é testar de forma inteligente.
- 4:37Mas e aí? Depois escutei esse snip e
- 4:39entender a importância e a aplicabilidade da pirâmide de
- 4:43testes no seu sistema. Você vai precisar repensar a sua
- 4:46estratégia de teste.