परीक्षण डेटा के रूप में सेट के संयोजन का उपयोग कैसे करें

मैं फ्रिंज मामलों और सामान्य मूल्यों के सेट से टुपल के साथ एक फ़ंक्शन का परीक्षण करना चाहता हूं। उदाहरण के लिए, एक फ़ंक्शन का परीक्षण करते समय true जब भी वैध त्रिकोण बनने वाली तीन लंबाई दी जाती है, तो मेरे पास विशिष्ट मामले, नकारात्मक / छोटी / बड़ी संख्याएं, मूल्यों को बंद करने के लिए बंद होना चाहिए, आदि; और अधिक, मुख्य उद्देश्य इन मानों के संयोजन उत्पन्न करना है, या बिना पुनरावृत्ति के, परीक्षण डेटा का एक सेट प्राप्त करने के लिए।

(inf,0,-1), (5,10,1000), (10,5,5), (0,-1,5), (1000,inf,inf),
...

एक नोट के रूप में: मुझे वास्तव में इसका उत्तर पता है, लेकिन यह दूसरों के लिए सहायक हो सकता है, और यहां लोगों के लिए चुनौती हो सकती है! - बाद में मेरा जवाब पोस्ट करेंगे।

0
जोड़ा संपादित
विचारों: 1
यह एक WordPress सवाल नहीं है। कम से कम, जिस तरह से आपने यह पूछा नहीं है।
जोड़ा लेखक Anonymous User, स्रोत
यह एक WordPress सवाल नहीं है। कम से कम, जिस तरह से आपने यह पूछा नहीं है।
जोड़ा लेखक Anonymous User, स्रोत
माइक सही है, अधिक जानकारी की आवश्यकता है अन्यथा बेवकूफ उत्तर जैसे "क्योंकि आपके पास एक नया ईमेल है!" मेरे दिमाग में आओ और मुझे नहीं लगता कि यह सहायक है।
जोड़ा लेखक steve_mtl, स्रोत
Abacus github नोड.जेएस, पायथन, PHP, एक्शनस्क्रिप्ट के लिए एक संयोजन पुस्तकालय (ps मैं लेखक हूँ )
जोड़ा लेखक Nikos M., स्रोत
हाय @ लीआ: कृपया हमें और विवरण दें ताकि 1.) हमारे पास आपकी मदद करने का एक उचित मौका हो सकता है और 2.) ताकि भविष्य में कॉन्फ़िगरेशन और भविष्य में एक ही समस्या हो, इस प्रश्न का उत्तर दिया जा सके। उदाहरण के लिए, मुझे लगता है कि आप एक प्लगइन का उपयोग कर रहे हैं? क्या है, यह क्या है? आपने किस सेटिंग का उपयोग किया है? आप कहां होस्टिंग कर रहे हो और कुछ भी जो प्रासंगिक हो सकता है। अग्रिम में धन्यवाद।
जोड़ा लेखक MikeSchinkel, स्रोत

11 उत्तर

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

यदि मैन्युअल बैकअप ठीक हो जाता है, तो संभवतः ई-मेल सेटअप के साथ एक त्रुटि है। सभी ई-मेल सेटिंग्स जांचें और सुनिश्चित करें कि वे सही हैं। ई-मेल (क्या एसएमटीपी सर्वर) भेजने के लिए आप किस ई-मेल प्रदाता का उपयोग कर रहे हैं? ई-मेल प्राप्त करने के लिए आप किस ई-मेल प्रदाता का उपयोग कर रहे हैं (क्या पीओपी 3 और आईएमएपी सर्वर)?

यदि आप WP-DB प्रबंधक का उपयोग नहीं कर रहे हैं, तो हमें यह जानना होगा कि आप इन बैकअप और आप और अन्य सभी जानकारी प्रदान करने के लिए कह रहे हैं।

1
जोड़ा

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

