2011-06-27 12 views
6

क्या कोई भी ऐसे टूल के सुझाव प्रदान कर सकता है जिसका उपयोग जावा प्रोग्राम के भीतर एक स्रोत-कोड (बाइट-कोड नहीं) स्तर पर उत्परिवर्तन करने के लिए किया जा सकता है? मुझे दोषों के साथ अपने स्रोत कोड को बीज करने की ज़रूरत है। यदि कोई मौजूद है, तो मैं एक जीयूआई के साथ एक आवेदन पसंद करूंगा।मैं अपने जावा प्रोग्राम के उत्परिवर्तन परीक्षण कैसे कर सकता हूं?

+0

यह असली दुनिया में थोड़ा आवेदन है उत्पन्न के दौरान सभी उत्परिवर्ती एम्बेड – Bohemian

+0

बस कुछ यादृच्छिक वर्णों को प्रतिस्थापित कर सकते हैं, लेकिन ज्यादातर मामलों में यह लेटल होगा (यानी परिणामस्वरूप प्रोग्राम संकलित नहीं होगा, अगर आपने स्ट्रिंग या टिप्पणी नहीं मारा है या वास्तव में भाग्यशाली रूप से प्रतिस्थापित किया है)। –

+5

"असली दुनिया में इसका बहुत कम आवेदन है" एक खराब बहाना है। जब टेंसर, टोपोलॉजी या कैलकुस गणित विकसित किए गए थे, तो उनके पास बहुत कम "असली दुनिया का उपयोग" था। यह एक दिलचस्प सवाल है। कोड उत्परिवर्तन बहुत असली दुनिया अनुप्रयोग है। –

उत्तर

3

जब मैंने अध्यायों में से एक के लिए जीएमयू, we used Mu Java पर परीक्षण पर एक सॉफ्टवेयर इंजीनियरिंग कक्षा ली। एचटीएच

+0

धन्यवाद! मैंने यह भी कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है। @ ओवरराइड एनोटेशन अपवाद पैदा कर रहा है .. – damluar

3

यह ओपन सोर्स टेस्ट कवरेज टूल Jester द्वारा उपयोग की जाने वाली तकनीक है। यदि आप उपयुक्त टूल नहीं ढूंढ पा रहे हैं और खुद को बनाना चाहते हैं तो इसके स्रोत पर एक नज़र उपयोगी हो सकती है।

4

मुझे पीआईटी उत्परिवर्तन परीक्षण उपकरण मिला है, जो मुझे काफी पसंद है। मुजावा के साथ मेरे पास @ ओवरराइड एनोटेशन के कारण अपवाद हैं। ऐसा लगता है कि यह जावा 5/6 का समर्थन नहीं करता है।

+3

यहां पीआईटी का अच्छा अवलोकन: http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –

3

आपकी आवश्यकता वास्तव में तो विकल्प के बारे में पता कर रहा हूँ स्रोत कोड परिवर्तन के लिए है, तो कर रहे हैं

जेस्टर - उत्परिवर्तन ऑपरेटरों कि काफी अस्थिर कर रहे हैं की एक सीमित संख्या प्रदान करता है। जेफ ऑफutt ने इसे शाखा परीक्षण लागू करने के लिए एक बहुत महंगा तरीका बताया। मेरा मानना ​​है कि अपने स्वयं के ऑपरेटरों को परिभाषित करना संभव है, इसलिए यह शायद पूरी तरह से उचित नहीं है।

म्यू जावा - जावा 5

जुडी का समर्थन नहीं करता है - यह अन्य के बारे में ज्यादा पता नहीं है की तुलना में यह है कि यह मौजूद है

लावा - सुंदर बुनियादी ध्वनि और मैं इसे जावा 5 का समर्थन करता है नहीं लगता है

उत्तर से नीचे मैं अब पीआईटी का उपयोग करके देखता हूं। मुझे लगता है कि यह वास्तव में एक महान विकल्प है (मैंने इसे लिखा है इसलिए एक निश्चित पूर्वाग्रह हो सकता है), लेकिन यह एक बाइट कोड उत्परिवर्तन प्रणाली है।

MμClipse केवल JUnit 3 का समर्थन करता है और अब बनाए रखा है:

1

यहाँ यह एक बेंचमार्क है। इसके लिए जेस्टर, श्रमिक है और एक जटिल विन्यास की आवश्यकता है; प्लस अब और बनाए रखा नहीं है। सबसे अच्छा टूल जो मैं पा सकता हूं वह है जवालंच I had wrote a entire article about this !

2

"असली दुनिया में इसका बहुत कम आवेदन है"। दृढ़ता से असहमत, मैं यूके और पीआईटी (http://pitest.org/) में एक बहुत बड़ी मीडिया कंपनी में अनुबंध करता हूं उत्परिवर्तन परीक्षण के लिए बेहद उपयोगी है। अधिकांश सीआई बिल्ड 85% कवरेज पीआईटी उत्परिवर्तन परीक्षण के बिना असफल हो जाते हैं। पुन: "कुछ यादृच्छिक वर्णों को प्रतिस्थापित कर रहा है ..." उत्परिवर्तन का मतलब यह नहीं है। पीआईटी उत्परिवर्तन संकलित परिवर्तनों तक ही सीमित हैं।

+0

यदि आपको 100% उत्परिवर्तन कवरेज की आवश्यकता होती है तो आप समकक्ष उत्परिवर्तनों से कैसे निपटते हैं? – henry

1

प्रमुख उत्परिवर्तन ढांचे (Major's website) एक संकलक-एकीकृत म्यूटेटर और जुनीट परीक्षणों के लिए एक उत्परिवर्तन विश्लेषक प्रदान करता है।

मेजर का म्यूटेटर जावा 7 कंपाइलर में एकीकृत है।यह कई उत्परिवर्तन ऑपरेटरों प्रदान करता है और समर्थन करता है, स्रोत कोड परिवर्तनशील के लिए दो विकल्प:

  1. उत्पन्न और संकलन
  2. उत्परिवर्ती और निर्यात उत्परिवर्तित स्रोत फ़ाइलों
संबंधित मुद्दे