Sviluppo guidato dal comportamento - Cetriolo

Cucumber è uno strumento che supporta le specifiche eseguibili, l'automazione dei test e la documentazione Living.

Lo sviluppo guidato dal comportamento si espande sulle specifiche per esempio. Formalizza inoltre le migliori pratiche di sviluppo basato sui test, in particolare, la prospettiva di lavorare dall'esterno all'interno. Il lavoro di sviluppo si basa su specifiche eseguibili.

Il key features delle specifiche eseguibili sono le seguenti:

  • Le specifiche eseguibili sono:

    • Derivato da esempi, che rappresentano i comportamenti del sistema.

    • Scritto con la collaborazione di tutte le parti coinvolte nello sviluppo, comprese le imprese e le parti interessate.

    • Basato sul criterio di accettazione.

  • I test di accettazione basati sulle specifiche eseguibili sono automatizzati.

  • Un linguaggio condiviso e onnipresente viene utilizzato per scrivere le specifiche eseguibili e i test automatizzati in modo tale che:

    • La terminologia specifica del dominio viene utilizzata durante lo sviluppo.

    • Tutti, compresi i clienti e gli stakeholder, parlano del sistema, dei suoi requisiti e della sua implementazione, allo stesso modo.

    • Gli stessi termini sono usati per discutere il sistema presente nei requisiti, documenti di progetto, codice, test, ecc.

    • Chiunque può leggere e comprendere un requisito e come generare più requisiti.

    • Le modifiche possono essere facilmente adattate.

    • La documentazione live viene mantenuta.

Cucumber aiuta con questo processo poiché collega le specifiche eseguibili con il codice effettivo del sistema e i test di accettazione automatizzati.

Il modo in cui lo fa è in realtà progettato per far lavorare insieme clienti e sviluppatori. Quando un test di accettazione ha esito positivo, significa che la specifica del comportamento del sistema che rappresenta è stata implementata correttamente.

Tipico test di accettazione del cetriolo

Considera il seguente esempio.

Feature − Sign up

  • La registrazione dovrebbe essere rapida e amichevole.

  • Scenario: iscrizione riuscita

    • New gli utenti dovrebbero ricevere un'e-mail di conferma ed essere accolti personalmente.

    • Given Ho scelto di iscrivermi.

    • When Mi iscrivo con dati validi.

    • Then Dovrei ricevere un'e-mail di conferma.

    • And Dovrei vedere un messaggio di saluto personalizzato.

Da questo esempio, possiamo vedere che:

  • Le prove di accettazione si riferiscono a Features.

  • Le caratteristiche sono spiegate da Scenarios.

  • Gli scenari sono costituiti da Steps.

La specifica è scritta in un linguaggio naturale in un file di testo semplice, ma è eseguibile.

Lavorazione del cetriolo

Cucumber è uno strumento da riga di comando che elabora i file di testo contenenti le funzionalità alla ricerca di scenari che possono essere eseguiti sul tuo sistema. Facci capire come funziona il cetriolo.

  • Si avvale di una serie di convenzioni su come vengono denominati i file e dove si trovano (le rispettive cartelle) per facilitare l'avvio.

  • Cucumber ti consente di conservare le specifiche, i test automatizzati e la documentazione nello stesso posto.

  • Ogni scenario è un elenco di passaggi che descrivono le pre-condizioni, le azioni e le post-condizioni dello scenario; se ogni passaggio viene eseguito senza alcun errore, lo scenario viene contrassegnato come superato.

  • Alla fine di una corsa, Cucumber riporterà quanti scenari sono passati.

  • Se qualcosa non funziona, fornisce informazioni su cosa non è riuscito in modo che lo sviluppatore possa progredire.

In Cetriolo, Features, Scenariose i passaggi sono scritti in una lingua chiamata Gherkin.

Gherkin è un inglese a testo semplice (o una delle oltre 60 altre lingue) con una struttura. Gherkin è facile da imparare e la sua struttura consente di scrivere esempi in modo conciso.

  • Cucumber esegue i file che contengono le specifiche eseguibili scritte in Gherkin.

  • Cucumber necessita delle definizioni dei passaggi per tradurre i passaggi del cetriolino in testo semplice in azioni che interagiranno con il sistema.

  • Quando Cucumber esegue un passaggio in uno scenario, cercherà una definizione del passaggio corrispondente da eseguire.

  • Una definizione di passaggio è una piccola parte di codice con un modello ad essa allegato.

  • Il modello viene utilizzato per collegare la definizione del passaggio a tutti i passaggi corrispondenti e il codice è ciò che Cucumber eseguirà quando vede un passaggio Gherkin.

  • Ogni passaggio è accompagnato da una definizione di passaggio.

  • La maggior parte dei passaggi raccoglierà input e quindi delegherà a un framework specifico per il dominio dell'applicazione per effettuare chiamate sul framework.

Cucumber supporta oltre una dozzina di diverse piattaforme software. Puoi scegliere l'implementazione di Cucumber che funziona per te. Ogni implementazione di Cucumber fornisce la stessa funzionalità complessiva e hanno anche la propria procedura di installazione e funzionalità specifiche della piattaforma.

Mappatura dei passaggi e definizioni dei passaggi

La chiave per Cucumber è la mappatura tra i passaggi e le definizioni dei passaggi.

Implementazioni di cetriolo

Di seguito sono riportate le implementazioni di Cucumber.

Ruby / JRuby
JRuby (utilizzando Cucumber-JVM)
Giava
Groovy
.NET (utilizzando SpecFlow)
JavaScript
JavaScript (utilizzando Cucumber-JVM e Rhino)
Clojure
Gosu
Lua
PHP (utilizzando Behat)
Jython
C ++
Tcl

Integrazione del framework

Di seguito sono riportate le implementazioni del Framework.

Ruby on Rails
Selenio
PicoContainer
Quadro di primavera
Watir