मैं शायद आपको हमारे अनुभव का स्वाद दे सकता हूं जब हमने यूनिट-स्तरीय प्रक्रिया को यूनिट परीक्षण करना शुरू किया जिसमें "व्यापार तर्क" एसक्यूएल संचालन का एक टन शामिल था।
हमने पहली बार एक अमूर्त परत बनाई जिसने हमें किसी भी उचित डेटाबेस कनेक्शन में "स्लॉट" करने की अनुमति दी (हमारे मामले में, हमने बस एक ओडीबीसी-प्रकार कनेक्शन का समर्थन किया)।
एक बार इस स्थान पर था, हम तो हमारे कोड में कुछ इस तरह करने में सक्षम थे (हम सी ++ में काम करते हैं, लेकिन मुझे यकीन है कि आप विचार प्राप्त कर रहा हूँ):।
GetDatabase() ExecuteSQL (" INSERT INTO foo (blah, blah) ")
सामान्य रन समय पर, GetDatabase() एक ऑब्जेक्ट वापस करेगा जो हमारे सभी एसक्यूएल (क्वेरी सहित) को ओडीबीसी के माध्यम से सीधे डेटाबेस में खिलाएगा।
फिर हमने इन-मेमोरी डेटाबेस को देखना शुरू कर दिया - लंबे समय तक सबसे अच्छा SQLite लगता है। (http://www.sqlite.org/index.html)। यह सेट अप करने और उपयोग करने के लिए उल्लेखनीय रूप से सरल है, और हमें subclass और GetDatabase() को एसक्यूएल को एक इन-मेमोरी डेटाबेस में अग्रेषित करने की अनुमति देता है जो प्रत्येक परीक्षण के लिए बनाया और नष्ट किया गया था।
हम अभी भी इसके शुरुआती चरणों में हैं, लेकिन यह अब तक अच्छा दिख रहा है, हालांकि हमें यह सुनिश्चित करना होगा कि हम आवश्यक तालिकाओं को तैयार करें और परीक्षण डेटा के साथ उन्हें पॉप्युलेट करें - हालांकि हमने वर्कलोड को कम कर दिया है यहां कुछ हद तक सहायक कार्यों का एक सामान्य सेट बनाकर जो हमारे लिए यह सब कुछ कर सकता है।
कुल मिलाकर, इसने हमारी टीडीडी प्रक्रिया के साथ काफी मदद की है, क्योंकि कुछ बग को ठीक करने के लिए काफी निर्दोष परिवर्तनों की तरह लग रहा है, जो आपके सिस्टम के अन्य (मुश्किलों का पता लगाने) क्षेत्रों पर काफी अजीब प्रभाव डाल सकता है - बहुत प्रकृति के कारण एसक्यूएल/डेटाबेस।
जाहिर है, हमारे अनुभव एक सी ++ विकास पर्यावरण के आसपास केंद्रित हैं, हालांकि मुझे यकीन है कि आप शायद PHP/पायथन के तहत कुछ ऐसा ही काम कर सकते हैं।
उम्मीद है कि इससे मदद मिलती है।
मुझे पता है कि यह पुराना है लेकिन डीबी में पहले से एक डुप्लिकेट टेबल बनाने के बारे में क्या है। इस तरह आप डीबी कॉल काम की पुष्टि कर सकते हैं? – bretterer
मैं PHP के पीडीओ का उपयोग डेटाबेस के लिए सबसे कम स्तर तक पहुंच के रूप में कर रहा हूं, जिस पर मैंने एक इंटरफ़ेस निकाला था। फिर मैंने इसके ऊपर एक अनुप्रयोग जागरूक डेटाबेस परत बनाया। यह वह परत है जिसमें सभी कच्चे एसक्यूएल प्रश्न और अन्य जानकारी होती है। शेष एप्लिकेशन इस उच्च-स्तरीय डेटाबेस के साथ इंटरैक्ट करता है। मुझे यह इकाई परीक्षण के लिए बहुत अच्छी तरह से काम करने के लिए मिला है; मैं अपने एप्लिकेशन पेजों का परीक्षण करता हूं कि वे एप्लिकेशन डेटाबेस के साथ कैसे बातचीत करते हैं। मैं अपने एप्लिकेशन डेटाबेस का परीक्षण करता हूं कि यह पीडीओ के साथ कैसे इंटरैक्ट करता है। मुझे लगता है कि पीडीओ बिना बग के काम करता है। स्रोत कोड: http://manx.codeplex.com – legalize
@bretterer - एक डुप्लिकेट तालिका बनाना एकीकरण परीक्षण के लिए अच्छा है। यूनिट परीक्षण के लिए आप आम तौर पर एक मॉक ऑब्जेक्ट का उपयोग करेंगे जो आपको डेटाबेस की परवाह किए बिना कोड की इकाई का परीक्षण करने की अनुमति देगा। – BornToCode