Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Programação > Cursos de PHP > Conteúdos de PHP > Primeiras aulas do curso PHP e Behavior Driven Development: BDD com Behat

PHP e Behavior Driven Development: BDD com Behat

Introdução ao BDD - Introdução

Boas-vindas à Alura, meu nome é Vinicius Dias, embora vocês ainda não estejam me vendo, eu vou guiar vocês nesse treinamento de BDD utilizando PHP para desenvolver as funcionalidades.

Nesse treinamento vamos ver um pouco sobre documentação de funcionalidade, vamos falar sobre esse formato para documentarmos o que vamos desenvolver. Inclusive o documentário que vai desenvolver, obviamente antes de desenvolver. Porque depois que já estiver pronto, já sabemos que está funcionando. Então o ideal é que realizemos essas tarefas antes de chegar na parte do desenvolvimento.

Então vamos ver como descrever uma funcionalidade e qual o propósito dessa funcionalidade, quem vai utilizar, quais regras essa funcionalidade precisa atender e vamos criar cenários de teste para isso. E esses cenários serão automatizados. Essa parte de automatização vai ser bem interessante e no final das contas vamos ter alguns testes rodado em memória e alguns outros testes rodando até em um banco de dados.

Espero que você já tenha feito os treinamentos de teste de unidade de integração aqui na Alura utilizando PHP, então você já sabe a diferença entre esses dois testes. Só que você vai ver como implementá-los de uma forma diferente, utilizando outra ferramenta, com outra filosofia. E além de realizar testes que já conhecemos e sabemos como implementar, mas automatizando com uma linguagem bem interessante, também vamos aprender uma coisa nova sobre testes end-to-end ou testes de ponta a ponta.

E nesse tipo de teste já vamos ver algumas ferramentas interessantes para que nem ao menos precisemos digitar código para realizar e automatizar esses testes. Algumas funcionalidades vão ser implementadas e vamos utilizar o projeto que utilizamos no curso de MVC, então vou disponibilizar para você baixar esse projeto e começarmos no mesmo ponto para começar a testar novas funcionalidades, documentar e falar bastante, porque nesse treinamento eu pretendo falar um bocado.

Então vem comigo, espero que você aproveite bastante, tire bastante proveito. Caso durante o treinamento fique qualquer dúvida, não hesite, você pode abrir uma dúvida no fórum, eu tento responder pessoalmente, mas quando eu não consigo, nossa comunidade de alunos e de moderadores é bem solícita, então com certeza alguém vai poder te ajudar. Então vem comigo para o próximo vídeo para vermos qual é o sistema no qual vamos trabalhar e finalmente receber novas funcionalidades.

Introdução ao BDD - Apresentando o sistema

E aí, pessoal? Vamos dar uma olhada bem rápida no sistema que vamos trabalhar antes de começarmos a trabalhar de fato. O sistema que vamos utilizar é o mesmo que construímos no curso de MVC aqui da Alura. Então, caso você já tenha feito esse treinamento, pode até pular essa etapa, porque você provavelmente já tem um ambiente configurado na sua máquina, mas caso contrário, fica aqui comigo para eu mostrar o sistema para você bem rápido.

Eu já tenho o sistema todo configurado, então vou dar uma passada nele primeiro. Eu tenho um usuário cadastrado, coloco minha senha, vou fazer o login.

E é um sistema de controle de cursos. Vamos cadastrar cursos, por exemplo. Então o que eu vou fazer? Vou cadastrar um novo curso, Introdução ao BDD, consigo cadastrar, consigo editar alguma coisa, consigo remover o curso e consigo fazer logout. Então tudo aparentemente funcionando e para você baixar, já que você precisa para dar continuidade nesse treinamento, eu vou deixar o link do repositório dele na atividade "Projeto do curso".

O que você precisa é do PHP pelo menos na versão 7.3, pode ser na versão 7.4, que é a versão mais atual no momento que eu estou gravando, e é a que eu estou usando, ou pode ser até versões mais novas, como PHP 8, você provavelmente só vai precisar atualizar as dependências do Composer, mas tudo deve continuar funcionando.

