Domanda

I un po 'familiare con RSpec [Rubino] e spec [Scala]. Yesturday Ho passato un tutor per cetriolo. Quello che mi è piaciuta di cetriolo è che in aggiunta a descrivere scenari (come si farebbe con i test spettrofotometria o in stile xUnit) è necessario implementare ulteriore livello di riferimento indiretto: tradurre passi scenario in espressioni rubino. Per quanto mi riguarda la creazione di inutili (?) Ulteriori livelli di indirezione si sente come "pesante" J2EE a senso unico, non come modo ruby ??"leggero". È la comprensibilità da "esperti di dominio" L'unico vantaggio di cetriolo? O c'è qualche non ovvie (? Tecniche) ai vantaggi per gli sviluppatori / tester così?

È stato utile?

Soluzione

BDD, da un punto di vista pratico, è altamente sinonimo di TDD. RSpec è un framework di test BDD, così come cetriolo.

che gli attori in grado di leggere e comprendere cetriolo specifiche di accettazione è certamente un vantaggio chiave, ma questo fatto da solo in realtà non ottiene al vero vantaggio di cetriolo. Le vostre caratteristiche e scenari dovrebbero crescere un po 'di specificità come il lavoro svolto per loro si muove attraverso il flusso del valore del ciclo di sviluppo del team.

Alcune squadre possono avere uno scoping analista fuori di lavoro all'inizio del ciclo. A volte questo analista scrive le specifiche di accettazione Gherkin, ma chi scrive la prima stesura, ci si aspetterebbe loro di essere abbastanza a grana grossa. Essi non possono coprire ogni percorso un-felice.

Per quanto gli sviluppatori prendono il lavoro, spesso scoprono casi limite e scenari mancanti. A questo punto si può toccare la base con l'analista, ed i risultati di tali conversazioni dovrebbero essere scritti nelle caratteristiche di cetriolo.

Nella mia esperienza i tester hanno coltivato un occhio ancora più critica, e quindi non è raro vederli aggiungere ancora più scenari e funzionalità. I tester possono anche difetti scoprire, che dovrebbero essere aggiunti ai cukes per proteggerci dalla regressione.

Il punto è che, oltre a fornire la documentazione eseguibile per il nostro codice, cetriolo fornisce anche un deposito per lo stato delle conversazioni del team vis a vis le caratteristiche in fase di sviluppo.

Non v'è certamente più in testa a tutto questo. Tuttavia, vale la pena considerare quanto overhead è già in corso della tua squadra, che cetriolo potrebbe servire a snellire. Trovo che Cetriolo aiuta a ridurre la quantità di thrash che accade nella comunicazione sulle caratteristiche sia all'interno che all'esterno del locale squadra.

Vorrei anche ricordare che il cetriolo è inteso come test di accettazione full-stack, e quindi deve essere inferiore a grana fine, rispetto ai vostri test di unità. E cetriolo non è un buon sostituto per i test unitari e di integrazione. Ho anche avrei mai consiglia di utilizzare il cetriolo per verificare gli aspetti estetici della UI del vostro app. Basta usarlo per convalidare le azioni che un utente può prendere quando si utilizza la vostra applicazione.

Altri suggerimenti

cetriolo è stato progettato per aiutare coinvolgere le parti interessate di affari in sviluppatori di raffinazione e tester comprensione del sistema collaborando per creare scenari che tutti possono capire.

L'atto di stakeholder aziendali coinvolgenti paga perché ognuno ottiene una migliore comprensione, si inizia a condividere la stessa lingua e che trasportano quella lingua nel codice (vedere Domain Driven "Ubiquitous Language" di Design), che può portare a stime migliori, apprezzamento di portata, conversazioni intorno opzioni per raggiungere lo stesso obiettivo, ecc ecc.

Ci sono certamente altri modi per raggiungere gli obiettivi. Per esempio, il nostro progetto C # si parla attraverso gli scenari, li scriviamo su un wiki quindi implementare utilizzando un dominio specifico po 'personalizzato lingua un po' come questo . La stessa cosa potrebbe essere fatto in Ruby.

BDD è il processo di apprendimento dei luoghi in cui abbiamo pensato che sapevamo cosa stavamo facendo, ma si è scoperto abbiamo sbagliato - la scoperta di ignoranza . Con Caratteristica iniezione e al livello delle unità esempi, questo accade a più livelli di granularità, tutta la strada fino alla visione progetto stesso. Esso tende a rimborsare per se stessa, ma non è necessario un quadro BDD fare BDD .

Le conversazioni in BDD sono i bit importanti, non lo strumento da utilizzare per catturarli (ho aiutato scrittura JBehave ed ancora credere questo è vero). Automatizzare test di regressione è importante anche per ridurre lo sforzo manuale che si erge come il codice di base cresce, e cetriolo, DSL e altri strumenti BDD darvi questo come un bel sottoprodotto che anche aiutano a rintracciare, e scacciare, la comprensione comune .

Modifica Devo dire che il riutilizzo dei passi è anche importante, ma non fa molta differenza se si utilizza un quadro BDD o un DSL per questo. Lo fa fare la differenza tra un DSL e appena proceduralmente mimando ogni interazione con l'utente.

Dipende da cosa si vuole raggiungere.

Cetriolo aggiunge in testa, può essere difficile per abituarsi, richiede tempo per padroneggiare.

Se volete che i vostri esperti di settore per essere in grado di leggere i test, si dovrebbe assolutamente fare un tentativo.

D'altra parte, se gli sviluppatori sono le uniche persone che leggono i test, probabilmente si può attenersi a rspec / unità-test / etc. e scrivere i test di integrazione di tali quadri. Tuttavia si potrebbe ottenere di più leggibile documentazione di alto livello utilizzando cetriolo. Si veda ad esempio rspec 2 nucleo descrizioni caratteristiche di cetriolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top