Abstract-Inte alla buggar leder till program kraschar, och inte alltid finns det en formell specifikation för att kontrollera riktigheten av ett programvarutest resultat. Ett vanligt scenario i programvarutestning är därför att testdata genereras, och en testare manuellt lägger till test oracles. Eftersom detta är en svår uppgift är det viktigt att producera små men representativa testuppsättningar, och denna representativitet mäts normalt med hjälp av kodtäckning. Det finns dock ett grundläggande problem med den gemensamma strategin att inrikta sig på ett mål för täckningen i taget: Målen för täckningen är inte oberoende, inte lika svåra och ibland ogenomförbara – resultatet av testgenereringen är därför beroende av storleksordningen på mål för täckningen och hur många av dem som är genomförbara. För att lösa detta problem föreslår vi ett nytt paradigm där hela testsviter utvecklas i syfte att täcka alla täckningsmål samtidigt och samtidigt hålla den totala storleken så liten som möjligt. Detta tillvägagångssätt har flera fördelar, eftersom dess effektivitet till exempel inte påverkas av antalet ogenomförbara mål i koden. Vi har implementerat detta nya tillvägagångssätt i EVOSUITE-verktyget, och jämfört det med det gemensamma tillvägagångssättet att ta itu med ett mål i taget. Utvärderade på open source-bibliotek och en industriell fallstudie för totalt 1 741 klasser, visar vi att EVOSUITE uppnått upp till 188 gånger grentäckningen av en traditionell strategi för enskilda grenar, med upp till 62 procent mindre testsviter.
Fraser och Arcuri var de första att föreslå en flermålsstrategi, som optimerar alla täckningsmål samtidigt för att övervinna nackdelarna med att rikta en gren i taget REF.
Whole Test Suite Generation
{'venue': 'IEEE Transactions on Software Engineering', 'journal': 'IEEE Transactions on Software Engineering', 'mag_field_of_study': ['Computer Science']}