Você vai precisar do PHP no mínimo na versão 7.3, Composer instalado e o PDO SQLite, que já vem habilitado por padrão, então sem muito segredo. Caso você não queira instalar isso no computador, mas tem o Docker instalado, por exemplo, eu já deixei todos os comandos necessários, é só rodar esses comandos para o projeto estar configurado e você subir o servidor.

De novo, caso você instale e não queira utilizar o Docker, caso você já tenha isso instalado na sua máquina, tanto PHP quanto Composer, basta executar os comandos sem toda a parte do Docker. Então, por exemplo, do Composer Install e o PHP para frente você já vai conseguir executar todos os comandos.

Esses comandos são para configurar o banco de dados, gerar o esquema do banco de dados, inserir um novo usuário e levantar o servidor.

O servidor é esse que estamos vendo, ele está rodando na linha de comando e você pode acompanhar tudo que está acontecendo.

O código, você pode dar uma conferida nele, não é um código muito complexo, trabalhamos bastante em cima dele no treinamento de MVC. Então, caso você queira, é só dar uma olhada para conferir o que temos aqui.

Então ambiente configurado com PHP instalado, Composer instalado, projeto configurado, você pode dar uma olhada, testar e garantir que tudo está funcionando, a partir de agora vamos começar a receber solicitações de novas funcionalidades. Então vamos para o próximo vídeo conversar sobre o que vamos ter que implementar nesse sistema.

Introdução ao BDD - Recebendo uma feature

Como comentado no último vídeo, agora vamos começar a receber pedidos de novas funcionalidades. E é exatamente isso que aconteceu, eu tive uma reunião com o especialista de negócios, estivemos com a equipe inteira de negócios, na verdade, e começamos a discutir sobre a funcionalidade que precisamos implementar.

Então eu gosto bastante de utilizar como rascunho, como editor de texto e não de código em si, o VS Code.

Mas caso você queira continuar utilizando o PhpStorm para fazer seus rascunhos, problema nenhum, eu só vou utilizar por hábito, mas caso você queira, por exemplo, criar um arquivo só de rascunho, existe a funcionalidade “New > New Scratch File” e aí você pode criar um arquivo em texto para rascunho, mas eu vou abrir o VS Code e criar um novo arquivo para eu utilizar como rascunho. E eu vou anotar os detalhes da funcionalidade que estamos implementando.

Vamos lá. É uma nova funcionalidade que é o cadastro de formações. Esse cadastro de formações, o que eu quero? O que eu quero atingir com esse cadastro de formações? Caso você já tenha estudado um pouco sobre metodologias ágeis, você provavelmente já ouviu falar sobre uma user story, que é uma forma de descrever uma funcionalidade, uma forma que você escreve uma história, o que você quer atingir de objetivo, o motivo de você implementar uma funcionalidade, para que você vá atacando e desenvolvendo pequenas histórias dessas.

Então vamos, sem focar muito nos detalhes de user story, vamos criar uma. Eu vou dizer que eu, como instrutor, quero cadastrar formações para organizar meus cursos.

Então esse é mais ou menos o formato de user story. Existem várias outras, outros formatos, só direto como instrutor, dizendo “eu quero”. Existem vários formatos, mas isso não importa, isso é um texto puro, nenhum programa vai ler isso nem nada do tipo, então só estamos organizando as ideias. Com isso, o que temos? Começamos a ter um arquivo, que tanto eu desenvolvedor, quanto uma pessoa da equipe de negócios consegue entender.

Você concorda que qualquer pessoa que ler isso consegue entender o que tem que aplicar no sistema? Então com isso começamos a aproximar a comunicação com nossa equipe de negócios. Tanto eu desenvolvedor, quanto uma pessoa de negócios que ler esse arquivo, vai entender que essa requisição de uma nova funcionalidade, se trata do cadastro de formações e tem o propósito, tem quem vai utilizar essa funcionalidade(Eu, como instrutor), tem o que é a funcionalidade em si (Quero cadastrar informações) e tem o propósito (Para organizar meus cursos), tem o motivo de implementarmos essa funcionalidade.

