banner

Blog

Jun 11, 2023

Come ho contribuito come tester a un sistema di machine learning: opportunità, sfide e apprendimenti

Articoli sulla home page di InfoQ Come ho contribuito come tester a un sistema di machine learning: opportunità, sfide e apprendimenti

16 febbraio 2023 10 minuti di lettura

di

Shivani Gaba

recensito da

Ben Linders

Il test è considerato un aspetto vitale nel ciclo di vita dello sviluppo del software (SDLC), pertanto i tester sono coinvolti per garantire la qualità dell'applicazione. Ciò vale per i sistemi software convenzionali tra cui applicazioni web, applicazioni mobili, servizi web, ecc.

Ma vi siete mai chiesti quali siano i sistemi basati sul machine learning? In questi casi, i test passano in secondo piano. E anche se vengono eseguiti alcuni test, vengono eseguiti principalmente dagli stessi sviluppatori. Il ruolo del tester non è chiaramente rappresentato in tali aree.

I tester di solito hanno difficoltà a comprendere i sistemi basati su ML ed esplorare quali contributi potrebbero dare a tali progetti. Pertanto, in questo articolo condividerò il mio percorso volto a garantire la qualità dei sistemi basati su ML come tester. Metterò in evidenza le mie sfide, i miei apprendimenti e la mia storia di successo.

Come la maggior parte dei tester, ho preso parte al test di sistemi convenzionali che coinvolgono app Web, app native, backend, microservizi, ecc. In tali sistemi, viene preso l'input e la logica viene scritta da esseri umani (principalmente sviluppatori) per produrre un uscita deterministica. Come tester, il nostro obiettivo è verificare l'output previsto rispetto ai requisiti specificati/impliciti.

È interessante notare che alcuni anni fa ho avuto l'opportunità di testare un sistema di raccomandazioni basato su ML. È molto diverso dai sistemi convenzionali, quindi ero emozionato e ansioso allo stesso tempo.

Nei sistemi ML, come input vengono fornite numerose quantità di dati con modelli. Viene alimentato a un modello che apprende la logica per scoprire questi modelli e prevedere eventi futuri.

Per garantire la qualità, è importante testarelogica appresa . Quindi mi sono chiesto, come posso testare questo processo di apprendimento e illogica appresa dal modello? È possibile testare questa logica? Un modello è completamente una scatola nera?

Avendo molte di queste domande in mente, ero curioso di esplorare e imparare. Ero pronto per un giro sulle montagne russe :)

Nella mia eccitazione e curiosità di contribuire velocemente, ho fatto quello che la maggior parte di noi farebbe: cercare su Google le idee per testare! La maggior parte delle risorse a cui ho fatto riferimento puntavano a metriche di valutazione del modello come precisione, richiamo, matrice di confusione, ecc. Mi sembravano termini gergali. Onestamente non li ho capiti. Ma ho riportato le mie conoscenze incomplete ai miei sviluppatori e mi hanno detto che stavano già prendendo in considerazione questi parametri.

Mi sono reso conto che gli sviluppatori erano esperti del loro dominio. Per creare un impatto come tester, avevo bisogno di introdurre le prospettive che mancavano.

Noi, come tester, abbiamo la fortuna di possedere le grandi capacità di porre le domande giuste, comprendere il quadro generale, pensare fuori dagli schemi, applicare una conoscenza più approfondita del prodotto, sfidare lo status quo, ecc. Se queste competenze vengono applicate a testare i sistemi ML, molti problemi potrebbero essere prevenuti.

Mi sono anche reso conto che stavo cercando di testare qualcosa senza nemmeno capire come funziona il sistema e quali sono gli elementi costitutivi. Ma per testare meglio qualsiasi sistema, questo dovrebbe essere il primo passo.

Ho discusso questo approccio con i miei sviluppatori per collaborare per comprendere a fondo il sistema e applicare le mie capacità di test in ogni fase.

Gli sviluppatori, che inizialmente erano scettici riguardo alla presenza di un tester, si sono entusiasmati dopo aver ascoltato questo piano e non vedevano l'ora di vedere il valore che avrei potuto fornire.

Insieme al mio team, ho capito che nell'apprendimento automatico un enorme insieme di dati con determinati schemi viene raccolto, filtrato e inserito in un modello. Il modello identifica questi modelli e prevede la probabilità di eventi futuri.

CONDIVIDERE