2011-01-17 22 views
39

Mutation testing कुछ समय से वहां रहा है, और ऐसा लगता है कि सी/सी ++ के लिए कम से कम एक या दो व्यावसायिक उत्परिवर्तन परीक्षण ढांचे हैं। क्या आपने उनका इस्तेमाल किया है? आपके अनुभव क्या हैं? क्या कोई ओपन सोर्स विकल्प हैं?सी/सी ++ के लिए उत्परिवर्तन-परीक्षण ढांचे क्या मौजूद हैं?

+2

अच्छा सवाल है क्योंकि मुझे उत्परिवर्तन परीक्षण के बारे में पता नहीं था। महान विचार ^^ – neuro

+0

देखें http://stackoverflow.com/questions/246495/what-mutation-testing-frameworks-exist – Raedwald

उत्तर

8

एक संक्षिप्त खोज के परिणाम स्वरूप:

इसके साथ, आपको यह समझने की आवश्यकता है कि उत्परिवर्तन परीक्षण विशेष रूप से उपयोगी नहीं है (कम से कम कुछ सामान जो मैंने पहले पढ़ा है)। कठोर (रूपक रूप से बोलने वाले) आवेषणों का सामना करते समय और यह सुनिश्चित करने के लिए कि डेटा आवश्यकताओं को ध्यान में रखा जाता है (if and only if स्थितियों से निपटने पर) यह एक दिलचस्प टूल है।

मेरी राय में, कोड की मजबूती का विश्लेषण करने के कई और स्थापित तरीके हैं।

+1

क्या पैरासॉफ्ट (बीमा ++) कॉल "उत्परिवर्तन परीक्षण" कॉल करता है जो हर कोई उत्परिवर्तन परीक्षण कहता है। उन्होंने मान्यता से परे "क्रांतिकारी" किया। http://www.parasoft.com/jsp/products/article.jsp?articleId=291 –

+0

@ जेसन: यह एक दिलचस्प लेना प्रतीत होता है, लेकिन विचार अभी भी वही है .. कोड लें, कुछ ऑपरेटरों को बदलें (या तो उन्हें "दोषपूर्ण" या "समकक्ष" बनाते हैं), और देखें कि सामान काम करता है या नहीं। कोड में अस्पष्टताओं को ढूंढना कभी-कभी उपयोगी होता है, लेकिन पूरी तरह से ईमानदार होने के लिए, आप अपना खुद का उत्परिवर्तन परीक्षण उपकरण लिख सकते हैं (यह कठिन नहीं है) और कुछ पैसे बचाएं। –

+0

यह पहला परिणाम है जो Google पर पॉप अप करता है, इसलिए मैंने सोचा कि यह अभी भी प्रासंगिक हो सकता है कि एमआईएलयू लिंक 404 हो जाता है। – Clearer

4

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

मैंने एक और दिलचस्प टूल की कोशिश की जो स्वचालित रूप से वाद्य यंत्र सी और सी ++ कोड में इनविरिएंट को खोज सके - इसे "डाइकॉन" कहा जाता है। अनिवार्य रूप से यह वही काम कर रहा है जो समकक्ष उत्परिवर्तन उत्पन्न करता है, लेकिन समस्याग्रस्त कोड की पहचान करने के बजाय यह आपको "ए == बी + 1" जैसे आविष्कारों का एक सेट देता है। मुझे लगता है कि इनवेरिएंट अधिक उपयोगी हैं क्योंकि जब आप खोजे गए आविष्कार को देखते हैं तो यह आपको आश्वासन देता है कि यदि आपका आविष्कार समझ में आता है तो आपका कोड सही है, और फिर आप आविष्कारों को आवेषण में परिवर्तित कर सकते हैं और जब आप कोड बदलते हैं तो आपको अधिक आत्मविश्वास मिलता है।

https://github.com/parunbabu/mutate.py

लेखक यह बेहतर काम करता है, तो परीक्षण के अंतर्गत कोड को डी-टिप्पणी की है और दांतेदार है कहते हैं:

3

ग कार्यक्रमों परिवर्तनशील के लिए एक सीधे आगे अजगर स्क्रिप्ट पर उपलब्ध है।

और यह भी मुफ़्त और ओपनसोर्स है ... मुझे लगता है कि यह वही है जो आप खोज रहे हैं।

संबंधित मुद्दे