Programinvarianter kan hjälpa programutvecklare identifiera programegenskaper som måste bevaras när programvaran utvecklas, men att formulera korrekta invarianter kan vara utmanande. I detta arbete introducerar vi iDiscovery, en teknik som utnyttjar symboliskt utförande för att förbättra kvaliteten på dynamiskt upptäckta invarianter som beräknas av Daikon. Kandidatinvarianter som genereras av Daikon syntetiseras till påståenden och instrumenteras på programmet. Den instrumenterade koden körs symboliskt för att generera nya testfall som matas tillbaka till Daikon för att ytterligare förfina uppsättningen kandidatinvarianter. Denna feedbackloop körs tills en fix-punkt nås. För att minska kostnaden för symboliskt utförande presenterar vi optimeringar för att beskära det symboliska tillståndsutrymmet och för att minska komplexiteten i de genererade vägförhållandena. Vi utnyttjar också de senaste framstegen inom teknik för återanvändning av restriktionslösningar för att undvika datorresultat för samma begränsningar över iterationer. Experimentella resultat visar att iDiscovery konvergerar till en uppsättning av högre kvalitet invarianter jämfört med den ursprungliga uppsättningen kandidatinvarianter i ett litet antal iterationer.
Zhang et al:s arbete. I REF införs iDiscovery, som syftar till att förbättra kvaliteten på orakel iterativt med hjälp av symbolisk avrättning.
Feedback-driven dynamic invariant discovery
{'venue': 'ISSTA 2014', 'journal': None, 'mag_field_of_study': ['Computer Science']}