टेस्ट कैसे वेब कोड?

वोट
11

किसी डेटाबेस-बैकएंड विकास के लिए परीक्षण कोड लिखने जहां राज्य पर भारी निर्भरता है के लिए कुछ अच्छे संकेत है?

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

लोग आम तौर पर एक 'जमे हुए' डेटाबेस के साथ एक अलग विकास प्रणाली कर सकता हूँ ताकि किसी भी समारोह हमेशा ठीक उसी परिणाम सेट लौट जाना चाहिए?

मैं काफी यकीन है कि यह एक नया मुद्दा नहीं है, तो मैं बहुत से अन्य लोगों के अनुभव से सीखने के लिए दिलचस्पी होगी हूँ।

कि सामान्य रूप में वेब आधारित विकास के इस मुद्दे पर चर्चा वहाँ अच्छा लेख वहाँ रहे हैं?

मैं आमतौर पर PHP कोड लिखने, लेकिन मैं इन सभी मुद्दों को काफी हद तक भाषा और ढांचे नास्तिक हैं उम्मीद करेंगे।

05/08/2008 को 22:58
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


10 जवाब

वोट
5

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

अद्यतन: एक त्वरित गूगल खोज एक से पता चला डीबी इकाई विस्तार PHPUnit के लिए।

05/08/2008 को 23:03
का स्रोत उपयोगकर्ता

वोट
3

: यदि आप ज्यादातर डेटा परत परीक्षण को लेकर चिंतित हैं, तो आप इस किताब की जांच करना चाह सकते XUnit टेस्ट पैटर्न: पुनर्रचना टेस्ट कोड । मैं हमेशा इसके बारे में अपने आप को अनिश्चित था, लेकिन इस किताब को मदद करने के लिए प्रदर्शन, reproducibility, आदि जैसे चिंताओं की गणना के लिए एक महान काम करता है

06/08/2008 को 05:14
का स्रोत उपयोगकर्ता

वोट
2

हम एक में स्मृति डेटाबेस (: HSQL का उपयोग http://hsqldb.org/ )। हाइबरनेट ( http://www.hibernate.org/ ) इसे आसान बना देता हमें अतिरिक्त लाभ यह है कि वे बिजली के रूप में के रूप में जल्दी से चलाने के साथ परीक्षण के डाटाबेस में हमारे इकाई परीक्षण के लिए बात करने के लिए, ..

10/09/2008 को 13:02
का स्रोत उपयोगकर्ता

वोट
2

मैं यह निर्भर करता है कि आप क्या डेटाबेस का उपयोग कर रहे लगता है, लेकिन लाल गेट (www.red-gate.com) एक उपकरण एसक्यूएल डाटा जेनरेटर कहा जाता हैं। यह समझदार देख परीक्षण डाटा के साथ अपने डेटाबेस को भरने के लिए विन्यस्त किया जा सकता। तो अपने 'यादृच्छिक' डेटा हर बार समान है तुम भी यह बताना हमेशा अपने यादृच्छिक संख्या जनरेटर में एक ही बीज का उपयोग कर सकते हैं।

इसके बाद आप इस विश्वसनीय, repeatable डेटा का उपयोग करने के लिए अपने इकाई परीक्षण लिख सकते हैं।

चीजों की वेब पक्ष के परीक्षण के लिए के रूप में, मैं वर्तमान में सेलेनियम (selenium.openqa.org) में देख रहा हूँ। यह एक क्रॉस-ब्राउज़र सक्षम टेस्ट स्वीट जो आप परीक्षण कार्यक्षमता में मदद मिलेगी प्रतीत होता है। हालांकि, इन वेब साइट परीक्षण उपकरण के सभी के साथ के रूप में, वहाँ कितनी अच्छी तरह इन बातों का परीक्षण करने के लिए कोई वास्तविक तरीका है देखने के लिए उन पर एक मानवीय आँख कास्टिंग के बिना ब्राउज़र के सभी में!

06/08/2008 को 14:44
का स्रोत उपयोगकर्ता

वोट
1

सामान्य तौर पर मैं पीटर के साथ लेकिन बनाने और परीक्षण डाटा मैं एसक्यूएल सीधे प्रयोग करेंगे नहीं की हटाने के लिए सहमत हैं। मैं कुछ CRUD एपीआई कि संभव के रूप में उत्पादन के लिए इसी तरह के रूप में डेटा बनाने के लिए उत्पाद में प्रयोग किया जाता है का उपयोग करना पसंद ...

10/09/2008 को 12:31
का स्रोत उपयोगकर्ता

वोट
1

मैं तीन डेटाबेस का उपयोग करने का प्रस्ताव होगा। एक उत्पादन डेटाबेस, एक विकास डेटाबेस (प्रत्येक निर्माता के लिए कुछ सार्थक डेटा से भरा) और एक परीक्षण डेटाबेस (खाली टेबल और शायद कुछ ऐसी पंक्तियां हैं कि हमेशा की जरूरत है के साथ)।

एक तरह से डेटाबेस कोड का परीक्षण करने के लिए है:

  1. (एसक्यूएल का प्रयोग करके) राज्य प्रारंभ करने में कुछ पंक्तियां सम्मिलित करें
  2. समारोह आप परीक्षण करना चाहते हैं चलाने के लिए
  3. वास्तविक परिणाम के साथ की उम्मीद की तुलना करें। यहाँ आप अपने सामान्य इकाई परीक्षण ढांचे का उपयोग कर सकता है
  4. पंक्तियों को बदल रहे थे साफ (ताकि अगले रन पिछले रन नहीं देखेंगे)

सफाई के साथ एक मानक तरीके से किया जा सकता है (जाहिर है, केवल परीक्षण डेटाबेस में) DELETE * FROM table

19/08/2008 को 19:40
का स्रोत उपयोगकर्ता

वोट
1

यहाँ मेरी रणनीति (मैं JUnit उपयोग करें, लेकिन मैं वहाँ PHP में बराबर करने के लिए एक रास्ता है यकीन है) है:

मैं एक विधि है जो किसी विशिष्ट डीएओ वर्ग के लिए यूनिट टेस्ट के सभी से पहले चलाता है। यह एक ज्ञात राज्य में देव डेटाबेस डालता है (सभी परीक्षण डाटा, आदि कहते हैं)। मैं परीक्षण चलाने के रूप में, मैं भी जाना जाता है राज्य को जोड़ा गया कोई भी डेटा का ट्रैक रखने के। इस डेटा प्रत्येक परीक्षा के अंत में साफ किया जाता है। आखिर वर्ग के लिए परीक्षण चलाने की है, एक और तरीका, देव डेटाबेस में सभी परीक्षण डेटा निकाल देता वाली स्थिति में पहले परीक्षण चला गया में यह हो जाता है। यह काम का एक सा यह सब करने के लिए है, लेकिन मैं आम तौर पर एक DBTestCommon कक्षा में तरीकों बारे में जहाँ मेरा डीएओ परीक्षण कक्षाओं के सभी उन्हें मिल सकता है।

11/08/2008 को 14:30
का स्रोत उपयोगकर्ता

वोट
1

आप की कोशिश कर सकते http://selenium.openqa.org/ यह डेटा स्तर परीक्षण आवेदन GUI परीक्षण के बजाय के लिए और अधिक है, लेकिन अपने कार्यों फिर वापस खेला जा सकता है जो विभिन्न प्लेटफार्मों पर परीक्षण को स्वचालित करने के लिए रिकॉर्ड है।

06/08/2008 को 13:06
का स्रोत उपयोगकर्ता

वोट
1

आप सेटअप एक ज्ञात मात्रा परीक्षण चल रहा है और अंत में फाड़ करने से पहले के साथ डेटाबेस है, तो आपको पता चल जाएगा कर सकते हैं कि आप किस डेटा के साथ काम कर रहे हैं।

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

यह डेटाबेस में से किसी एक परीक्षण संस्करण की स्थापना निश्चित रूप से लायक है - या अपने परीक्षण स्क्रिप्ट परीक्षण के हिस्से के रूप ज्ञात डेटा के साथ डेटाबेस को पॉप्युलेट बनाते हैं।

05/08/2008 को 23:08
का स्रोत उपयोगकर्ता

वोट
1

मैं अपने काम के साथ ठीक उसी समस्या है और मुझे लगता है कि सबसे अच्छा विचार एक PHP और करने के लिए डेटाबेस फिर से बनाने स्क्रिप्ट फिर एक अलग लिपि जहाँ मैं इसे पागल डेटा फेंक अगर यह टूट जाता है देखने के लिए है।

मैं कभी भी किसी भी इकाई परीक्षण इस्तेमाल नहीं किया है या उस तरह तो नहीं कह सकता है, तो यह काम करता है या खेद नहीं।

05/08/2008 को 23:03
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more