Dos requisitos
ao código: como
criar código
rastreável em
Flávio Gomes da Silva Lisboa
www.fgsl.eti.br
Quem sou eu
●
Doutor e mestre em Tecnologia e Sociedade
●
Especialista em Tecnologia Java
●
Engenheiro e Arquiteto de Software certificado
pela Zend
●
Professor de Análise e Projeto de Sistemas,
Banco de Dados, Programação Web, e Técnicas
de Programação e Algoritmos.
●
Analista de desenvolvimento, atualmente
trabalhando com gestão de API Gateways.
https://www.casadocodigo.com.br/
https://bpbonline.com/products/mastering-test-driven-development-with-php-8
https://www.packtpub.com/en-us/product/php-web-development-with-laminas-9781803245010
https://clubedeautores.com.br/livro/livres-ou-iguais
https://clubedeautores.com.br/livro/rom-biografia-
nao-autorizada
romocavaleirodoespaco.blogspot.com.br
ROM, BIOGRAFIA NÃO AUTORIZADA
CHICÓ, VOCÊ SABE
QUAL É O
REQUISITO QUE
GEROU ESSE
CÓDIGO?
NÃO, SEI, SÓ
SEI QUE É
ASSIM...
Como transformar requisitos claros
em testes automatizados
Estabelecer os requisitos para um produto de
software é uma tarefa significativa e direciona
o curso de ação para o esforço restante de
desenvolvimento de software (SCHMIDT, 2013, p.
10, nossa tradução).
Como transformar requisitos claros
em testes automatizados
As especificações de requisitos de software para
o produto orientam a definição da arquitetura
do produto, a implementação do software e os
esforços de teste e avaliação do software.
(SCHMIDT, 2013, p. 10, nossa tradução).
Como transformar requisitos claros
em testes automatizados
TESTAR
Como transformar requisitos claros
em testes automatizados
Como transformar requisitos claros
em testes automatizados
ANALISTA DE NEGÓCIOS DESENVOLVEDOR
Carinha que
almoça com o
cliente?
Carinha que faz o
sistema
funcionar?
Como transformar requisitos claros
em testes automatizados
ANALISTA DE NEGÓCIOS DESENVOLVEDOR
Carinha que
almoça com o
cliente?
Carinha que faz o
sistema
funcionar?
X X
Como transformar requisitos claros
em testes automatizados
ANALISTA DE NEGÓCIOS DESENVOLVEDOR
O que faz o sistema funcionar é o
código que implementa o requisito.
Como transformar requisitos claros
em testes automatizados
●
Como você sabe se um código está certo?
O que é a
verdade?
Como transformar requisitos claros
em testes automatizados
●
Como você sabe se uma pessoa cometeu um
crime?
Como transformar requisitos claros
em testes automatizados
O
REQUISITO
É
TUDO!
Como transformar requisitos claros
em testes automatizados
ALÉM DE ESCREVER OS
REQUISITOS EU VOU TER
QUE ESCREVER TESTES?
Ó DEUS!
Ó VIDA!
Ó AZAR!
Como transformar requisitos claros
em testes automatizados
REMEMBER, PETER...
Como transformar requisitos claros
em testes automatizados
Como seria
maravilhoso se ao
escrever os
requisitos nós já
criássemos os
testes para o
código… mas deve
ser um sonho...
Como transformar requisitos claros
em testes automatizados
NÃO É
UM
SONHO!
Como transformar requisitos claros
em testes automatizados
Behavior-Driven Development
BDD é uma forma de trabalho para equipes de software que reduz a
distância entre os profissionais de negócios e os técnicos por
meio de:
●
Incentivar a colaboração entre funções para construir um
entendimento compartilhado do problema a ser resolvido
●
Trabalhar em iterações rápidas e pequenas para aumentar o
feedback e o fluxo de valor
●
Produzir documentação do sistema que é verificada
automaticamente em relação ao comportamento do sistema
https://cucumber.io/docs/bdd/ (nossa tradução)
Como transformar requisitos claros
em testes automatizados
TESTES SÃO
DOCUMENTAÇÃO!
ENTENDEU?
Como transformar requisitos claros
em testes automatizados
MAS COMO É
QUE EU USO
ESSE BDD COM
PHP?
Desenvolvimento orientado a
comportamento com PHP
https://docs.behat.org/en/latest/
Desenvolvimento orientado a
comportamento com PHP
https://docs.behat.org/en/latest/
Três comandos básicos do Behat:
vendor/bin/behat --init : cria a estrutura inicial de
BDD
vendor/bin/behat : executa os cenários (testes)
vendor/bin/behat –append-snippets : adiciona
snippets de código a uma classe de teste
Desenvolvimento orientado a
comportamento com PHP
https://github.com/PacktPublishing/PHP-Web-Development-with-Laminas/blob/main/
chapter06/whatstore/features/employeecrud.feature
Desenvolvimento orientado a
comportamento com PHP
https://github.com/PacktPublishing/PHP-Web-Development-with-Laminas/blob/main/
chapter06/whatstore/features/behat.yml
Desenvolvimento orientado a
comportamento com PHP
https://github.com/PacktPublishing/PHP-Web-Development-with-Laminas/blob/main/
chapter06/whatstore/features/bootstrap/EmployeeCRUDContext.php
Desenvolvimento orientado a
comportamento com PHP
Stack prática com Laminas + Behat
Chapter 6,
Models and
Object-
Relational
Mappers with
Behavior-Driven
Development
Stack prática com Laminas + Behat
Boas práticas que evitam bugs
Humm… não
sei se eu vou
usar Behat…
Boas práticas que evitam bugs
Boas práticas que evitam bugs
ENTÃO USE
TDD, PELO
MENOS!
Boas práticas que evitam bugs
Boas práticas que evitam bugs
Além dos testes, independente da abordagem
usada para criá-los, o código deve estar
conectado à demanda que motivou a criação do
código.
Isso quer dizer que todo commit deve ser
identificado com o id de uma issue. O código
não pode brotar do vazio. Ele deve ter uma razão
pra ser criado.
Boas práticas que evitam bugs
QUAL É O PROBLEMA?
QUAL É A SOLUÇÃO?
Boas práticas que evitam bugs
Mas eu coloco
mensagem no
commit!
Boas práticas que evitam bugs
AS MENSAGENS DE COMMIT
Boas práticas que evitam bugs
AS MENSAGENS DE COMMIT
Boas práticas que evitam bugs
O QUE É UM COMMIT DESCONECTADO DE UMA ISSUE?
Boas práticas que evitam bugs
É ALGO QUE VOCÊ NÃO SABE EXPLICAR
Boas práticas que evitam bugs
Isso deve estar
aqui por algum
motivo!
Boas práticas que evitam bugs
Código tem história.
Se ninguém contar a história do código, tenha
certeza de que contarão a história de como deu
trabalho corrigir o código.
Boas práticas que evitam bugs
Eu descobri uma
demonstração
maravilhosa, mas
a margem deste
papel é muito
pequena para
contê-la!
PIERRE DE FERMAT (1601-1665)
NÃO SEJA PROGRAMADOR FERMAT!
Boas práticas que evitam bugs
OBRIGADO
www.fgsl.eti.br

Dos requisitos ao código: como criar código rastreável em PHP