Qual è la differenza tra QA e test del software?

Dipende esattamente da cosa intendi per entrambi.

Molto generalmente parlando, il "test QA" è principalmente il test della "scatola nera", interagendo con esso come farebbe un utente (sebbene includa utenti amministrativi e simili) dall'esterno. Questo include sia l'esecuzione di piani di test manualmente, sia l'esecuzione di script di test automatizzati, utilizzando strumenti che simulano l'interazione dell'utente. I test QA possono includere l'impostazione di condizioni insolite come "cosa succede se l'utente fa così e così ma il server di accodamento è giù" o "...ma l'origine dati è nel mezzo dell'aggiornamento" e così via. Di solito è anche limitato all'osservazione di ciò che un utente potrebbe osservare direttamente, al contrario del contenuto del database, degli elementi nascosti in una pagina web, e così via. Potrebbe includere un certo livello di benchmarking e test di carico, come "quanto tempo ci vuole per eseguire una ricerca se ci sono un miliardo di record e ne vogliamo cinque" e "quante richieste al secondo possiamo sparare a questa cosa prima che cada, o almeno che non ci dia una risposta entro mezzo secondo".

Al contrario, il "test del software" è solitamente inteso ad includere il "test QA" come descritto sopra, più i test di unità, i test di integrazione, le cose che un utente non osserverebbe normalmente (come gli elementi nascosti di una pagina web), il benchmarking di funzioni specifiche, e altre cose simili che richiedono la conoscenza del funzionamento interno. In breve, ogni modo in cui il software può essere testato.