Soluzioni Exprivia

Aerospace & Defence

Software testing validation and verification
Rilevare e correggere i difetti del software, aumentare il controllo sul suo ciclo di vita, attestarne la validità.
Contatta l'esperto
Uno dei punti cruciali nel rilascio di un sistema o un prodotto consiste nella verifica continua delle finalità che lo hanno generato e delle proprietà tecniche che ne costutiscono la condizione essenziale.

La verifica e validazione di un software non sono dunque processi meramente tecnici, ma rispondono ad una filosofia operativa concentrata in due esigenze chiave: a) verificare se si è realizzato il software che il cliente si aspetta e che ha inizialmente descritto;
b) convalidare la corretta costruzione dal punto di vista tecnico e rispetto alle condizioni imposte.

Nell'area Difesa e Aerospazio Exprivia possiede importanti competenze in merito al processo di Verifica e Validazione (in breve software testing) dove si avvale anche della collaborazione di dipartimenti informatici universitari.

Obiettivi
Gli obiettivi principali della procedura di software testing consistono nel garantire l’indipendenza del team di test rispetto a quelle dei team di sviluppo, rilevare e gestire eventuali difetti del SW, fornire dati per valutarne i progressi di sviluppo in autonomia e insieme al cliente durante il ciclo di vita o parte di esso, fornire una certificazione di prodotti e/o sistemi software comprensiva di una completa tracciabilità dei difetti evidenziati durante l’attività di testing.

La validazione del software prevede due passaggi: valutazione degli artefatti e gestione del cambiamento.

  • Valutazione degli artefatti: assessment continuo e iterativo degli artefatti (documentali e software) risultanti dall’implementazione dei requisiti di sistema e/o software rispetto agli User Requirements (se presenti) tramite tecniche di analisi e ispezione interna e/o attraverso confronti (review) concordati con il cliente o gli utenti finali;
  • Gestione del cambiamento: in caso di cambiamento di user requirements, system requirements, software requirements, in qualunque fase del ciclo di vita del software, attivare un’indagine sugli impatti che tali cambiamenti hanno sull’intero sistema.

Vantaggi
Nonostante la poco diffusa cultura del software testing nelle imprese, i processi di verifica e validazione offrono vantaggi rilevanti a fronte di costi accessibili:

  • rilevare difetti del software già nella fase iniziale dello sviluppo, ottenendo vantaggi in termini di stabilità del software e un sostanziale risparmio in termini di costi per la risoluzione dei problemi (software defects early detection);
  • aumentare il controllo sull’intero ciclo di vita del software, attraverso un processo che consenta di gestire in modo organizzato i difetti del software e garantisca la tracciabilità della correlazione tra difetti, i requisiti e i test che li hanno evidenziati;
  • innestare un ciclo positivo di feedback tra team di test e designer e sviluppatori, per correggere i difetti evidenziati in tempi ridotti;
  • produrre documenti e certificati che attestino la correttezza e la validità del software rispetto a criteri concordati insieme al cliente, oppure rispetto a criteri e livelli richiesti da organizzazioni e/o standard internazionali.
Dettaglio delle attività

Processo di Accettazione

Definizione standard documentale. Si sceglie lo standard documentale da utilizzare durante l’intero ciclo di vita: si tratta di un set di template documentali su cui fondare la descrizione dell’intero sistema e delle attività ad esso collegate (piani).

  • MIL-STD-498, standard documentale completo di origine militare che copre tutti gli aspetti legati al ciclo di vita del software;
  • standard già presente presso il cliente, che è possibile adottare così com’è, oppure da acquisire e modificare in base alle nuove esigenze;
  • standard ad hoc, da definire ex-novo assieme al cliente.

Definizione workflow
In questa attività, si definisce la procedura di accettazione degli item documentali e degli item software e di sistema, della loro archiviazione, insieme al sistema di versioning da adottare e ai livelli di firma previsti per gli item. In questa fase viene anche definito il workflow per la gestione formale dei Problem Report.

Individuazione quality assurance toolchain
Scelta dei tool software che supportano le attività di quality assurance, come l’accettazione degli item, la gestione dei problem report, dei software change proposal, etc. (es: SAP, Polarion, Redmine).