यदि मैन्युअल बैकअप ठीक हो जाता है, तो संभवतः ई-मेल सेटअप के साथ एक त्रुटि है। सभी ई-मेल सेटिंग्स जांचें और सुनिश्चित करें कि वे सही हैं। ई-मेल (क्या एसएमटीपी सर्वर) भेजने के लिए आप किस ई-मेल प्रदाता का उपयोग कर रहे हैं? ई-मेल प्राप्त करने के लिए आप किस ई-मेल प्रदाता का उपयोग कर रहे हैं (क्या पीओपी 3 और आईएमएपी सर्वर)?

यदि आप WP-DB प्रबंधक का उपयोग नहीं कर रहे हैं, तो हमें यह जानना होगा कि आप इन बैकअप और आप और अन्य सभी जानकारी प्रदान करने के लिए कह रहे हैं।

1
जोड़ा

बिल्कुल, विशेष रूप से इन परमिट / संयोजनों से निपटने के साथ मैं निश्चित रूप से देख सकता हूं कि पहला पास एक मुद्दा होगा।

पायथन में दिलचस्प कार्यान्वयन, हालांकि मैंने "एल्गोरिदम 515" (नीचे देखें) के आधार पर सी और ओकंपल में एक अच्छा लिखा है। उन्होंने फोर्ट्रान में लिखा क्योंकि यह सभी "एल्गोरिदम एक्सएक्स" कागजात के लिए आम था, ठीक है, वह असेंबली या सी। मुझे इसे फिर से लिखना था और संख्याओं की सीमाओं के साथ काम करने के लिए कुछ छोटे सुधार करना था। यह यादृच्छिक अभिगम करता है, मैं अभी भी Knuth 4th वॉल्यूम fascicle 2 में उल्लिखित लोगों के कुछ अच्छे कार्यान्वयन प्राप्त करने पर काम कर रहा हूं। मैं यह समझूंगा कि यह पाठक को कैसे काम करता है। हालांकि अगर कोई उत्सुक है, तो मैं कुछ लिखने का विरोध नहीं करता।

/** [combination c n p x]
 * get the [x]th lexicographically ordered set of [p] elements in [n]
 * output is in [c], and should be sizeof(int)*[p] */
void combination(int* c,int n,int p, int x){
    int i,r,k = 0;
    for(i=0;i< x);
        k = k - r;
    }
    c[p-1] = c[p-2] + x - k;
}

~ "एल्गोरिदम 515: लेक्सिकोग्राफिकल इंडेक्स से वेक्टर का जनरेशन"; बकल, बी पी, और लाइबानन, एम। एसीएम लेनदेन पर गणितीय सॉफ्टवेयर, वॉल्यूम। 3, संख्या 2, जून 1 9 77।

0
जोड़ा
निश्चित रूप से @ एमकेबी।
जोड़ा लेखक nlucaroni, स्रोत
"स्वयं-रिफ्लेक्सिव" इसके लिए एक गलत शब्द है। इसे "रिकर्सिव" कहा जाता है और यह कंप्यूटर विज्ञान का एक मौलिक हिस्सा है। प्रश्न में "चुनें" फ़ंक्शन सी (एन, के) है, en.wikipedia.org/wiki/Binomial_coefficient
जोड़ा लेखक nlucaroni, स्रोत
यह ध्यान दिया जाना चाहिए कि एक्स 1 आधारित है, 0 आधारित नहीं है जैसा कि कोई उम्मीद करेगा।
जोड़ा लेखक Andrew Savinykh, स्रोत
चुनें() क्या करता है? क्या वह मूल रूप से n-c [i] p- (i + 1) 1 का चयन करता है?
जोड़ा लेखक mkb, स्रोत
मुझे खेद है, मैं चुनिंदा व्यवहार का पालन नहीं करता हूं। ऐसा लगता है कि इसे स्वयं रिफ्लेक्सिव के रूप में परिभाषित किया गया है - चुनें चुनें। क्या आप मुझे बता सकते हैं कि यह सरल शब्दों में क्या करता है?
जोड़ा लेखक CuppM, स्रोत
यहां तक ​​कि सी सरणी सेट तत्वों को 1 आधारित और 0 आधारित नहीं मानती है। ध्यान में रखते हुए हम बल्ले से सी [i] वृद्धि करते हैं, यह कभी भी 0'थ तत्व को संदर्भित नहीं कर सकता है। या क्या मैं कुछ न कुछ भूल रहा हूं? या ओपी का मतलब सी [i] -1 के साथ init करना है और चुनें (एन-सी [i] -1, ...)?
जोड़ा लेखक Subu Sankara Subramanian, स्रोत

