2012-06-09 12 views
5

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

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

लेकिन मैं अपने डेटाबेस आर्किटेक्चर का परीक्षण कैसे करूं?

  • वहाँ सामान्य और विशेष रूप से MySQL में डेटाबेस के लिए इसी तरह के परीक्षण रणनीतियों और उपकरणों के कुछ प्रकार है?

  • मैं कैसे सत्यापित करूं कि मेरे विचार, संग्रहित प्रक्रियाएं, ट्रिगर्स और ईश्वर-जानता है- एक अंतर्निहित तालिका बदलने के बाद भी क्या मान्य है?

  • क्या मुझे डाटाबेस तर्क (संग्रहित प्रक्रियाओं, ट्रिगर्स इत्यादि) के परीक्षण को सक्षम करने के लिए एक PHP परत के साथ डेटाबेस को लपेटना है?

उत्तर

2

एक डेटाबेस के परीक्षण के लिए चीजें आप की आवश्यकता होगी में से कुछ हैं:

  1. एक परीक्षण डेटाबेस अपने सभी डेटा परीक्षण मामले, प्रारंभिक डेटा, और इतने पर हैं। यह आपको प्रत्येक बार एक ज्ञात प्रारंभ स्थिति से परीक्षण करने में सक्षम बनाता है।
  2. लेन-देन का एक सेट (INSERT, DELETE, UPDATE) जो आपके डेटाबेस को उन राज्यों के माध्यम से ले जाता है जिन्हें आप परीक्षण करना चाहते हैं। ये स्वयं परीक्षण डेटाबेस में संग्रहीत किया जा सकता है।
  3. आपके परीक्षणों का सेट - डेटाबेस पर क्वेरी के रूप में व्यक्त किया गया है, जो आपके कार्यों के परिणामों की वास्तविक जांच करता है। इन परिणामों का परीक्षण आपके परीक्षण सूट द्वारा किया जाएगा।
  4. डेटाबेस द्वारा अपवादों को फेंक दिया जा सकता है, लेकिन यदि आपको अपवाद मिल रहे हैं, तो आपको अपने डेटाबेस और डेटा में अधिक गंभीर चिंताएं होने की संभावना है। आप एक ही फैशन में डेटाबेस की कार्रवाई का परीक्षण कर सकते हैं, लेकिन "कोने के मामलों" को छोड़कर यह कम आवश्यक होना चाहिए, क्योंकि आधुनिक डेटाबेस इंजन डेटा सेवा के अपने काम पर काफी मजबूत हैं।

आप एक PHP परत के साथ अपने डेटाबेस रैप करने के लिए आवश्यकता नहीं होनी चाहिए - अगर आप उपरोक्त संरचना का पालन यह DML में अपना पूरा टेस्ट स्वीट के लिए संभव हो जाना चाहिए और अपने वास्तविक डेटाबेस के DDL अपने सामान्य टेस्ट स्वीट के साथ संयुक्त ।

+0

शानदार उत्तर! सरल ("सरल सुंदर है") और जल्दी से शुरू करना आसान है और उपकरणों का एक अतिरिक्त सेट सेट करने की आवश्यकता नहीं है। – dbm

4

डेटाबेस परीक्षण के दो पक्ष हैं।

  • एक देखने के व्यापार तर्क बिंदु से परीक्षण डेटाबेस के लिए उन्मुख है और चिंता का विषय नहीं कायम करना चाहिए डेटा। उस स्तर पर एक प्रसिद्ध तकनीक है - ORM।, अगर सब cascades कार्रवाई करने के रूप में वे मेरा मतलब है चाहिए (, अगर हम Product बना सकते हैं और Category से लिंक एक मॉडल का वर्णन और अद्वितीय मामलों या criterias का एक सेट का परीक्षण करने के बनाने: इस मामले में एल्गोरिथ्म सरल है सत्र सहेजने के बाद हमें के बीच सभी आवश्यक संबंधों के साथ डीबी में लिखी गई सभी संस्थाएं मिलती हैं)। अधिक कहने के लिए: कुछ ओआरएम पहले से ही एक इकाई परीक्षण मॉड्यूल प्रदान करते हैं (उदाहरण के लिए, एनएचबेर्नेट) और उनमें से कुछ और भी शांत उपकरण: डेटाबेस योजनाएं, मॉडल, परीक्षण मामलों को बनाने का सबसे आसान और तेज़ तरीका: उदाहरण के लिए, फ्लुएंट एनएचबेर्नेट

  • दूसराडेटाबेस स्कीमा खुद का परीक्षण करने के लिए उन्मुख है। उस उद्देश्य के लिए आप एक अच्छी लाइब्रेरी DbUnit देख सकते हैं। आधिकारिक साइट से उद्धरण:

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

अंत में, मैं आपको Martin Fowler's site से आलेख "Evolutionary Database Design" पढ़ने के लिए अत्यधिक अनुशंसा करता हूं। यह थोड़ा पुराना है (2003), लेकिन वास्तव में पढ़ने के लायक है।

+0

+1 ग्रेट उत्तर! मुझे डेटाबेस में निहित डेटा का परीक्षण करने में जरूरी नहीं है (अभी तक)। 'डीबीयूनीट' टिप मैं निश्चित रूप से एक नजदीकी नजर रखूंगा, हालांकि (शायद मैं इसे अपने जेनकींस सर्वर में एकीकृत कर सकता हूं?)। धन्यवाद! – dbm

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