Omfattande typsäkra system, såsom Java, förlitar sig crmcally på en stor och komplex programvara bas för deras övergripande skydd och integritet, och är därför svåra att testa och verifiera. Tradmonella testtekniker, såsom manuell testgenerering och formell verifiering, är för tidskrävande, dyra och oprecisa, eller arbetar bara på abstrakta modeller av genomförandet och är alltför förenklade. Följaktligen har kommersiella virtuella maskiner som används hittills uppvisat många buggar och säkerhetshål. I den här artikeln diskuterar vi vår erfarenhet av att använda produktions grammatik för att testa stora, komplexa och säkerhetskritiska programvarusystem. Speciellt beskriver vi lava, ett domänspecifikt språk som vi har utvecklat för Speclfymg produktions grammatik, och relaterar vår erfarenhet med att använda lava för att generera effecuve testsviter för Java virtuella maskin. Vi visar produktions grammatikens effektivitet när det gäller att generera komplexa testfall som i kombination med komparativa och variantbaserade testtekniker kan uppnå hög kod- och värdetäckning. Vi beskriver också en förlängning till produktions grammatik som möjliggör samtidig generering av certifikat för testfall. Ett certifikat är en beteendebeskrivning som anger det avsedda resultatet av det genererade testfallet, och fungerar därför som ett orakel genom vilket det testade systemets korrekthet kan bedömas isolerat. Vi rapporterar resultaten av att tillämpa dessa testtekniker på kommersiella Javaimplementationer. Vi drar slutsatsen att användningen av produktions grammatik i kombination med andra automatiserade testtekniker är en kraftfull och effektiv metod för att testa programvarusystem, och möjliggörs av ett specialspråk för att specificera utökad produktions grammatik.
Sirer och Bershad testade Java Virtual maskiner REF med hjälp av "produktion grammatik" som involverar vikter samt vakter och åtgärder för att styra generationsprocessen.
Using production grammars in software testing
{'venue': "DSL '99", 'journal': None, 'mag_field_of_study': ['Computer Science']}