Key points are not available for this paper at this time.
सॉफ्टवेयर अपने पूरे जीवन चक्र में लगातार परिवर्तनों से गुजरता है, और इस प्रकार यह विकसित होता है। जैसे-जैसे कोड बेस में परिवर्तन शामिल किए जाते हैं, हमें यह सुनिश्चित करने की आवश्यकता होती है कि परिवर्तनों के प्रभाव का पूरी तरह से परीक्षण किया गया है। इस उद्देश्य के लिए, ऐसे टेस्ट केस उत्पन्न करना महत्वपूर्ण है जो किसी दिए गए परिवर्तन के प्रभाव को उजागर कर सकें। इस शोधपत्र में, हम इस समस्या के लिए एक स्वचालित टेस्ट जेनरेशन समाधान का प्रस्ताव करते हैं। किसी दिए गए परिवर्तन c के लिए, हम एक टेस्ट इनपुट t उत्पन्न करने के लिए डायनेमिक सिम्बोलिक निष्पादन (dynamic symbolic execution) का उपयोग करते हैं, जो परिवर्तन को उजागर करता है। यह (i) यह सुनिश्चित करके किया जाता है कि परिवर्तन c को t द्वारा निष्पादित किया गया है, और (ii) c का प्रभाव टेस्ट t द्वारा उत्पन्न आउटपुट में देखने योग्य है। परिवर्तन-तक-पहुंचने वाले इनपुट के निर्माण के लिए, हमारी तकनीक परिवर्तन की ओर पाथ एक्सप्लोरेशन को निर्देशित करने के लिए कंट्रोल-डिपेंडेंसी ग्राफ में दूरी का उपयोग करती है। फिर, हमारी तकनीक उन सामान्य प्रोग्रामिंग पैटर्न की पहचान करती है जो किसी दिए गए परिवर्तन को प्रोग्राम के आउटपुट को प्रभावित करने से रोक सकते हैं। इनमें से प्रत्येक पैटर्न के लिए हम परिवर्तन-तक-पहुंचने वाले इनपुट को एक ऐसे इनपुट में ट्यून करने के तरीकों का प्रस्ताव करते हैं जो परिवर्तन तक पहुंचता है और परिवर्तन के प्रभाव को आउटपुट तक पहुंचाता है। हमारे प्रयोगात्मक परिणाम दर्शाते हैं कि हमारी टेस्ट जेनरेशन तकनीक वास्तविक दुनिया के प्रोग्रामों के लिए परिवर्तन-उजागर करने वाले इनपुट उत्पन्न करने में प्रभावी है।
Qi et al. (Mon,) ने इस प्रश्न का अध्ययन किया।