Eu sei que quem vai utilizá-la é um instrutor que estiver utilizando o sistema, eu sei que o que ele quer fazer é cadastrar formações no sistema e eu sei que ele quer fazer isso para poder organizar os cursos que ele já tem cadastrados. Então o que acontece? Com uma forma muito simples e um formato, digamos, bobo, conseguimos expressar bastante valor. E com essas user stories, essas histórias de usuário, com esses casos de uso, para quem já estudou UML, você poderia criar use cases, isso seria um caso de uso, um use case.

Enfim, com esses detalhes, com essas descrições, conseguimos priorizar, saber qual funcionalidade vai agregar mais valor para os clientes, no caso para o instrutor que vai utilizar o sistema e saber o que priorizar, qual atacar primeiro, qual vamos desenvolver primeiro.

E para ganhar uma mão na roda, ao invés de deixar isso como texto, eu vou informar que isso é um arquivo de funcionalidade.

Então repara que ele já colocou uma cor bonita para mim, em Cadastro de Formações outra cor, mas de novo, caso você esteja no PhpStorm não tem problema, isso é só um arquivo de texto por enquanto, não estamos fazendo nada com ele, isso é só um rascunho. Se você estiver no Windows e quiser colocar isso no bloco de notas, perfeito. Se você quiser escrever na mão por enquanto, com papel e caneta, perfeito. Só estamos organizando ideias por enquanto e conversando com a equipe de negócios.

Então nesse primeiro momento tudo que fizemos foi conversar com uma equipe de negócios para levantar uma ideia de funcionalidade. Os instrutores nos trouxeram essa demanda e nós, como desenvolvedores, junto com a equipe de negócios, estamos pensando em como implementar isso.

Então a primeira coisa que precisamos fazer é descrever a funcionalidade do cadastro de formações. Então esse vídeo, embora tenha sido relativamente simples demais, serve para introduzir o conceito de user story e eu espero que você pesquise um pouco mais sobre o assunto, que é bem interessante e embora seja simples, pode te dar ideias bem legais de como organizar até mesmo seus projetos pessoais.

Agora, sabemos que existe essa funcionalidade, sabemos que o instrutor quer cadastrar as formações para poder organizar os cursos. Mas quando eu for implementar isso, o que eu preciso verificar? Existe alguma regra específica, eu preciso informar algum detalhe a mais? Como por exemplo, eu poderia explicar que as regras são: A formação precisa ter uma descrição e a descrição precisa ter pelo menos 2 palavras.

Posso realizar isso, posso organizar um pouco mais a nossa user story. Só que além de ter essas regras, eu preciso saber como que na hora do desenvolvimento e depois quando essa funcionalidade estiver pronta, como que eu vou testar e como eu vou garantir que essa funcionalidade está atingindo o que é esperado? A equipe de negócios vai realizar algumas verificações e eu quero deixar isso documentado, eu quero saber quais cenários eles vão utilizar.

Por exemplo, caso eles cadastrem uma formação chamada PHP no meu sistema, o que eu espero que aconteça? Eu sei que segundo a regra, a descrição da formação precisa ter pelo menos 2 palavras, mas o que acontece com o meu sistema? O que eu espero que aconteça? E caso eu cadastre uma formação realmente correta com 2 palavras, como por exemplo, programação em PHP, PHP para backend, PHP na Web, algo assim, o que eu espero que aconteça? Eu vou ver uma mensagem? Eu vou ser redirecionado para alguma tela? Eu vou criar uma tela nova?

Então precisamos descrever muito bem o que esperamos com essa funcionalidade que vamos implementar, cada um dos cenários. Vou encerrar esse vídeo por aqui, que já está ficando longo e no próximo vídeo vamos bater um papo bem rápido sobre os possíveis cenários dessa funcionalidade.

Sobre o curso PHP e Behavior Driven Development: BDD com Behat

O curso PHP e Behavior Driven Development: BDD com Behat possui 115 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas