what is mutation testing
यह ट्यूटोरियल बताता है कि म्यूटेशन टेस्टिंग क्या है, इसे कैसे करें, और म्यूटेशन टेस्टिंग प्रकार उदाहरणों के साथ:
म्यूटेशन टेस्टिंग क्या है?
उत्परिवर्तन परीक्षण एक दोष-आधारित परीक्षण तकनीक है, जहां एक सॉफ्टवेयर प्रोग्राम की विविधताएं परीक्षण डेटासेट के अधीन हैं। यह विचलन को अलग करने में निर्धारित परीक्षण की प्रभावशीलता को निर्धारित करने के लिए किया जाता है।
यह थोड़ा जटिल लगता है, क्या यह नहीं है?
आप क्या सीखेंगे:
उत्परिवर्तन परीक्षण
म्यूटेशन टेस्टिंग (एमटी) एक लंबा रास्ता तय करता है, 70 के दशक में जहां इसे पहली बार एक स्कूल प्रोजेक्ट के रूप में प्रस्तावित किया गया था। यह बहुत संसाधन-गहन होने के कारण लिखा गया था। हालांकि, जैसे-जैसे मानव ने अधिक उन्नत कंप्यूटर विकसित करना जारी रखा, उसने धीरे-धीरे वापसी की और अब सबसे लोकप्रिय परीक्षण तकनीकों में से एक है।
उत्परिवर्तन परीक्षण परिभाषा;
एमटी के रूप में भी जाना जाता है दोष-आधारित परीक्षण, कार्यक्रम उत्परिवर्तन, त्रुटि-आधारित परीक्षण, या उत्परिवर्तन विश्लेषण ।
जैसा कि नाम से पता चलता है, उत्परिवर्तन परीक्षण एक सॉफ्टवेयर परीक्षण प्रकार है जो परिवर्तनों या उत्परिवर्तन पर आधारित है। यह परिभाषित करने के लिए कि स्रोत परीक्षण कोड में त्रुटियों का पता लगा सकता है या नहीं, यह जांचने के लिए स्रोत कोड में लघु परिवर्तन प्रस्तुत किए गए हैं।
आदर्श मामला यह है कि परीक्षण मामलों में से कोई भी पारित नहीं होना चाहिए। यदि परीक्षण पास होता है, तो इसका मतलब है कि कोड में कोई त्रुटि है। हम कहते हैं कि उत्परिवर्ती (हमारे कोड का संशोधित संस्करण) रहता था। यदि परीक्षण विफल हो जाता है, तो कोड में कोई त्रुटि नहीं है, और उत्परिवर्ती को मार दिया गया था। हमारा लक्ष्य सभी म्यूटेंट को मारना है।
उत्परिवर्तन परीक्षण परिभाषित परीक्षण मामलों की गुणवत्ता का परीक्षण करने में मदद करता है या अधिक प्रभावी परीक्षण मामलों को लिखने के लिए परीक्षण के साथ मुकदमा करता है। जितने अधिक म्यूटेंट हम मार सकते हैं, हमारे परीक्षणों की गुणवत्ता उतनी ही अधिक होगी।
उत्परिवर्तन परीक्षण अवधारणाओं
इससे पहले कि हम म्यूटेशन टेस्टिंग पर चर्चा करें, आइए हम कुछ अवधारणाओं का पता लगाते हैं, जिन्हें हम पार करेंगे।
# 1) म्यूटेंट: यह बस स्रोत कोड का उत्परिवर्तित संस्करण है। यह कोड है जिसमें मिनट परिवर्तन होते हैं। जब म्यूटेंट के माध्यम से परीक्षण डेटा चलाया जाता है, तो इसे मूल स्रोत कोड से अलग-अलग परिणाम देना चाहिए। म्यूटेंट भी कहा जाता है उत्परिवर्ती कार्यक्रम ।
विभिन्न प्रकार के म्यूटेंट हैं। ये इस प्रकार हैं:
- बच गए म्यूटेंट: जैसा कि हमने उल्लेख किया है, ये ऐसे म्यूटेंट हैं जो स्रोत कोड के मूल और उत्परिवर्तित वेरिएंट के माध्यम से परीक्षण डेटा चलाने के बाद भी जीवित हैं। ये मारे जाने चाहिए। उन्हें जीवित म्यूटेंट के रूप में भी जाना जाता है।
- मारे गए म्यूटेंट: ये ऐसे म्यूटेंट हैं जो म्यूटेशन टेस्टिंग के बाद मारे जाते हैं। स्रोत कोड के मूल और उत्परिवर्तित संस्करणों से अलग-अलग परिणाम प्राप्त करने पर हमें ये मिलते हैं।
- समतुल्य उत्परिवर्ती: ये लाइव म्यूटेंट से निकटता से संबंधित हैं, इसमें, उनके माध्यम से परीक्षण डेटा चलाने के बाद भी वे 'जीवित' हैं। उन्हें दूसरों से अलग करने का मतलब यह है कि उनका मूल स्रोत कोड के समान अर्थ है, भले ही उनका अलग-अलग वाक्य-विन्यास हो।
# 2) म्यूटेटर / म्यूटेशन ऑपरेटर: ये वही हैं जो उत्परिवर्तन को संभव बनाते हैं, वे 'चालक की सीट' पर हैं। वे मूल रूप से एक उत्परिवर्ती संस्करण का स्रोत कोड बनाने के लिए परिवर्तन या परिवर्तन के प्रकार को परिभाषित करते हैं। वे के रूप में संदर्भित किया जा सकता है दोष या उत्परिवर्तन नियम ।
# 3) उत्परिवर्तन स्कोर: यह म्यूटेंट की संख्या के आधार पर एक स्कोर है।
इसकी गणना नीचे दिए गए सूत्र के उपयोग से की जाती है:
ध्यान दें कि, म्यूटेशन स्कोर की गणना करते समय समकक्ष म्यूटेंट पर विचार नहीं किया जाता है। म्यूटेशन स्कोर के रूप में भी जाना जाता है उत्परिवर्तन पर्याप्तता । हमारा उद्देश्य उच्च उत्परिवर्तन स्कोर प्राप्त करना होना चाहिए।
कैसे करें म्यूटेशन टेस्टिंग
चरण 1: आइए हमारी जैस्मीन इकाई परीक्षण लिखें।
टेस्ट सूट (जैस्मीन)
describe('User', function() { it('should compare the two numbers from user input', function(){ expect(20).toBeGreaterThan(5); }) });
चरण 2: मूल कोड लिखें।
मूल कोड (जावास्क्रिप्ट)
const user_info = () => { mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age > daughter_age) { alert(`Daughter's age is ${daughter_age}. Mother's age is ${mother_age}. Welcome to the Mother-Daughter program`) } else { alert(`Daughter's age: ${daughter_age}, is more than mother's age: ${mother_age}. Please enter correct ages`) } } user_info();
चरण 3: फिर हम यह सुनिश्चित करने के लिए मूल कोड के माध्यम से परीक्षण चलाएंगे कि हमने गेट-गो से विफल परीक्षण नहीं किए हैं। हमारे पास कुछ आउटपुट होना चाहिए जो यह बताता है कि हमने वास्तव में शून्य विफलताओं के साथ एक परीक्षा लिखी है।
उदाहरण के लिए:
0.019s 1 कल्पना, 0 विफलताओं में समाप्त, बीज के साथ यादृच्छिक 31435
मूल कोड का परिणाम:
Daughter's age is 5. Mother's age is 20. Welcome to the Mother-Daughter program
चरण 4: उत्परिवर्ती का परिचय दें। इस मामले में, हम बदलते हैं से अधिक ऑपरेटर (मां_से> बेटी_गे) ए के मुकाबले कम संचालक (मां_जी) उत्परिवर्ती कोड (जावास्क्रिप्ट) चरण # 5: हम फिर उत्परिवर्ती कोड के माध्यम से परीक्षण चलाते हैं। यहाँ परीक्षण के परिणाम हैं: 0.017s 1 कल्पना, 0 विफलताओं में समाप्त, बीज 89555 के साथ यादृच्छिक उत्परिवर्ती कोड का परिणाम: चरण # 6: मूल संस्करण और उत्परिवर्ती संस्करण से परिणामों की तुलना करें। इस मामले में, वे अलग-अलग हैं, भले ही एक ही परीक्षण सूट का उपयोग किया गया हो। इसलिए हमने अपने उत्परिवर्ती को मार दिया है। हमारा टेस्ट सूट इसलिए जाना अच्छा है। उत्परिवर्तन कई प्रकार के होते हैं। इन्हें नीचे समझाया गया है। यहां, हम आमतौर पर +/- 1 द्वारा पैरामीटर और / या निरंतर मूल्यों को बदलकर एक उत्परिवर्तन का परिचय देते हैं। उदाहरण: मूल कोड (जावास्क्रिप्ट) अगर उपरोक्त कोड का मतलब सम संख्याओं को गुणा करना था मैं<4 , तब मूल्य उत्परिवर्तन का अर्थ होगा कि आरंभीकरण को बदलना चलो मैं = 1 । उदाहरण: उत्परिवर्ती कोड (जावास्क्रिप्ट) यहां, हम एक कोड ब्लॉक में एक स्टेटमेंट को डिलीट या डुप्लिकेट करते हैं। हम एक कोड ब्लॉक में भी बयानों को पुनर्व्यवस्थित कर सकते हैं। उदाहरण के लिए, यदि हम किसी और ब्लॉक में, तो हम उस हिस्से को हटा सकते हैं या पूरे ब्लॉक को भी हटा सकते हैं। उदाहरण: मूल कोड (जावास्क्रिप्ट) उदाहरण: उत्परिवर्ती कोड (जावास्क्रिप्ट) यहाँ लक्ष्य वह कोड है जो निर्णय लेता है, उदाहरण के लिए, मूल्य तुलना। हम बदल सकते हैं > को< हमारे माँ-बेटी कार्यक्रम के उदाहरण में। अन्य ऑपरेटर जिन्हें हम स्विच कर सकते हैं उनमें निम्नलिखित शामिल हैं: उत्परिवर्तन परीक्षण (एमटी) के लाभों में शामिल हैं: उत्परिवर्तन परीक्षण (एमटी) के नुकसान में शामिल हैं: उत्परिवर्ती पीढ़ी की प्रक्रिया को गति देने के लिए उपकरण काम में आते हैं। यहाँ कुछ उपकरण दिए गए हैं जिनका उपयोग हम MT में कर सकते हैं: स्ट्राइकर, जंबल, पीआईटी, और इंश्योरेंस ++। आइए एक उदाहरण से जानें: कहते हैं, एक अस्पताल साइट है जो नए उपयोगकर्ताओं को पंजीकृत करने देती है। इसमें मरीज की जन्म तिथि या उम्र पढ़ी जाती है। यदि यह 14 से अधिक है, तो एक सामान्य चिकित्सक को उनके मुख्य चिकित्सक के रूप में नियुक्त करता है। ऐसा करने के लिए, यह physician सामान्य चिकित्सक के कार्य को आमंत्रित करता है जो उपलब्ध चिकित्सक को ढूंढता है। अब, अन्य कार्यक्षमता हो सकती है। हो सकता है, 13 साल से कम उम्र के मरीजों को बाल रोग विशेषज्ञ को सौंपा जाए। लेकिन हम केवल उम्र -14 का मामला उठाएंगे। यह कोड जैसा दिख सकता है: 1) पढ़ो उम्र कृपया ध्यान दें कि कोड की उपरोक्त पंक्तियाँ किसी भी प्रोग्रामिंग भाषा के लिए विशिष्ट नहीं हैं और यह नहीं चलती हैं। यह सिर्फ काल्पनिक है। एक परीक्षक के रूप में, यदि मेरा डेटा-सेट 14, 15, 0, 13 है - कुछ यादृच्छिक संख्याएँ। यदि 4 कोड (14, 15, 0, और 3) का डेटा-सेट इस कोड के साथ सभी संभावित समस्याओं की पहचान करने के लिए पर्याप्त है, तो यह जाँचना है। यह भी पढ़े => अपने परीक्षण मामलों को निष्पादित करने से पहले परीक्षण डेटा को डिज़ाइन करने के लिए टिप्स म्यूटेशन टेस्टिंग इसे कैसे प्राप्त करता है? सबसे पहले और सबसे महत्वपूर्ण, आप प्रोग्राम के रूपांतरों को बनाते हैं। एक उत्परिवर्ती एक कार्यक्रम के रूप में लिखा है, लेकिन कुछ भी नहीं है। इसमें एक आत्म-बीज दोष है। उदाहरण हैं: इन प्रतिस्थापनों को भी कहा जाता है ‘म्यूटेशन ऑपरेटर्स। ' मैं आपको उदाहरण दिखाता हूं: उत्परिवर्ती # 1: रिलेशनल ऑपरेटरप्रतिस्थापन 1) आयु पढ़ें उत्परिवर्ती # 2: 1) आयु पढ़ें उत्परिवर्ती # 3: 1) आयु पढ़ें उत्परिवर्ती # 4: 1) आयु पढ़ें म्यूटेंट # 5: स्टेटमेंट रिमूवल 1) आयु पढ़ें उत्परिवर्ती # 6: पूर्ण मूल्य सम्मिलन 1) आयु पढ़ें उत्परिवर्ती # 7: गलत सिंटैक्स 1) आयु पढ़ें उत्परिवर्ती # 8: मूल परीक्षण के रूप में एक ही बात करता है 1) आयु पढ़ें एक बार, सभी म्यूटेंट बनाए जाते हैं। वे परीक्षण डेटा-सेट के अधीन हैं। हमारा सेट 14, 15, 0 और 13. इनमें से कौन सा उत्परिवर्ती हमारे डेटा-सेट को खोजेगा? नीचे दी गई तालिका में जानें: (बढ़े हुए दृश्य के लिए चित्र पर क्लिक करें) जैसा कि आप देख सकते हैं कि हमारी डेटा वैल्यू 14 फेल्ट्स तब मिलती है जब यह म्यूटेंट 2, 3 और 4 के खिलाफ चलती है। या 14, म्यूटेंट 2, 3 और 4 को मारता है। लेकिन, यह 1, 6 और 8 के मुकाबले अप्रभावी है। यदि आपका डेटा-सेट सभी म्यूटेंट को मारता है, तो यह प्रभावी है। अन्यथा, अधिक या बेहतर परीक्षण डेटा शामिल करें। सभी म्यूटेंट को मारने के लिए डेटा-सेट में प्रत्येक मान के लिए आवश्यक नहीं है। लेकिन एक साथ, उन्हें सभी को मारना चाहिए।उदाहरण के लिए:14 मारता है 2, 3 और 4. 15 को मारता है 1, 2 और 4. और इसी तरह। 5, 7 और 8 के बारे में क्या? उत्परिवर्ती # 5 - प्रोग्राम उदाहरण है जो आपके द्वारा दिए गए किसी भी डेटा मूल्य के बावजूद विफल होगा। ऐसा इसलिए है क्योंकि यह वैध और अमान्य दोनों मूल्यों के लिए कोई प्रोग्रामिंग नहीं करेगा। उत्परिवर्ती # 7 - एक संकलन त्रुटि होगी। या स्क्रिप्टिंग भाषा के मामले में एक त्रुटि जो निष्पादन को रोक देगी। उत्परिवर्ती # 8 - मुख्य कार्यक्रम के रूप में एक ही बात है। जैसा कि आप देख सकते हैं, उपरोक्त म्यूटेंट बिल्कुल भी उपयोगी नहीं हैं। इसलिए, बचने के लिए म्यूटेंट हैं: क्या आप सोच रहे हैं, अगर यह इतना प्रयास करता है, तो क्या होगा जब मुझे कोड के बड़े नमूनों का परीक्षण करना होगा? उत्परिवर्तन परीक्षण दो चीजों पर निर्भर करता है: इसलिए, यह कोड की सबसे छोटी इकाई पर केंद्रित है और बड़े कार्यक्रमों के म्यूटेशन परीक्षण को स्केल करने के लिए प्रोग्रामर के कौशल में अपना विश्वास रखता है। इस ट्यूटोरियल ने म्यूटेशन टेस्टिंग डेफिनिशन को कवर किया, उदाहरणों के साथ इस टेस्टिंग को विस्तार से करने के लिए स्टेप्स। हमें उम्मीद है कि आपको इस दिलचस्प परीक्षण तकनीक- म्यूटेशन टेस्टिंग के बारे में पढ़ने और सीखने में मज़ा आया होगा। लेखक के बारे में: यह लेख एसटीएच टीम की सदस्य स्वाति एस ने लिखा है। कृपया नीचे अपनी टिप्पणी, प्रश्न और विचार साझा करें। const user_info = () =>{ mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age
Daughter's age: 5, is more than mother's age: 20. Please enter correct ages
उत्परिवर्तन परीक्षण प्रकार
(१) मान उत्परिवर्तन
let arr = [2,3,4,5] for(let i=0; i
let arr = [2,3,4,5] for(let i=1; i
# 2) स्टेटमेंट म्यूटेशन
let arr = [2,3,4,5] for(let i=0; i
let arr = [2,3,4,5] for(let i=0; i
# 3) निर्णय म्यूटेशन
मूल संचालक उत्परिवर्ती संचालक एक <= > = दो > = == ३ === == ४ तथा या ५ || &&
उत्परिवर्तन परीक्षण उपकरण
उत्परिवर्तन परीक्षण पर अधिक
2) यदि आयु> १४
3) डॉक्टर = सामान्य चिकित्सक ()
4) अगर अंत
2) अगर उम्र के साथ<’
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
2) यदि आयु = 14 If = के साथ> बदलना
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
2) यदि आयु> = 14 If> के साथ> बदलना = = '
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
2) अगर उम्र के साथ<=’
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
२) यदि आयु = १४
3)) डॉक्टर असाइनमेंट स्टेटमेंट निकालें ’
4) अंत अगर
२) यदि आयु> १४
3) डॉक्टर = Mr.X (निरपेक्ष मूल्य सम्मिलन- मान लें कि X एक बाल रोग विशेषज्ञ है)
4) अंत अगर
2) यदि आयु 14%% (गलत वाक्यविन्यास)
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
2) अगर उम्र> 14 और उम्र> 14 same का मतलब उम्र> 14 के समान है
3) डॉक्टर = सामान्य चिकित्सक ()
4) अंत अगर
नोट करने के लिए अंक
सबसे अच्छा वीडियो कनवर्टर क्या है
निष्कर्ष
अनुशंसित पाठ