TestMiner: Software Testing Analysis for GitHub Repositories
Dit artikel introduceert TestMiner, een tool die ontworpen is om softwaretestpraktijken over diverse GitHub-repositories te analyseren en te visualiseren door metrieken te bieden over teststatistieken, locatie, evolutie en afhankelijkheden, wat positief werd geëvalueerd door bachelorstudenten vanwege de bekwaamheid om kritische exploratie van real-world teststrategieën te faciliteren.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je zojuist een enorme, chaotische bibliotheek van code genaamd GitHub bent binnengestapt. Het is gevuld met miljoenen boeken (projecten), maar hier komt de twist: sommige boeken verbergen hun "veiligheidscontroles" (tests) in een geheime achterkamer, terwijl anderen ze direct op de kaft plakken. Sommige bibliotheken gebruiken een specifieke taal om deze controles te schrijven, terwijl anderen een volkomen andere taal gebruiken. Als je zou willen begrijpen hoe een specifiek boek zichzelf behoedt voor instorten, zou je uren handmatig door elke plank moeten zoeken, kleine briefjes moeten lezen en patronen moeten raden. Het is alsof je probeert een specifieke naald in een hooiberg te vinden terwijl je een blinddoek en zware laarzen draagt.
Maak kennis met TestMiner, een nieuwe tool die fungeert als een magische, hoogtechnologische zaklamp voor deze codebibliotheken. In plaats van dat jij door het donker moet zwoegen, zoomt TestMiner in, scant het hele project en tekent direct een kaart voor je.
Wat laat deze kaart zien?
Beschouw het als een "gezondheidsdashboard" voor het veiligheidsnet van een softwareproject.
- De "Waar"-kaart: Het laat je precies zien waar de tests zich verschuilen. Zitten ze in een speciale "test"-map, of zitten ze gemengd met de hoofdcode? Het is als een schatkaart die elk "X markeert de plek" benadrukt, of de schat nu begraven ligt in een diepe grot of op de voordeur staat.
- De "Tijdreis"-grafiek: Het laat je zien hoe het veiligheidsnet in de loop van de tijd is gegroeid. Begon het project met slechts één klein veiligheidsnet en werd het langzaam een massief web? Of voegde het plotseling honderden netten tegelijk toe? De tool liet bijvoorbeeld zien dat het fastapi-project van bijna nul testbestanden in de eerste versie naar bijna 600 in de nieuwste versie is gegaan.
- De "Ingrediënten"-lijst: Het somt de speciale tools en helpers op die het project gebruikt om zijn tests uit te voeren, door deze informatie te halen uit een "Software Bill of Materials" (zoals een bonnetje voor de ingrediënten van het project). Het kan detecteren of een project specifieke tools gebruikt voor Rust, Python of Java.
Werkt het ook echt?
De auteurs hebben dit niet alleen gebouwd en gehoopt op het beste; ze hebben het aan de test onderworpen in een echte klasomgeving. Ze gaven deze tool aan 50 bachelorstudenten in een cursus softwaretesting en vroegen hen om echte projecten te verkennen. De studenten klikten niet alleen op knoppen; ze gebruikten de tool om diepe inzichten te verkrijgen die ze handmatig uren zouden hebben gekost.
Eén student gebruikte TestMiner om te zien dat een populair project genaamd Streamlit de meeste van zijn tests in specifieke mappen hield omdat het zowel een Python-gedeelte als een zware webinterface heeft. Een andere student merkte op dat een project genaamd Newtonsoft.Json zijn testbestanden van slechts 7 naar 200 liet groeien over een bepaalde tijd, wat een gestage, lineaire klim liet zien in plaats van een plotselinge sprong. Een andere groep ontdekte dat een project genaamd thefuck zich zwaar concentreerde op het testen van Git-commando's, omdat die commando's berucht verwarrend zijn voor gebruikers.
De studenten merkten dat TestMiner hen hielp zaken te ontdekken zoals "mocking" (waarbij de code doet alsof hij met het internet communiceert zonder het echt te doen om tijd te besparen), "fixtures" (herbruikbare opstellingen voor tests) en zelfs hoe sommige projecten hun tests gebruiken als levende documentatie. De feedback was positief: de tool maakte het veel gemakkelijker om te begrijpen hoe real-world software wordt getest zonder dat er complexe software geïnstalleerd of een laboratorium opgezet hoeft te worden.
Wat is deze tool NIET?
Het is belangrijk om te weten wat TestMiner niet doet. Het is geen toverstaf die slechte code repareert of elke enkele bug vindt. Je hoeft niets op je computer te installeren; het draait direct in je webbrowser. Het vervangt ook niet de noodzaak voor ontwikkelaars om daadwerkelijk tests te schrijven; het helpt je alleen om te zien wat er al is.
De auteurs merken er zorgvuldig bij op dat de tool vertrouwt op de publieke gegevens van GitHub, die een snelheidslimiet hebben (ongeveer 60 verzoeken per uur voor gratis gebruikers). Als je deze limiet bereikt, kunnen sommige functies pauzeren, hoewel je dit kunt versnellen door een speciale "token" toe te voegen om de limiet te verhogen naar 5.000 verzoeken per uur. Ook, omdat het gegevens van het web leest, kunnen de links soms niet perfect overeenkomen met de code als een project zeer snel verandert.
De essentie
TestMiner suggereert dat door een rommelige, handmatige zoektocht te veranderen in een visueel, instant overzicht, we studenten en ontwikkelaars kunnen helpen de "veiligheidscultuur" van softwareprojecten veel sneller te begrijpen. Het is geen opgelost probleem voor elk testmysterie, maar het is een krachtige nieuwe lens die de onzichtbare wereld van softwaretesting zichtbaar, begrijpelijk en zelfs een beetje leuk maakt.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.