Supporto alla definizione delle specifiche

Acquisizione normative
Durante questa attività, si raccolgono informazioni sulle normative di legge coinvolte (se presenti), sugli standard legati al settore/dominio di appartenenza del cliente, sugli standard tecnici internazionali coinvolti (ISO, IEEE, …) rilevanti ai fini della scrittura delle specifiche.

Formalizzazione
Durante questa attività, si definiscono, in accordo col cliente, il formalismo adottato per le specifiche, i livelli di dettaglio delle specifiche stesse e i livelli del sistema software coinvolti:

  • il formalismo riguarda il linguaggio o la tecnica selezionata per scrivere le specifiche: si possono utilizzare informal specifications (paragrafi scritti in linguaggio naturale), oppure linguaggi semi formali come UML2 (Unified Modeling Language) o derivati, oppure formal specification languages (notazioni matematizzate formali, come Z-notation);
  • i livelli di dettaglio disponibili comprendono user needs, features, software requirements;
  • i livelli del sistema previsti: sistema, sottosistema e modulo software. E’ possibile combinare formalismi, livelli di dettaglio e livelli di sistema, in base alle esigenze e agli obiettivi.

Contenuto
Durante l’attività di raccolta delle specifiche, si fornisce supporto diretto al cliente nella definizione pratica dei requisiti, allo scopo di migliorarne la chiarezza espositiva e l’esaustività.

Individuazione del test Environment

Definizione
In base al dominio del sistema target, si definiscono le esigenze per il test environment sia dal punto di vista dell’hardware coinvolto che del software necessario alle varie attività di test definite, descrivendo quindi l’ambiente attraverso delle vere e proprie specifiche.

Toolchain e tecnologie per il testing
Si individuano le tecnologie necessarie alla realizzazione del test Environment e i tool necessari al supporto delle attività di testing. E’ possibile effettuare un sondaggio sulle tecnologie e tool in uso presso il cliente a scopo di riuso degli stessi.

Sviluppi originali
Nel caso in cui il cliente lo richieda, o se ne individui la necessità, è possibile realizzare una piattaforma per il testing originale, che si integri con le tecnologie e i tool individuati. Essa può essere commissionata dal cliente (e quindi ceduta allo stesso); è anche possibile l’adattamento di prodotti interni alla nostra azienda, qualora ce ne fossero.

Pianificazione Attività di test
Fase in cui vengono schedulate le sessioni di test, stimando effort in termini di risorse e tempi. La descrizione di tali attività confluisce all’interno di piani descritti utilizzando gli standard documentali individuati.

Pre-Integration testing/Integration/System testing

Definizione dei test case
In questa fase i test designer progettano e realizzano i test case a copertura dei requisiti. La definizione prevede un raffinamento continuo (iterativo) dei test, anche tramite esecuzione in locale.

Run delle sessioni di test
Durante questa attività, si eseguono le sessioni di test pianificate nel test environment definito. Esse possono essere sia semi-formali come i dry run, sia formali come le qualifiche di modulo, se previste. Tali attività possono essere ripetute se lo scheduling lo prevede, oppure se si è andati incontro a failure totale o parziale (se ne può ripetere un sottoinsieme selezionato).

Gestione dei problem report
Quando, durante le attività di definizione dei test case e di run delle sessioni di test, emergono problemi sul software sotto test, tali problemi devono dare vita a PR (Problem Report), identificati univocamente. I PR vengono gestiti tramite i tool e il workflow definiti nelle fasi preliminari.

Tecnologie Utilizzate

Le tecnologie utilizzate in piattaforme di verifica software per il testing automatico comprendono tecnologie per la gestione del workflow degli item applicativi, documentali e di test, linguaggi per lo sviluppo della piattaforma di test e delle test procedure, framework a supporto della piattaforma di test (integrazione, messaging), tool per il recording e il playback di azioni su GUI Java (Swing, JavaFX), QT, Web, Set di librerie a supporto di attività di trasformazione Model2Text (da Modello UML2 a Codice), Vmware virtualization technologies – allo scopo di sfruttare al meglio le risorse hardware a disposizione, abilitare il deploy rapido, la fault tolerance ed altro.