Testing software: Selezione delle tecniche di test

Testing software: Selezione delle tecniche di test

Testing software

Il metodo più naturale e tradizionale per verificare un prodotto è quello di provarlo in un certo numero di situazioni rappresentative, accertando che si comporti come previsto. In generale, è impossibile testare un software in tutte le sue possibili condizioni operative; pertanto risulta necessario trovare alcuni casi di test che forniscano con una sufficiente evidenza che il prodotto avrà un comportamento accettabile anche nelle situazioni in cui non è stato testato.

Il test è un’attività critica nell’ingegneria del software e dovrebbe essere eseguita nel modo più sistematico possibile, definendo in maniera chiara i risultati che si attendono e il modo in cui si vuole ottenerli. Nella pratica, invece, il test viene eseguito in maniera non sistematica e senza applicare criteri predeterminati.

Il test può essere usato per dimostrare la presenza di malfunzionamenti, non per dimostrare la loro assenza (tesi di Dijkstra, 1972).
Il test dovrebbe dunque aiutare a localizzare gli errori e non solo a rilevarne la presenza. Prima di rilasciare il software finale gli ingegneri devono testare sia i requisiti funzionali che quelli non funzionali, utilizzando eventualmente più di una tecnica di test.

Testing software: Selezione delle tecniche di test

A tal proposito richiamiamo alcune importanti definizioni:

  • caso di test: un caso di test è un insieme di input, condizioni di esecuzione ed un criterio passato/non passato;
  • specifica dei casi di test: la specifica dei casi di test è una specifica di un requisito che deve essere soddisfatto da uno o più casi di test;
  • test suite: un test suite è un insieme di casi di test

Problema della selezione delle tecniche di test

Uno dei problemi principali riguardanti il test del software è in che modo ottenere un opportuno insieme di casi di test utili al fine di testare un software.
Questo insieme dovrebbe assicurare la massima efficacia con il numero minore possibile di casi di test; d’altro canto ci sono numerose tecniche di test disponibili, molte non vengono utilizzate e solo alcune sono usate diffusamente.

Alcuni tester hanno ben poco presente le informazioni relative alle tecniche di test disponibili, la loro utilità, quanto esse siano adatte per il progetto sul quale stanno lavorando e come fondare la loro decisione su quali tecniche di test utilizzare.
Assai utile è fornire un catalogo contenente informazioni sufficienti per selezionare le migliori tecniche adatte per un dato progetto. Questo assicura che le decisioni che i tester prendono siano basate sulla conoscenza obiettiva delle tecniche piuttosto che su percezioni, supposizioni e ipotesi.

Altra questione riguarda la differenza che c’è tra queste tecniche. Possiamo trovare distinzioni nella letteratura per quanto riguarda gli aspetti meccanici e gli aspetti di contesto delle tecniche. Tuttavia resta una questione ancora aperta quale sia la tecnica di test più adatta in una determinata fase per un determinato progetto.
La verità è che, anche se esistono alcuni studi che mettono a confronto le tecniche, non ci sono studi che analizzano le condizioni di applicabilità di una tecnica o che, per ogni tecnica, consentano di valutare quali siano i parametri o le condizioni maggiormente rilevanti per la sua applicabilità.

Esistono due ragioni principali per cui gli sviluppatori e/o i tester non compiono buone scelte riguardanti la tecnica di test:

  • le informazioni disponibili sulle tecniche sono normalmente distribuite su diversi fonti di informazione (libri, articoli e anche persone). Ciò significa che gli sviluppatori non hanno idea generale di quante tecniche siano disponibili e di tutte le informazioni di interesse per ogni tecnica;
  • non hanno accesso alle informazioni relative a ciascuna tecnica di test a meno che non l’abbiano usata prima. Gli sviluppatori, inoltre, tendono a non condividere le conoscenze acquisite con gli altri; ciò significa perdere la possibilità di conoscere le esperienze degli altri.

Ci sono numerose tecniche che non sono universalmente applicabili, quindi ha senso parlare di una necessità per la selezione.
È generalmente accettato che il processo di selezione preveda un confronto tra le caratteristiche delle tecniche le cui condizioni di applicabilità sono più vicine alle condizioni del progetto sul quale si sta lavorando.

Pertanto, il problema di selezionare la tecnica di test migliore può essere suddiviso in due sotto-problemi:

  • la corretta identificazione delle caratteristiche rilevanti per la selezione;
  • la conoscenza riguardante l’insieme delle tecniche su cui si basa la selezione.

È ragionevole aspettarsi che le azioni prese da un tester, che intende effettuare una selezione sistematica ed equilibrata delle tecniche di prova, siano:

  1. elenco delle tecniche da cui la selezione deve essere effettuata;
  2. valutare le caratteristiche rilevanti per le tecniche elencate;
  3. valutare le caratteristiche del progetto in questione;
  4. confrontare i risultati dei punti 2 e 3 e decidere quale sia la tecnica e/o le tecniche più adatte per il progetto sul quale si sta lavorando.

Il problema che si cerca di superare è il seguente: il tester deve poter effettuare la selezione delle tecniche di test basandosi non solo sulla sua conoscenza diretta od indiretta.

Precedente Differenza tra Architettura a Microservizi e Architettura SOA Successivo Hacking: Che cos'è, come funziona e tipi di attacchi e intrusioni

Lascia un commento