Recentemente stavo lavorando con l'approccio Comportamento guidato sviluppo in Rails utilizzando RSpec
e Capybara
. Tutto sembra a posto e persino nel mio lavoro è possibile accelerare l'intero bridge di pianificazione e sviluppo (definendo il comportamento dell'app rispetto alla documentazione delle specifiche abituali). Ad ogni modo, ecco il mio pensiero: BDD è così bello il motivo per cui non esiste un flusso di lavoro controllo di versione ? Ecco il mio pensiero:
Motivazioni
BDD di solito contiene due elementi di ciascuna funzione:
- descritto test
- applicazione
Ciò significa che ci sono due entità di ciascuna caratteristica, che dipendono dalla creazione di una funzionalità completa, ma separate fisicamente. Inoltre, la procedura standard (nota anche come cycle ) di costruzione di ogni funzione contiene:
- Scrivi test comportamentali
- Scrivi implementazione
Sebbene non vi sia alcuna implementazione di questo processo nel controllo della versione, interrogo su Internet perché non ci sono state risposte.
Proposizione
Supponiamo che ci siano tre tipi di rami:
- master (o qualche tipo di ramo dev)
- desiderio
- implementazione (i due verranno descritti in seguito)
desiderio
BDD copre il processo di pianificazione aggiungendo alcuni test di funzionalità particolari prima di scrivere il codice e lasciarli fallire. Perché basta separare questo processo in branca e dire che è auspicabile come dovrebbe funzionare il software. Ad esempio, esiste un ramo wish_A
con particolare (basato sul RSpec
) test funzionale . Questo ramo serve solo a sviluppare lo scenario di prova per la funzionalità in una sola volta.
Attuazione
È naturale che ogni desiderio diventi un codice funzionante alla fine. Quindi questo è il modo di implementare il comportamento: ramificando wish_A
e implementando un codice funzionante. Con l'ultima parola del ciclo di vita, il ramo di implementazione viene unito in dev
o master
o in qualsiasi ramo di versione / codename di opther.
Pubblicazioni
Problemi di dipendenza Ogni ramo wish
può dipendere da molti altri desideri. Supponi che:
-
A_wish
eB_wish
sono funzionalità di base e indipendenti -
AB_wish
richiedeA_wish
eB_wish
fuctionallity
Non riesco a capire quali problemi potrebbero verificarsi dopo la derivazione da uno di A
o B
e unendone un altro. L'implementazione di tali desideri dovrebbe essere simile - con alcuni conflitti o altri problemi di natura tecnica del codice.
Domanda
Non riesco a trovare perché questo non è implementato da un approccio di sviluppo software o perché non funzionerà con BDD . Ci sono motivi particolari per non fare un qualche tipo di approccio generico?