Sicurezza Informatica e Testing Software: Concetti Fondamentali e Benefici

Classificato in Informatica

Scritto il in italiano con una dimensione di 7,74 KB

La Sicurezza Informatica

La sicurezza informatica è l'area dell'informatica che si concentra sulla protezione dell'infrastruttura informatica e di tutto ciò ad essa associato (comprese le informazioni). Per questo esistono una serie di standard, protocolli, metodi, regole, strumenti e leggi volti a minimizzare i rischi per le infrastrutture o le informazioni.

Che Cos'è la Crittografia?

La crittografia può essere intesa come un insieme di tecniche che risolvono i problemi della sicurezza delle informazioni: l'autenticità, l'integrità, la riservatezza e il non ripudio.

Differenza tra Crittografia Simmetrica e Asimmetrica

La principale differenza tra crittografia simmetrica e asimmetrica è che, nella crittografia simmetrica, la chiave per crittografare e decrittografare è la stessa, mentre in quella asimmetrica si usano una chiave per crittografare e una diversa per decifrare. Alla crittografia simmetrica appartengono i cifrari a blocchi, i cifrari a flusso e le funzioni hash.

La Percezione della Sicurezza da Parte dell'Utente

Gli utenti finali in genere non considerano la sicurezza quando utilizzano un sistema, spesso ignorandone gli aspetti. Allo stesso modo, questi problemi possono a volte essere considerati un fastidio, dal momento che la sicurezza è spesso il lato opposto di comfort e facilità d'uso sulla bilancia della progettazione di sistema. Ecco perché gli utenti possono spesso avere un'immagine negativa della sicurezza, percepita come un po' fastidiosa e che interrompe la loro capacità di svolgere un lavoro specifico. In un ambiente protetto, un utente si trova con compiti che possono risultare scomodi (per esempio, ricordare le password, cambiarle regolarmente, ecc.), e che possono limitare le operazioni che è possibile eseguire e le risorse il cui accesso è consentito.

Perché Testare il Software?

A causa del fatto che i processi di sviluppo software, nella maggior parte dei casi, tendono ad essere caotici, è necessario coinvolgere processi di garanzia della qualità, in modo che possano soddisfare adeguatamente le esigenze del cliente.

D'altra parte, il costo della correzione di un difetto che viene scoperto in fase avanzata di sviluppo del software, come la fase di implementazione, è molto alto, parlando in termini di bilancio del progetto, così come in termini di tempistiche. Per questo motivo, è fondamentale implementare il software testing fin dall'inizio dello sviluppo.

Il test consiste nel far funzionare il sistema software in condizioni controllate e nella valutazione dei risultati. Tali condizioni possono essere normali o anormali. Il test può intenzionalmente mettere sotto pressione il programma e causare errori nelle risposte per determinare se gli eventi si verificano quando dovrebbero, o quando gli eventi non si verificano pur dovendo accadere.

Vantaggi dei Test nello Sviluppo Software

I principali benefici dei test nello sviluppo software sono:

  • Riduzione della possibilità di introdurre nuovi difetti. Se, aggiungendo una funzionalità richiesta dal cliente, qualcosa che prima funzionava smette di farlo, si può dedurre che la nuova funzionalità contenga il difetto, evitando di dover modificare componenti precedentemente implementati.
  • Riduzione della possibilità di trovare difetti in funzionalità già implementate.
  • Il test è ben documentato. È preferibile consultare poche righe di Test Code, concise e di facile comprensione, piuttosto che esaminare il codice riga per riga per capire la logica di un componente software.
  • Riduzione del costo delle modifiche, evitando che i difetti vengano scoperti solo a fine sviluppo.
  • Consentono la ri-implementazione. Potrebbe essere necessario ri-implementare alcune funzionalità in un sistema a causa di difetti di sicurezza, prestazioni insufficienti o perché non soddisfano le aspettative del cliente. In tale situazione, i test per quella funzionalità permettono uno sviluppo più sicuro, poiché contengono i criteri di accettazione, garantendo che la nuova implementazione sia compatibile con le specifiche.
  • Limitazione delle funzionalità da implementare. Con i test, il programmatore sa esattamente cosa deve programmare e testare, limitandosi a quanto definito dai progettisti dei test.
  • Accelerazione dello sviluppo. Quando si aggiungono nuove funzionalità, quelle preesistenti potrebbero fallire. Avendo test pertinenti per le funzionalità precedenti, si può immediatamente escludere che i difetti siano in esse, permettendo di concentrarsi in sicurezza sulla nuova funzionalità.

Chi Dovrebbe Eseguire i Test?

I test devono essere progettati ed eseguiti da personale diverso da chi ha eseguito l'analisi delle regole di business, da chi ha realizzato i design e, soprattutto, da chi ha effettuato il lavoro di programmazione. Nello sviluppo software, i membri del progetto ricoprono diversi ruoli, tra cui i seguenti:

  • Analisti, progettisti e sviluppatori: Questo gruppo di persone ha un punto di vista creativo, poiché sono coloro che, partendo da una necessità del cliente, progettano, analizzano e codificano una soluzione software. A causa di questa prospettiva, spesso non riescono a individuare i difetti nel software che hanno creato.
  • Tester: Si concentrano sulla comprensione delle regole di business, dei requisiti, dei casi d'uso e di tutto ciò che aiuta a comprendere il contesto aziendale. Questo gruppo di persone ha, per così dire, il punto di vista meno "distruttivo", perché sa che una parte specifica del programma deve svolgere determinate funzioni e si impegna a trovare difetti nella funzionalità implementata da un'altra persona.

Cos'è il Test del Software?

È l'insieme dei processi che consentono di verificare e comunicare la qualità di un prodotto software. Viene utilizzato per identificare eventuali guasti di esecuzione, problemi di qualità o di usabilità di un programma.

Quali Sono le Finalità del Test?

  1. Il test è il processo di esecuzione di un programma con l'intento di scoprire un errore.
  2. Un buon caso di test è quello che ha un'alta probabilità di scoprire un errore non trovato finora.
  3. Un test ha successo se rileva un errore finora non individuato. Non solo il test, ma anche la documentazione del codice e il supporto sono importanti.

Strumenti per Testare il Software

Gli strumenti di test software consentono ai team di sviluppo di studiare gli errori nel software, verificare la funzionalità dei sistemi e garantire che il software che sviluppiamo sia sicuro ed affidabile. Esistono strumenti specifici per ciascuna delle fasi di un progetto di sviluppo software. Alcuni fornitori di tali strumenti offrono una suite integrata che supporta sia il test che lo sviluppo di software per l'intero progetto, dall'avvio all'esecuzione live del sistema. Tuttavia, ci sono altri fornitori che si concentrano su una parte del ciclo di sviluppo dell'applicazione.

Voci correlate: