Programmazione
Buona parte dei siti presenti sul web offrono oggi caratteristiche di interattività e dispongono di contenuti generati in maniera dinamica. In sostanza, le pagine sono in grado di rispondere alle azioni degli utenti. Forse non tutte, certo, ma di sicuro è una necessità (tecnica e di gestione) per i siti più frequentati come i motori di ricerca, i social network e i portali di informazione.
Anche i progetti più semplici necessitano di queste caratteristiche: attività ormai consuete e quotidiane come la consultazione di un catalogo, la ricerca di un argomento o la compilazione di un modulo online sono di fatto azioni pensate e gestiste in ogni possibile variante.
Per questo tipo di mansione è necessario un Web Developer, figura in grado di sviluppare il "motore" del sito e tutti gli strumenti utili al cliente per aggiornare i contenuti in piena autonomia e con la minima competenza tecnica. A questo professionista spettano quindi una serie di controlli e verifiche legate alle funzionalità, alla sicurezza, alla qualità dei dati salvati nonché alla performance dell'eco-sistema sito.
Versioni
Occorre prima di tutto verificare che il codice in pubblicazione corrisponda all'ultima versione stabile e confermata dal cliente durante i test. Spesso, infatti, esistono più versioni conseguenti alle modifiche in corso d'opera.
È buona norma tener traccia dello storico evolutivo, magari grazie ad un sistema di versioning; invece risulta davvero fondamentale mantenere sempre sincronizzate le due versioni: quella di sviluppo e quella di produzione. Questo ad eccezione dei file di configurazione i quali dovranno essere aggiornati con le costanti riferite all'ambiente di produzione online (URL, caselle mail, gateway di pagamento, etc).
Infine, verificare la presenza di un minimo di documentazione e commenti nel codice perché nel tempo aiuteranno i programmatori che dovranno metterci mano (ed è sempre indice di attenzione e professionalità).
Debug
La ricerca della perfezione è una strada infinita, ma compiere qualche passo in questa direzione è il minimo che si possa fare per produrre un risultato di buon livello. L'attività di debugging diventa pertanto indispensabile per ogni sito dinamico e interattivo, ma è bene verificare che la versione in produzione non contenga funzioni di debug ancora attive.
Sempre in quest'ottica è possibile controllare di aver eliminato eventuali identificativi di sessione dagli URL e disattivato la visualizzazione completa degli errori. A tal proposito, anzi, occorre esser certi di aver gestito ogni errore interno nel tentativo di mostrarlo all'utente in una forma discorsiva, in lingua e comprensibile ai più.
Con l'obiettivo di rilasciare una versione il più possibile pulita bisogna verificare l'eliminazione degli utenti e degli account di prova, ma anche dei contenuti fittizi inseriti durante la fase di sviluppo ed il conseguente test. Dal punto di vista tecnico invece può essere utile eliminare dalle pagine tutto il codice JavaScript non più utilizzato.
Sicurezza
Quando un sito prevede funzionalità interattive, all'interno delle quali è previsto un passaggio di informazioni, possono crearsi problemi di sicurezza. Fortunatamente la maggior parte di questi sono evitabili prestando la massima attenzione alla gestione dei dati.
Per evitare bug XSS è buona norma effettuare l'encoding di tutti gli input modificabili dall'utente (form, URL, etc) e poi mostrati nella pagina. In parallelo, per scongiurare un altro grave bug di sicurezza chiamato SQL Injection, è necessario gestire lato server tutti gli input ricevuti dall'utente, in particolare con l'utilizzo di un DataBase. Nel caso in cui fosse presente un'area riservata occorre verificare l'accesso ai contenuti in essa protetti, il controllo sulle credenziali utente ed eventuali permessi da attribuire in base al livello.
In termini di gestione, infine, sarebbe prudente gestire tutti gli errori bloccanti in maniera da non fornire alcun tipo di informazione sulla struttura degli script e dei DataBase che compongono il sito.
Form
Uno dei metodi più diffusi per l'interazione e lo scambio di dati sul web è il form. Quasi ogni sito dispone almeno del modulo di contatto: un elenco di campi da riempire con le informazioni che l'utente desidera fornire al proprietario del sito.
Prima della pubblicazione bisogna verificare ogni form presente sulle pagine: il controllo sui campi obbligatori, il corretto funzionamento dell'invio, la validità del captcha come sistema anti-spam ed il formato dei dati. A tal proposito è necessario verificare che i dati ricevuti dal form vengano controllati sia lato client (per una pronta risposta all'utente) sia lato server (per contro verifica e per l'utenza che ha disattivato JavaScript).
Nel caso in cui il form richieda il consenso al trattamento dei dati bisogna verificare la presenza dell'informativa e della spunta di conferma, obbligatoria, il cui valore predefinito dovrà essere deselezionato.
Invece, quando il form riguarda l'iscrizione ad un servizio, i controlli da completare sono più articolati. Bisogna infatti verificare il funzionamento della procedura di registrazione simulando l'intero iter. Viceversa occorre completare anche la procedura di cancellazione e di fatto analizzare tutte le procedure di opt-in e di opt-out.
Un altro tipico utilizzo del form riguarda la ricerca di contenuti. In questo caso occorre verificare, oltre al funzionamento, anche la rilevanza dei risultati e, dove possibile, la presenza di un permalink per ogni singola lista di risultati.
Infine, nel caso di un form dedicato alle credenziali per l'accesso al servizio bisogna verificare il corretto funzionamento del login, del logout e l'effettiva protezione dei contenuti.
Performance
Nell'ipotesi di un sito che prevede di ottenere un volume di traffico importante è prassi effettuare una simulazione di carico sul server grazie all'ausilio di appositi software. In parallelo è possibile verificare la necessità di un sistema di caching dei contenuti ed eventualmente realizzarlo per ridurre il carico sulla macchina. Infine, dove possibile, verificare l'utilizzo delle librerie JavaScript in versione compressa.
Punti da controllare
Ecco i punti da verificare tramite la checklist sugli aspetti visti in questa lezione:
OK | KO | ND | |
Versioni | |||
Il codice online corrisponde all’ultima versione stabile e confermata con il cliente | |||
La versione di sviluppo e quella di produzione sono correttamente sincronizzate | |||
I file di configurazione online si riferiscono all’ambiente di produzione (es. URL) | |||
Il codice è commentato e versionato | |||
Debug | |||
La versione in produzione non ha funzioni di debug attive | |||
Sono stati eliminati tutti gli identificativi di sessione dagli URL | |||
Le pagine non contengono codice JavaScript inutilizzato | |||
Eliminati utenti e account di prova | |||
Eliminati contenuti di prova | |||
Disabilitata la visualizzazione degli errori completi | |||
Verificare che gli errori vengano gestiti e mostrati in forma comprensibile | |||
Sicurezza | |||
Sono stati verificati tutti gli input per evitare bug XSS | |||
Sono stati verificati tutti gli input per evitare bug SQL injection | |||
Gli input mostrati sulla pagina sono stati encodati | |||
I dati passati via form o querystring vengono gestiti e verificati | |||
Gli errori bloccanti vengono gestiti | |||
Verificata la protezione delle aree dietro login o password | |||
Form | |||
Verificato il funzionamento di ogni form: invio, campi obbligatori e formato dei dati | |||
Verificata la funzione per il controllo dei dati lato client | |||
Verificata la funzione per il controllo dei dati lato server | |||
Verificata la presenza del checkbox per la privacy (obbligatorio) | |||
Verificato che il checkbox per la privacy non sia predefinito come "checked" | |||
Verificato il funzionamento delle procedure di iscrizione | |||
Verificato il funzionamento del login e del logout | |||
Verificato il funzionamento delle procedure di cancellazione | |||
Verificato il funzionamento della ricerca e la rilevanza dei risultati | |||
Verificato il funzionamento dei permalink per le ricerche | |||
Verificato il funzionamento del sistema anti-spam (es. captcha) | |||
Verificato il funzionamento delle procedure opt-in opt-out | |||
Ottimizzazione | |||
Effettuata una simulazione di carico sul sito/server | |||
Verificata la necessità di un sistema di caching | |||
Comprimere i file JavaScript |