दिलचस्प सवाल!

मैं संयोजनों को चुनकर ऐसा करूंगा, पाइथन में निम्नलिखित की तरह कुछ। सबसे कठिन हिस्सा शायद पहला पास सत्यापन है, यानी <�कोड> यदि एफ (1,2,3) सत्य लौटाता है , क्या यह सही परिणाम है? एक बार जब आप इसे सत्यापित कर लेंगे, तो यह रिग्रेशन परीक्षण के लिए एक अच्छा आधार है।

शायद परीक्षण मामलों का एक सेट बनाना एक अच्छा विचार है जो आप जानते हैं कि यह सच होगा (उदाहरण के लिए इस त्रिकोण मामले के लिए 3,4,5), और परीक्षण मामलों का एक सेट जो आप जानते हैं, सभी झूठे होंगे (उदाहरण के लिए 0,1 , inf)। फिर आप परीक्षण आसानी से सत्यापित कर सकते हैं।

# xpermutations from http://code.activestate.com/recipes/190465
from xpermutations import *

lengths=[-1,0,1,5,10,0,1000,'inf']
for c in xselections(lengths,3):        # or xuniqueselections
    print c
(-1,-1,-1);
(-1,-1,0);
(-1,-1,1);
(-1,-1,5);
(-1,-1,10);
(-1,-1,0);
(-1,-1,1000);
(-1,-1,inf);
(-1,0,-1);
(-1,0,0);
...
0
जोड़ा

मुझे लगता है कि आप इसे पंक्ति परीक्षण विशेषता के साथ कर सकते हैं (इसमें उपलब्ध है MbUnit और NUnit के बाद के संस्करण) जहां आप एक इकाई परीक्षण को पॉप्युलेट करने के लिए कई सेट निर्दिष्ट कर सकते हैं।

0
जोड़ा

ब्रांड के नए पायथन 2.6 के साथ, आपके पास itertools मॉड्यूल के साथ एक मानक समाधान है जो Iterables के कार्टेशियन उत्पाद को लौटाता है:

import itertools

print list(itertools.product([1,2,3], [4,5,6]))
   [(1, 4), (1, 5), (1, 6),
   (2, 4), (2, 5), (2, 6),
   (3, 4), (3, 5), (3, 6)]

आप उत्पाद को एक पुनरावर्तनीय और स्वयं के साथ करने के लिए "दोहराना" तर्क प्रदान कर सकते हैं:

print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]

आप संयोजनों के साथ कुछ भी ट्विक कर सकते हैं:

print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]

और अगर आदेश मायने रखता है, तो क्रमपरिवर्तन होते हैं:

print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
   (2, 1), (2, 3), (2, 4),
   (3, 1), (3, 2), (3, 4),
   (4, 1), (4, 2), (4, 3)]

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

बस याद रखें कि आप एक टुपल या सूची को एक सेट में परिवर्तित कर सकते हैं और इसके विपरीत सूची (), tuple() और set() का उपयोग कर सकते हैं।

0
जोड़ा

हालांकि बहुत सारे टेस्ट डेटा बनाना संभव है और देखें कि क्या होता है, यह इस्तेमाल होने वाले डेटा को कम करने का प्रयास करने के लिए अधिक कुशल है।

एक सामान्य क्यूए परिप्रेक्ष्य से, आप इनपुट के विभिन्न वर्गीकरणों की पहचान करना चाहते हैं। प्रत्येक वर्गीकरण के लिए इनपुट मानों का एक सेट तैयार करें और उपयुक्त आउटपुट निर्धारित करें।

इनपुट मानों के वर्गों का नमूना यहां दिया गया है

  • छोटी संख्याओं के साथ वैध त्रिकोण (जैसे 1 अरब, 2, अरब, 2 अरब)
  • बड़ी संख्याओं के साथ वैध त्रिकोण (0.000001, 0.00002, 0.00003)
  • वैध प्राप्त त्रिकोण जो 'लगभग'flat हैं (10, 10, 1 9.9 999)
  • मान्य तीव्र त्रिभुज जो 'लगभग' फ्लैट हैं (10, 10, 0000001)
  • कम से कम एक नकारात्मक मान वाले अवैध त्रिकोण
  • अमान्य त्रिकोण जहां दो पक्षों का योग तीसरा
  • बराबर होता है
  • अमान्य त्रिकोण जहां दो पक्षों का योग तीसरा से अधिक है
  • इनपुट मान जो गैर-संख्यात्मक
  • हैं

...

एक बार जब आप इस फ़ंक्शन के लिए इनपुट वर्गीकरण की सूची से संतुष्ट हो जाते हैं, तो आप वास्तविक परीक्षण डेटा बना सकते हैं। संभावना है कि, प्रत्येक आइटम के सभी क्रमपरिवर्तनों का परीक्षण करना सहायक होगा। (उदाहरण के लिए (2,3,4), (2,4,3), (3,2,4), (3,4,2), (4,2,3), (4,3,2)) आम तौर पर, आप पाएंगे कि कुछ वर्गीकरण आप चूक गए हैं (जैसे इंफॉर्मेशन पैरामीटर के रूप में इंफ की अवधारणा)।

कुछ समय के लिए यादृच्छिक डेटा सहायक भी हो सकता है, जो कोड में अजीब बग पा सकते हैं, लेकिन आम तौर पर उत्पादक नहीं है।

अधिक संभावना है कि, इस फ़ंक्शन का उपयोग कुछ विशिष्ट संदर्भ में किया जा रहा है जहां अतिरिक्त नियम लागू होते हैं। (उदा। केवल पूर्णांक मान या मान 0.01 वृद्धि में होना चाहिए, आदि) ये इनपुट पैरामीटर के वर्गीकरण की सूची में शामिल होते हैं।

0
जोड़ा

यहां एक संभावित समस्या है: अन्य चीजों के अलावा, सुनिश्चित करें कि आप अपने सर्वर पर डिस्क स्थान से बाहर नहीं हैं। बैकअप प्रोग्राम को निकालने से पहले डेटाबेस को निकालने और ज़िप करने के लिए थोड़ी सी जगह की आवश्यकता होगी।

0
जोड़ा

यहां एक संभावित समस्या है: अन्य चीजों के अलावा, सुनिश्चित करें कि आप अपने सर्वर पर डिस्क स्थान से बाहर नहीं हैं। बैकअप प्रोग्राम को निकालने से पहले डेटाबेस को निकालने और ज़िप करने के लिए थोड़ी सी जगह की आवश्यकता होगी।

0
जोड़ा

मैं एक ही प्लगइन का उपयोग करता हूं (पहले से ही लंबे समय से) और यह मेरे साथ शायद 2-3 गुना हुआ। मैं इस कारण को समझने में कभी सक्षम नहीं था।

निष्क्रिय करने और पुनः सक्रिय करने के लिए प्लगइन हर मामले में मेरे लिए तय किया।

0
जोड़ा

मैं एक ही प्लगइन का उपयोग करता हूं (पहले से ही लंबे समय से) और यह मेरे साथ शायद 2-3 गुना हुआ। मैं इस कारण को समझने में कभी सक्षम नहीं था।

निष्क्रिय करने और पुनः सक्रिय करने के लिए प्लगइन हर मामले में मेरे लिए तय किया।

0
जोड़ा