Abstrakt. Automatiska symboliska tekniker för att generera testingångar, t.ex. genom konkolisk körning, lider av vägexplosion: antalet vägar som symboliskt ska lösas för växer exponentiellt med antalet ingångar. I många applikationer kan dock indata delas in i "icke-interfererande" block så att symboliskt lösa för varje indatablock samtidigt som alla andra block fast vid konkreta värden kan hitta samma uppsättning av påståenden överträdelser som symboliskt lösa för hela indata. Detta kan kraftigt minska antalet vägar som ska lösas (i bästa fall, från exponentiellt många till linjärt många i antalet ingångar). Vi presenterar en algoritm som kombinerar testinmatningsgenerering genom konkolisk exekvering med dynamisk beräkning och underhåll av informationsflödet mellan ingångar. Vår algoritm konstruerar iterativt en partition av ingångarna, med början med de finaste (alla ingångar separat) och sammanfogning block om ett beroende upptäcks mellan variabler i distinkta indatablock under testgenerering. Istället för att utforska alla vägar i programmet, utforskar vår algoritm separat vägar för varje block (samtidigt som variabler i andra block till slumpmässiga värden). I slutändan utdata algoritmen en ingång partition och en uppsättning testingångar sådan att a) ingångar i olika block inte har några beroenden mellan dem, och b) uppsättningen av tester ger motsvarande täckning när det gäller att hitta påståenden överträdelser som fullständig konkolisk utförande. Vi har implementerat vår algoritm i Splat-testgenereringsverktyget. Vi visar att vår minskning är effektiv genom att generera tester för fyra exempel i paket bearbetning och operativsystem kod.
Den teknik som föreslås i REF, till exempel partitioner inmatningsutrymmet sådan att dynamisk körning kan köra separata vägar i programmet som beror uteslutande på en inmatning partition.
Reducing test inputs using information partitions
{'venue': 'In CAV’09, LNCS', 'journal': None, 'mag_field_of_study': ['Computer Science']}