automated-testing-with-ruby: test automatici

Lezione su Ruby 3: i test automatici

Test automatici: cosa sono

I test automatici sono una parte speciale dello sviluppo che serve per controllare l’esecuzione del programma stesso ( o meglio di parti di esso ) e confrontarla con i risultati attesi. L’automazione permette quindi di capire se un applicazione/programma gira nel modo corretto. Aiuta inoltre lo sviluppatore in quei test particolarmente complessi da ripetere, svolgendo in automatico le operazioni richieste.

Test automatici rails

Perché usare i test automatici

Scrivere dei test automatici porta a tre vantaggi fondamentali:

  1. Evitare le regressioni: impedire che qualcosa di già testato e funzionante smetta di lavorare correttamente.
  2. Refactoring del codice: riscrivere le funzionalità di un’applicazione è importante, evitare che questo porti malfunzionamenti è fondamentale.
  3. Determinazione del design delle applicazioni: i test si sostituiscono al client aiutandoci a capire meglio come strutturare il design e le interfacce delle nostre web app.

Quando testare

Visto il perché usare i test automatici non resta che decidere quando usarli. Non è però così semplice!

Dipende dalla dimestichezza che si ha con la trascrizione dei test. Per molti sviluppatori più si diventa bravi nella trascrizione dei test, più si è inclini a trascriverli. Molto inoltre dipende anche da quanto il test risulti difficile da realizzare e da quanto quella specifica funzione sia destinata a durare nel tempo.

Tendenzialmente, se il test non è troppo oneroso si dovrebbe trascriverlo come prima cosa! Poi scrivere sempre i test sulla sicurezza ed infine trascrivere i test che permettano di riprodurre gli errori/bug che si presentano.
In una fase successiva si può anche pensare alla trascrizione di test automatici per il refactoring del codice.

Primo test su Ruby on Rails

Iniziare a scrivere i test può essere impegnativo soprattutto perché richiedere una conoscenza approfondita sia di Rails che di Ruby. Per fortuna però Rails ci aiuta avendo generato, a partire dai nostri controller, un test file per permetterci di cominciare:

require 'test_helper'

class StaticPagesControllerTest < ActionController::TestCase

test "should get home" do
get :home
assert_response :success
end

test "should get help" do
get :help
assert_response :success
end
end

Ci sono quindi tanti test quanti controller abbiamo creato. Ogni test prende un’azione e la verifica tramite un’asserzione. La risposta :success è una rappresentazione astratta del sottostante HTTP status code (in questo caso, 200 OK)

Per iniziare il nostro ciclo di test dobbiamo eseguirli per verificare che passino correntemente. Possiamo fare questo con il servizio rake:

$ bundle exec rake test

Ci vorrà un po’ di tempo prima che i test si avviino perché:

  • lo Spring server dovrà inizializzarsi e precaricare le parti dell’ambiente di Rails;
  • bisogna attendere il tempo necessario all’avvio di Ruby.

Il risultato sarà: 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips

Come da richiesta, la nostra sequenza di test viene superata.

Qualche informazione in più

Per avere qualche dettaglio in più sul funzionamento dei test in Ruby rimando alle seguenti guide:

https://learnrubythehardway.org/book/ex47.html

Rails tutotial capitolo 3

https://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing

Qui invece alcuni software per la test automation:

http://www.testingtools.com/test-automation/

http://www.seleniumhq.org/

https://github.com/seleniumhq/selenium-google-code-issue-archive

 

 

 

0 comments on “Lezione su Ruby 3: i test automaticiAdd yours →

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *