Test di QA dei sistemi online
Introduzione
iTech Labs conduce da molti anni test di Quality Assurance di sistemi online per clienti in tutto il mondo. Le nostre verifiche di QA sono volte a migliorare i test interni di QA degli stessi software provider, i test di user acceptance del software, i test di test di user acceptance del cliente e/o i test di pre-certificazione.
Questi servizi di test del software vengono erogati dai nostri laboratori di test in Australia, Europa e Asia.
Ambito del Test di Quality Assurance/ Test di User Acceptance
Questo test di quality assurance viene eseguito in base alle specifiche o agli script di test forniti dal fornitore del software o dall’ utente finale. I nostri test di garanzia della qualità del software includono di norma: facilità d’ uso, affidabilità, prestazioni, interruzioni di servizio, emulazioni, simulazioni e altro.
Ambito del Test di Pre-certificazione
I test di pre-certificazione vengono condotti principalmente nell’ambito di specifici standard . Tuttavia, i nostri test del software includono anche: specifiche, interruzioni di servizio, emulazioni, simulazioni e altro. Lo scopo del nostro test di pre-certificazione è quello di garantire che il software sia pronto per la certificazione di conformità, riducendo così il tempo e i costi necessari per svolgere i successivi test di conformità del software.
Il nostro test del software includerà qualsiasi combinazione dei seguenti test a seconda di quanto necessario:
- Unit Testing
- Prove funzionali
- Prove di regressione
- Test di emulazione
- Prove di simulazione
- Test di integrazione
- Test delle prestazioni
- Valutazione della matematica/strategia
- Valutazione della sicurezza delle applicazioni
- Test di compatibilità del browser e del sistema operativo
- Test su dispositivi mobile (iOS & Android)
- Revisione del codice sorgente
- Revisione della documentazione
- Generazione di script di test
Per ulteriori informazioni sui test di Quality Assurance, visitate il nostro sito Web sulla QA: www.itechqalabs
Lo unit test ha l’obbiettivo di trovare qualsiasi problema esistente all’ inizio del ciclo di sviluppo. L’ obiettivo del test è quello di isolare le singole parti del programma e mostrare esse siano corrette. L‘individuazione anticipata di bug e problemi software assicura che non venga data loro la possibilità di progredire e di propagarsi più a fondo nell’applicazione. In questo modo si risparmiano i maggiori costi di test e sviluppo futuri, sia in termini di tempo che di denaro. Nello Unit Test, ogni modulo software, insieme ai dati di controllo, alle procedure d’ uso e alle procedure operative associate, viene testato per determinare se sia idoneo all’ uso. Utilizziamo anche sostituti come method stubs, mock objects e strumenti di test come ulteriore ausilio del test di un modulo isolato.
Lo unit test viene successivamente seguito da un test di regressione, dopo che sono stati corretti eventuali bug, e da un test di integrazione dopo il completamento con esito positivo dello unit test.
I test funzionali si basano su specifiche e/o requisiti regolamentati . I test funzionali verificano i risultati attesi a seconda di vari input, o semplicemente, assicurano che il software faccia quello per cui è stato progettato.
Il test funzionale prevede tipicamente quanto segue:
- Identificazione delle normative governative che il software deve rispettare
- Identificazione di tutte le funzioni che il software deve svolgere
- Creazione di dati in ingresso e determinazione dell’output
- Esecuzione dei test cases
- Confronto tra risultati effettivi e previsti
- Verifica se l’applicazione funziona come previsto
I test funzionali non implicano la verifica di una funzione o di un metodo: i nostri test funzionali si addentrano ancora più a fondo e testano una parte della funzionalità dell’intero sistema (approccio noto anche come test end-to-end).
Il test di integrazione viene eseguito al fine di evidenziare eventuali difetti nelle interfacce del vostro software, così come eventuali difetti presenti nelle interazioni tra i moduli nel sistema. Il test di integrazione viene condotto dopo il completamento dello unit test.
Durante il test di integrazione vengono azionati tutti i moduli e le loro interfacce. I casi di successo e di errore registrati vengono successivamente simulati tramite parametri e input appropriati. Viene testato l’uso simulato di aree dati condivise e la comunicazione inter-processo, e i singoli sottosistemi vengono azionati attraverso le loro interfacce di input.
Il test delle prestazioni determina le prestazioni del sistema in termini di reattività e stabilità, sotto un particolare carico di lavoro. Può anche servire a misurare, convalidare o verificare altri attributi del sistema, come la scalabilità, l’affidabilità e l’uso delle risorse. Vantiamo anni di esperienza nel test delle prestazioni, per garantire che il vostro software venga consegnato ai clienti con il più alto livello di qualità possibile.
Test di carico
La prova di carico è la forma più semplice di test delle prestazioni. Generalmente viene eseguita una prova di carico per capire il comportamento del sistema sotto un carico atteso. Questo carico potrebbe essere rappresentato dal numero atteso di utenti simultanei dell’applicazione, che effettuano un numero specifico di transazioni entro un periodo di tempo stabilito. Qualora vengano monitorati anche il database e il server applicativo, questo test può indicare dei colli di bottiglia nel software.
Prove di tress
Lo stress test viene normalmente utilizzato per individuare i limiti massimi di capacità del sistema. Questo test viene condotto al fine di determinare la robustezza del sistema sotto un carico estremo e aiuta a determinare se il sistema funzionerà in modo adeguato qualora il carico effettivo superi di gran lunga il carico massimo previsto.
I test di compatibilità del browser e del sistema operativo vengono eseguiti su PC e dispositivi mobili in base alle vostre esigenze, per garantire che il software funzioni correttamente e su tutti i dispositivi. La compatibilità con Browser e OS viene testata su tutte le combinazioni di OS e browser richieste. Durante questa fase vengono effettuate esclusivamente prove sul front-end.
Possediamo diversi anni di esperienza nei test su varie configurazioni di OS e browser su PC e dispositivi mobili, e abbiamo tutti gli strumenti necessari per testare la parte dei dispositivi con il massimo livello di precisione. I nostri test di compatibilità del Browser e del sistema operativo possono essere personalizzati per soddisfare le vostre specifiche esigenze.
Il test di sicurezza comprende tutte le misure adottate durante l’intero ciclo di vita del codice, per evitare lacune nella politica di sicurezza del software o qualsiasi vulnerabilità del sistema sottostante. Questi possono essere dovuti a difetti di progettazione, sviluppo, implementazione, aggiornamento o manutenzione dell’applicazione e sono incredibilmente facili da trascurare per occhi interni o inesperti.
Di seguito sono riportate le minacce alla sicurezza delle applicazioni più comuni:
Categoria | Minacce / Attacchi |
---|---|
Validazione degli input | Buffer overflow; cross-site scripting; SQL injection; canonicizzazione |
Manomissione software | Causato da un individuo che attacca e modifica il comportamento in esecuzione di un’applicazione al fine di eseguire azioni non autorizzate attraverso patch binarie, sostituzione del codice o estensione del codice. |
Autenticazione | Intercettazione; attacco Brute force; attacchi dizionario; riproduzione di cookie; furto di credenziali |
Autorizzazione | Elevazione dei privilegi; divulgazione di dati riservati; manomissione dei dati; atti di aggressione. |
Gestione della configurazione | Accesso non autorizzato alle interfacce di amministrazione; accesso non autorizzato agli archivi di configurazione; recupero di dati di configurazione in chiaro; mancanza di responsabilità individuale; account di processo e di servizio con eccessivi privilegi. |
Informazioni sensibili | Accesso al codice o ai dati sensibili in memoria; intercettazione di rete; manomissione di codici/dati |
Gestione della sessione | Dirottamento della sessione; riproduzione della sessione; man in the middle |
Crittografia | Scarsa generazione o gestione delle chiavi; crittografia debole o personalizzata |
Manipolazione dei parametri | Manipolazione della stringa di query; manipolazione del campo form; manipolazione dei cookie; manipolazione dell’intestazione HTTP |
Gestione Eccezioni | Divulgazione delle informazioni; denial of service |
Revisione e registrazione | L’ utente nega l’esecuzione di un’operazione; l’aggressore sfrutta un’applicazione senza lasciare traccia; l’aggressore copre le sue tracce |
Le tecniche di test di sicurezza verificano la presenza di vulnerabilità o lacune di sicurezza nelle applicazioni. Queste vulnerabilità lasciano le applicazioni aperte alla manomissione o sfruttamento.
Gli strumenti automatizzati associati al rilevamento della sicurezza sono: scanner di vulnerabilità, strumenti di penetraiton test e strumenti di analisi del codice.
Il test di regressione ha l’obbiettivo di scoprire qualsiasi bug software nei moduli di un’applicazione, dopo aver apportato modifiche quali miglioramenti, patch o modifiche di configurazione in un modulo correlato. Lo scopo del test di regressione è quello di garantire che le modifiche software non abbiano introdotto nuovi bug nei moduli correlati dell’applicazione.
I test di regressione vengono eseguiti per testare un’applicazione in modo efficiente, selezionando sistematicamente il numero minimo di test senza ripetere i test precedentemente completati. In questo modo si risparmia tempo e denaro.
I test di regressione possono essere eseguiti manualmente o utilizzando strumenti automatizzati.
In molte applicazioni critiche soggette a regolamentazione, il codice critico deve essere esaminato in modo indipendente e compilato sotto la supervisione di un laboratorio di test indipendente. La revisione del codice sorgente generalmente comporta l’uso di valori di input, logiche e parametri che determinano i valori di output, e la ricerca di Trojan e codice malevolo. La revisione del codice sorgente può essere adattata alle specifiche esigenze individuali. Forniamo analisi manuali e automatizzate del software.
I nostri consulenti hanno un’enorme esperienza nella revisione del codice critico e nella conduzione di compilazioni assiste da remoto.