डेटाबेस परीक्षण. ओपन सोर्स डेटाबेस परीक्षण उपकरण डेटाबेस परीक्षण में कठिनाइयाँ

लारवेल आपके डेटाबेस अनुप्रयोगों के परीक्षण के लिए कई उपयोगी उपकरण प्रदान करता है। सबसे पहले, आप PHP हेल्पर विधि का उपयोग कर सकते हैं देखेंइनडेटाबेस()यह जांचने के लिए कि डेटाबेस में डेटा मानदंडों के एक निश्चित सेट से मेल खाता है। उदाहरण के लिए, यदि आप यह जांचना चाहते हैं कि उपयोगकर्ता तालिका में ईमेल फ़ील्ड के बराबर कोई रिकॉर्ड है या नहीं [ईमेल सुरक्षित], आप निम्न कार्य कर सकते हैं:

पीएचपी
{
// एक एप्लिकेशन कॉल किया जा रहा है...

$यह -> देखेंInDatabase("उपयोगकर्ता", [
"ईमेल" => " [ईमेल सुरक्षित]"
]);
}

बेशक, PHP जैसी विधियाँ देखेंइनडेटाबेस()सुविधा के लिए बनाया गया. आप अपने परीक्षणों को बढ़ाने के लिए PHPUnit की किसी भी अंतर्निहित सत्यापन विधि का उपयोग कर सकते हैं।

प्रत्येक परीक्षण के बाद डेटाबेस को रीसेट करना

प्रत्येक परीक्षण के बाद अपने डेटाबेस को रीसेट करना अक्सर उपयोगी होता है ताकि पिछले परीक्षण का डेटा बाद के परीक्षणों को प्रभावित न करे।

माइग्रेशन का उपयोग करना

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

पीएचपी




{
डेटाबेसमाइग्रेशन का उपयोग करें;

/**
*
* @वापसी शून्य
*/

{
$यह -> विज़िट("/")
-> देखें ("लारवेल 5");
}
}

लेन-देन का उपयोग करना

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

पीएचपी

इल्यूमिनेट \ फाउंडेशन \ टेस्टिंग \ विदाउटमिडिलवेयर का उपयोग करें;
इल्यूमिनेट \ फाउंडेशन \ टेस्टिंग \ डेटाबेस माइग्रेशन का उपयोग करें;
इलुमिनेट \ फ़ाउंडेशन \ टेस्टिंग \ डेटाबेस ट्रांज़ैक्शन का उपयोग करें;

क्लास उदाहरणटेस्ट टेस्टकेस का विस्तार करता है
{
डेटाबेसट्रांज़ैक्शन का उपयोग करें;

/**
* बुनियादी कार्यात्मक परीक्षण का एक उदाहरण।
*
* @वापसी शून्य
*/
सार्वजनिक फ़ंक्शन testBasicExample()
{
$यह -> विज़िट("/")
-> देखें ("लारवेल 5");
}
}

डिफ़ॉल्ट रूप से, यह विशेषता लेनदेन में केवल डिफ़ॉल्ट डेटाबेस कनेक्शन को लपेटेगी। यदि आपका एप्लिकेशन एकाधिक डेटाबेस कनेक्शन का उपयोग करता है, तो आपको PHP प्रॉपर्टी को परिभाषित करने की आवश्यकता है $connectionsToTransactआपकी परीक्षण कक्षा में. यह संपत्ति उन पर लेनदेन करने के लिए कनेक्शन नामों की एक सरणी होनी चाहिए।

कारखाने बनाना

परीक्षण करते समय, आपको परीक्षण निष्पादित करने से पहले अपने डेटाबेस में एकाधिक रिकॉर्ड डालने की आवश्यकता हो सकती है। इस डेटा को बनाते समय, लारवेल आपको प्रत्येक कॉलम के मानों को मैन्युअल रूप से निर्दिष्ट करने के बजाय कारखानों का उपयोग करके अपने प्रत्येक एलोक्वेंट मॉडल के लिए विशेषताओं के एक डिफ़ॉल्ट सेट को मैन्युअल रूप से परिभाषित करने की अनुमति देता है। सबसे पहले, अपने एप्लिकेशन में डेटाबेस/फ़ैक्टरी/मॉडलफ़ैक्टरी.php फ़ाइल देखें। प्रारंभ में, इस फ़ाइल में एकल फ़ैक्टरी परिभाषा शामिल है:

पीएचपी $फ़ैक्टरी -> परिभाषित करें (ऐप \ उपयोगकर्ता :: वर्ग, फ़ंक्शन (फ़ेकर \ जेनरेटर $फ़ेकर ) (
स्थिर $ पासवर्ड;

वापस करना[
"नाम" => $नकली -> नाम,
"ईमेल" => $फेकर -> अद्वितीय()-> सुरक्षितईमेल,
"पासवर्ड" => $पासवर्ड ?: $पासवर्ड = बीक्रिप्ट("गुप्त"),
"remember_token" => str_random(10 ),
];
});

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

निःसंदेह, आप अपनी स्वयं की अतिरिक्त फ़ैक्टरियाँ modelFactory.php फ़ाइल में जोड़ सकते हैं। आप बेहतर संगठन के लिए प्रत्येक मॉडल के लिए अतिरिक्त फ़ैक्टरी फ़ाइलें भी बना सकते हैं। उदाहरण के लिए, आप अपने डेटाबेस/फ़ैक्टरी फ़ोल्डर में UserFactory.php और CommentFactory.php फ़ाइलें बना सकते हैं। फ़ैक्टरी फ़ोल्डर की सभी फ़ाइलें लारवेल द्वारा स्वचालित रूप से डाउनलोड की जाएंगी।

फ़ैक्टरी का कहना है

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

पीएचपी $फैक्टरी -> राज्य (ऐप \ उपयोगकर्ता ::वर्ग, "अपराधी", फ़ंक्शन ($नकली) (
वापस करना[
"account_status" => "अपराधी" ,
];
});

कारखानों का उपयोग करना

मॉडल बनाना

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

पीएचपी सार्वजनिक फ़ंक्शन टेस्टडेटाबेस()
{
$user = फ़ैक्टरी(App\User::class)-> make();

आप मॉडलों का एक संग्रह भी बना सकते हैं, या किसी विशिष्ट प्रकार के मॉडल बना सकते हैं:

पीएचपी $उपयोगकर्ता = फ़ैक्टरी(ऐप\उपयोगकर्ता::वर्ग, 3)-> बनाओ();

आप किसी भी मॉडल को भी लागू कर सकते हैं। यदि आप मॉडलों में एकाधिक राज्य परिवर्तन लागू करना चाहते हैं, तो आपको लागू करने के लिए प्रत्येक राज्य का नाम निर्दिष्ट करना होगा:

पीएचपी $उपयोगकर्ता = फ़ैक्टरी(ऐप\उपयोगकर्ता::वर्ग, 5 )-> स्थितियाँ("अपराधी")-> बनाओ();

$उपयोगकर्ता = फ़ैक्टरी (ऐप \ उपयोगकर्ता ::वर्ग, 5 )-> स्थितियाँ("प्रीमियम", "अपराधी")-> बनाओ();

अधिभावी गुण

यदि आप अपने मॉडलों के कुछ डिफ़ॉल्ट मानों को ओवरराइड करना चाहते हैं, तो आप मानों की एक सरणी को PHP विधि में पास कर सकते हैं निर्माण(). केवल निर्दिष्ट मानों को प्रतिस्थापित किया जाएगा, और बाकी को फ़ैक्टरी में निर्दिष्ट मानों के अनुसार सेट किया जाएगा:

पीएचपी $user = फ़ैक्टरी(App\User::class)-> make([
"नाम" => "अबीगैल",
]);

स्थायी मॉडल

पीएचपी विधि बनाएं()न केवल मॉडलों के उदाहरण बनाता है, बल्कि उन्हें एलोक्वेंट PHP पद्धति का उपयोग करके डेटाबेस में सहेजता भी है बचाना() :

पीएचपी सार्वजनिक फ़ंक्शन टेस्टडेटाबेस()
{
// एक App\User इंस्टेंस बनाएं...
$user = फ़ैक्टरी(App\User::class)->create();

// App\User के तीन उदाहरण बनाएं...
$उपयोगकर्ता = फ़ैक्टरी(ऐप\उपयोगकर्ता::वर्ग, 3)->बनाएँ();

// परीक्षणों में मॉडल का उपयोग करना...
}

आप PHP विधि में सरणी पास करके मॉडल विशेषताओं को ओवरराइड कर सकते हैं बनाएं():पीएचपी मेक());
});

रिश्तों और गुणों को तोड़ना

आप अपनी फ़ैक्टरी परिभाषाओं में क्लोजर विशेषताओं का उपयोग करके मॉडलों के साथ संबंध भी जोड़ सकते हैं। उदाहरण के लिए, यदि आप पोस्ट बनाते समय उपयोगकर्ता मॉडल का एक नया उदाहरण बनाना चाहते हैं, तो आप यह कर सकते हैं:

पीएचपी $फ़ैक्टरी ->
वापस करना[
"शीर्षक" => $नकली -> शीर्षक,
"सामग्री" => $फेकर -> पैराग्राफ,
"user_id" => फ़ंक्शन() (
रिटर्न फ़ैक्टरी (ऐप \ उपयोगकर्ता :: वर्ग) -> बनाएं () -> आईडी;
}
];
});

यह क्लोजर उस फ़ैक्टरी के लिए विशेषताओं की एक विशिष्ट सरणी भी प्राप्त करता है जिसमें यह शामिल है:

पीएचपी $फैक्टरी -> परिभाषित करें (ऐप \ पोस्ट ::क्लास, फ़ंक्शन ($फेकर) (
वापस करना[
"शीर्षक" => $नकली -> शीर्षक,
"सामग्री" => $फेकर -> पैराग्राफ,
"user_id" => फ़ंक्शन() (
रिटर्न फ़ैक्टरी (ऐप \ उपयोगकर्ता :: वर्ग) -> बनाएं () -> आईडी;
},
"user_type" => फ़ंक्शन (सरणी $पोस्ट) (
ऐप लौटाएं \ उपयोगकर्ता :: ढूंढें ($पोस्ट [ "user_id" ])-> प्रकार;
}
];
});

: डेटाबेस का परीक्षण और डिबग कैसे करें

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

समस्या को हल करने की कुंजी लेनदेन है। इस तंत्र की एक विशेषता यह है कि लेन-देन पूरा होने तक, आप हमेशा सभी परिवर्तनों को पूर्ववत कर सकते हैं और डेटाबेस को लेन-देन शुरू होने के समय की स्थिति में वापस कर सकते हैं।

एल्गोरिथ्म यह है:

  1. लेन-देन खोलें;
  2. यदि आवश्यक हो, तो हम परीक्षण के लिए प्रारंभिक कार्रवाई करते हैं;
  3. एक इकाई परीक्षण चलाएँ (या केवल वह स्क्रिप्ट चलाएँ जिसका हम परीक्षण करना चाहते हैं);
  4. स्क्रिप्ट का परिणाम जांचें;
  5. लेन-देन रद्द करें, डेटाबेस को उसकी मूल स्थिति में लौटाएँ।

भले ही परीक्षण के तहत कोड में अज्ञात लेनदेन हों, बाहरी रोलबैक अभी भी सभी परिवर्तनों को सही ढंग से रोलबैक करेगा।

यदि हमें SQL स्क्रिप्ट या संग्रहीत प्रक्रिया का परीक्षण करने की आवश्यकता है तो यह अच्छा है। लेकिन क्या होगा यदि हम एक ऐसे एप्लिकेशन का परीक्षण कर रहे हैं जो एक नया कनेक्शन खोलकर डेटाबेस से जुड़ जाता है? इसके अलावा, यदि हम डिबगिंग कर रहे हैं, तो हम संभवतः डिबग किए जा रहे एप्लिकेशन की नजर से डेटाबेस को देखना चाहते हैं। ऐसे में कैसे हो?

वितरित लेनदेन लिखने में जल्दबाजी न करें, एक आसान समाधान है! मानक SQL सर्वर टूल का उपयोग करके, आप एक कनेक्शन पर लेनदेन खोल सकते हैं और दूसरे पर इसे जारी रख सकते हैं।

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

क्रियाओं का क्रम इस प्रकार है:

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

अब एप्लिकेशन का कार्य हमारे नियंत्रण लेनदेन से जुड़ना है, इससे पहले कि वह वह करना शुरू कर दे जो उसे करना चाहिए।

फिर एप्लिकेशन काम करना शुरू कर देता है, जिसमें इसकी संग्रहीत प्रक्रियाओं को चलाना, इसके लेनदेन को खोलना, अलगाव मोड को बदलना शामिल है ... लेकिन हमारा डिबगिंग सत्र इस समय एप्लिकेशन के समान लेनदेन के अंदर होगा।

मान लीजिए कि कोई एप्लिकेशन किसी तालिका को लॉक कर देता है और उसकी सामग्री को संशोधित करना शुरू कर देता है। इस बिंदु पर, कोई अन्य कनेक्शन लॉक की गई तालिका में नहीं देख सकता। लेकिन हमारा डिबगिंग सत्र नहीं! इससे, हम डेटाबेस को उसी तरह देख सकते हैं जैसे एप्लिकेशन देखता है, क्योंकि SQL सर्वर मानता है कि हम एक लेनदेन में हैं।

जबकि अन्य सभी सत्रों के लिए, एप्लिकेशन की गतिविधियां लॉक द्वारा छिपी रहती हैं...

हमारा डिबगिंग सत्र चुपचाप तालों से गुजर रहा है (सर्वर को लगता है कि ये हमारे अपने ताले हैं)!

या कल्पना करें कि एप्लिकेशन स्नैपशॉट मोड में अपने पंक्ति संस्करणों के साथ काम करना शुरू कर देता है। इन संस्करणों को कैसे देखें? यह तब भी संभव है जब आप एक सामान्य लेन-देन से जुड़े हों!

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

आप पाठ्यक्रम में इसके बारे में और अधिक जान सकते हैं।

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

यह स्थिति इस तथ्य के कारण है कि कई डेटाबेस वाणिज्यिक हैं और उनके साथ काम करने के लिए उपकरणों के सभी आवश्यक सेट उस संगठन द्वारा प्रदान किए जाते हैं जिसने इस डेटाबेस को विकसित किया है। हालाँकि, भविष्य में NoSQL और MySQL के विभिन्न फोर्क्स की लोकप्रियता में वृद्धि इस स्थिति को बदल सकती है।

डेटाबेस बेंचमार्क

डेटाबेस बेंचमार्क बड़े डेटा स्ट्रीम वाले डेटाबेस के तनाव परीक्षण के लिए एक .NET उपकरण है। एप्लिकेशन दो मुख्य परीक्षण परिदृश्य निष्पादित करता है: अनुक्रमिक या यादृच्छिक कुंजियों के साथ बड़ी संख्या में यादृच्छिक रूप से उत्पन्न रिकॉर्ड सम्मिलित करना, और उनकी कुंजियों द्वारा क्रमबद्ध सम्मिलित रिकॉर्ड पढ़ना। इसमें डेटा उत्पादन क्षमताओं, ग्राफिकल रिपोर्ट और संभावित प्रकार की रिपोर्ट को कॉन्फ़िगर करने की एक विस्तृत श्रृंखला है।

समर्थित डेटाबेस: MySQL, SQL सर्वर, PostgreSQL, MongoDB और कई अन्य।

डेटाबेस राइडर

डेटाबेस राइडर को परीक्षण की अनुमति देने के लिए डिज़ाइन किया गया है डेटाबेस थायह इकाई परीक्षण से अधिक कठिन नहीं था। यह टूल पर आधारित है आर्किलियनऔर इसलिए जावा प्रोजेक्ट में केवल DBUnit के लिए निर्भरता की आवश्यकता होती है। एनोटेशन का उपयोग करना भी संभव है, जैसे किJUnit, के साथ एकीकरण सी.डी.आईइंटरसेप्टर, JSON, YAML, XML, XLS और CSV समर्थन के माध्यम से, समान एनोटेशन के माध्यम से कॉन्फ़िगरेशन या वाईएमएलफ़ाइलें, के साथ एकीकरण खीरा, एकाधिक डेटाबेस के लिए समर्थन, डेटासेट में अस्थायी प्रकारों के साथ काम करना.

डीबीफ़िट

DbFit - विकास ढांचा डेटाबेसपरीक्षण के माध्यम से. इस पर लिखा गया था फिटनेस, जो एक बड़े समुदाय के साथ एक परिपक्व और शक्तिशाली उपकरण है। परीक्षण तालिकाओं के आधार पर लिखे जाते हैं, जो उन्हें नियमित परीक्षणों की तुलना में अधिक पठनीय बनाता है। इकाई परीक्षण. आप उन्हें कमांड लाइन का उपयोग करके, या सीआई टूल का उपयोग करके आईडीई से चला सकते हैं।

समर्थित डेटाबेस: Oracle, SQL सर्वर, MySQL, DB2, PostgreSQL, HSQLDB और डर्बी।

dbस्ट्रेस

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

समर्थित आधार: सभी JDBC के समान।

डीबीयूनिट

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

समर्थित आधार: सभी JDBC के समान।

डीबी परीक्षण संचालित

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

समर्थित डेटाबेस: SQL सर्वर, Oracle।

हैमरडीबी

हैमरडीबी - लोड और बेंचमार्क परीक्षण उपकरण डेटाबेस।यह एक स्वचालित एप्लिकेशन है जो बहु-थ्रेडेड भी है और इसमें गतिशील स्क्रिप्ट का उपयोग करने की क्षमता है। jav खुला स्रोत और तुलना उपकरण।यह गतिशील स्क्रिप्ट के समर्थन के साथ स्वचालित, बहु-थ्रेडेड और एक्स्टेंसिबल है।

जेडीबीसीस्लिम

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

समर्थित डेटाबेस: Oracle, SQL सर्वर, PostgreSQL, MySQL और अन्य।

जेडीबीडीटी (जावा डेटाबेस डेल्टा परीक्षण)

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

समर्थित डेटाबेस: PostgreSQL, MySQL, SQLite, Apache डर्बी, H2 और HSQLDB।

एनबीआई

एनबीआई अनिवार्य रूप से एनयूनिट के लिए एक ऐडऑन है और इसका उद्देश्य अधिक है व्यापारिक सूचनागोले. रिलेशनल डेटाबेस के साथ काम करने के अलावा, इसके साथ काम करना संभव है ओलापप्लेटफ़ॉर्म (विश्लेषण सेवाएँ, मोंड्रियन, आदि), ईटीएलऔर रिपोर्टिंग सिस्टम(माइक्रोसॉफ्ट टेक्नोलॉजीज)। इस ढांचे का मुख्य लक्ष्य XML पर आधारित घोषणात्मक दृष्टिकोण का उपयोग करके परीक्षण बनाना है। आपको C# में परीक्षण लिखने और परीक्षणों को संकलित करने के लिए विज़ुअल स्टूडियो का उपयोग करने की आवश्यकता नहीं होगी। आपको बस एक xml फ़ाइल बनाने और एनबीआई के साथ व्याख्या करने की आवश्यकता है, फिर आप परीक्षण चला सकते हैं। एनयूनिट के अलावा, आप अन्य परीक्षण ढांचे में भी पोर्ट कर सकते हैं।

समर्थित डेटाबेस: SQL सर्वर, MySQL, PostgreSQL, Neo4j, MongoDB, DocumentDB और अन्य।

NoSQLMap

स्थिरता का ऑडिट करने के लिए पायथन में NoSQLMap लिखा गया है एसक्यूएल इंजेक्षनऔर डेटाबेस कॉन्फ़िगरेशन में विभिन्न कारनामे। और इस प्रकार के हमले के लिए NoSQL डेटाबेस का उपयोग करके एक वेब एप्लिकेशन की स्थिरता का आकलन करना भी। एप्लिकेशन का मुख्य उद्देश्य MongoDB सर्वर के परीक्षण के लिए एक उपकरण प्रदान करना हैइस मिथक को दूर करना कि NoSQL एप्लिकेशन SQL इंजेक्शन से प्रतिरक्षित हैं।

समर्थित डेटाबेस: MongoDB।

नोएसक्यूएलयूनिट

NoSQLUnit जावा अनुप्रयोगों में परीक्षण लिखने के लिए एक JUnit एक्सटेंशन है जो NoSQL डेटाबेस का उपयोग करता है। लक्ष्य नोएसक्यूएलयूनिट- NoSQL के जीवन चक्र का प्रबंधन करें। यह टूल आपको डेटाबेस को ज्ञात स्थिति में परीक्षण के तहत रखने में मदद करेगा और NoSQL अनुप्रयोगों के लिए परीक्षण लिखने के तरीके को मानकीकृत करेगा।

समर्थित डेटाबेस: MongoDB, Cassandra, HBase, Redis और Neo4j।

रूबी-पीएलएसक्यूएल-स्पेक

रूबी-पीएलएसक्यूएल-स्पेक रूबी के साथ यूनिट परीक्षण पीएल/एसक्यूएल के लिए एक रूपरेखा है। यह दो अन्य पुस्तकालयों पर आधारित है:

  • रूबी-पीएलएसक्यूएल - पीएल/एसक्यूएल प्रक्रियाओं को कॉल करने के लिए रूबी एपीआई;
  • आरएसपीईसी बीडीडी के लिए एक ढांचा है।

समर्थित डेटाबेस: Oracle

सेलाइट

सेलाइट सेलेनियम परिवार का एक विस्तार है। मुख्य बात एक डेटाबेस पर आधारित होना है SQLite, आवेदन से अलग। आप वेब सर्वर त्रुटियों का पता लगाने और परीक्षणों के बीच स्क्रिप्ट में गड़बड़ी करने, स्नैपशॉट के साथ काम करने आदि में सक्षम होंगे।

समर्थित डेटाबेस: SQLite, MySQL, PostgreSQL।

sqlmap

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

समर्थित डेटाबेस: MySQL, Oracle, PostgreSQL, SQL सर्वर, DB2 और अन्य।

    ओपन सोर्स डेटाबेस परीक्षण उपकरण

    https://website/wp-content/uploads/2018/01/data-base-testing-150x150.png

    डेटाबेस परीक्षण किसी एप्लिकेशन के अन्य भागों के परीक्षण जितना सामान्य नहीं है। कुछ परीक्षणों में, डेटाबेस का पूरी तरह से मजाक उड़ाया जाता है। इस लेख में, मैं रिलेशनल और NoSQL डेटाबेस के परीक्षण के लिए टूल का विश्लेषण करने का प्रयास करूंगा। यह स्थिति इस तथ्य के कारण है कि कई डेटाबेस वाणिज्यिक हैं और उनके साथ काम करने के लिए उपकरणों के सभी आवश्यक सेट की आपूर्ति […]

1) लक्ष्य और उद्देश्य …………………………………………………… 3

2) डेटाबेस का विवरण ……………………………………………… 4

3) डेटाबेस के साथ कार्य करना ……………………………………………… 6

4) डेटाबेस का लोड परीक्षण ………………………………11

5) निष्कर्ष …………………………………………………………..15

6) साहित्य …………………………………………………………..16

लक्ष्य और उद्देश्य

लक्ष्य:विचर 3 गेम के लिए अमृत का एक डेटाबेस बनाएं, जिसमें अमृत के प्रकार, उनके गुण, वे किस चीज से बने हैं, वे कहां पाए जा सकते हैं और उन राक्षसों के बारे में जानकारी होगी जिनके खिलाफ उनका उपयोग किया जा सकता है। इस डेटाबेस के विरुद्ध अनुकूलित क्वेरीज़ बनाएं और लोड के लिए इसका परीक्षण करें।

कार्य:

· कम से कम 5 इकाइयों के साथ MYSQL वर्कबेंच में एक डेटाबेस स्कीमा बनाएं। इन संस्थाओं और उनके संबंधों का वर्णन करें।

इस डेटाबेस के उपयोग का वर्णन करें, मुख्य प्रश्नों का वर्णन करें, उनके निष्पादन समय को देखें और निष्कर्ष निकालें

डीबी अनुकूलन

अपाचे-जेएमटर के साथ लोड परीक्षण करें। इसके लिए ग्राफ़ बनाने के लिए एक्सटेंशन का उपयोग करें।

डेटाबेस विवरण

पाठ्यक्रम कार्य निर्मित Witcher1 डेटाबेस का उपयोग करता है, जिनमें से मुख्य इकाइयाँ तालिकाएँ हैं:

चित्र.1 Witcher1 डेटाबेस का योजनाबद्ध प्रतिनिधित्व

सामग्री तालिका में खेल में अमृत बनाने के लिए आवश्यक सामग्रियां शामिल हैं, जिनका वर्णन अमृत तालिका में किया गया है। अमृत ​​बनाने के लिए कई सामग्रियों का उपयोग किया जाता है, लेकिन उनमें से प्रत्येक अपने अमृत के लिए अद्वितीय है। यही कारण है कि इन तालिकाओं के बीच 1: n (एक-से-अनेक) संबंध स्थापित किया गया था, जिसे डेटाबेस आरेख (चित्र 1) में दिखाया गया है।

इंग्रिडिएंट्स तालिका में अवयवों के नाम (डिस्क्रिप्शन) और आप इस घटक को कहां पा सकते हैं (व्हेयरफाइंड) के बारे में भी जानकारी शामिल है। आईडीएलिक्सिर कॉलम इंग्रिडिएंट्स और एलिक्सिर टेबल के लिए लिंकिंग कॉलम है।

अमृत ​​तालिका में किसी विशेष अमृत का उपयोग करने के तरीके और उस अमृत के नाम के बारे में जानकारी होती है। यह तालिका अन्य तालिकाओं के लिए महत्वपूर्ण है.

स्थान तालिका में इस बात की जानकारी होती है कि कोई विशेष घटक वास्तव में कहाँ या किस शहर के पास पाया जा सकता है।

आईएल तालिका में किसी दिए गए क्षेत्र में किसी विशेष घटक को कहां और कैसे पाया जाए और यह क्या है, इसके बारे में समग्र जानकारी शामिल है। इंग्रिडिएंट्स और लोकेशन टेबल के बीच एक n:m (मैनी-टू-मैनी) संबंध स्थापित किया गया है, क्योंकि कई अवयव कई स्थानों पर पाए जा सकते हैं, जैसा कि आईएल चाइल्ड टेबल में दर्शाया गया है।

राक्षस तालिका में राक्षसों के प्रकारों के बारे में जानकारी शामिल है

"विचर 3", किसी विशेष राक्षस और उनके विशिष्ट नामों को कैसे पहचाना जाए, इसके बारे में।

एमएल टेबल स्थान और राक्षस तालिकाओं के एन: एम संघ की एक चाइल्ड टेबल है और इसमें इस विशेष राक्षस को कैसे हराया जाए और इसके लिए कौन से अमृत का उपयोग किया जा सकता है, इसके बारे में विशेष जानकारी शामिल है, जिसमें विशेष जादूगर संकेत भी शामिल हैं, साथ ही किस क्षेत्र में और किन संकेतों से इस विशेष प्रकार के राक्षस को देखना है।

डेटाबेस के साथ कार्य करना

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

· किसी विशिष्ट राक्षस को कैसे खोजा जाए, इसके लिए एक अनुरोध।

इस क्वेरी में JOIN कीवर्ड शामिल होगा, जिसकी बदौलत Witcher1 डेटाबेस के ML और मॉन्स्टर टेबल तक पहुंचा जा सकेगा।

यह अनुरोध इस प्रकार दिखेगा:

ml राक्षसों पर राक्षसों से जुड़ें.idMonsters=ml.idMonsters;

क्वेरी निष्पादित करने के बाद, हमें आउटपुट के रूप में एक काफी बड़ी तालिका मिलेगी, जो दो तालिकाओं को जोड़ने का परिणाम है। ताकि आउटपुट तालिका इतनी बड़ी न हो, आप निर्दिष्ट कर सकते हैं कि किस राक्षस पर जानकारी प्रदर्शित करनी है। यानी, उदाहरण के लिए, हिमा के लिए, क्वेरी इस तरह दिखेगी:

राक्षस.राक्षसनाम, राक्षस.राक्षस विवरण,

ml.DiscriptionHowFind, ml.idLocations

ml राक्षसों पर राक्षसों से जुड़ें.idMonsters=ml.idMonsters

जहां राक्षस.राक्षसनाम='हाइम';

यह या वह आईडी किस मॉन्स्टर से मेल खाती है, आप मॉन्स्टर्स या एमएल टेबल पर एक क्वेरी से पता लगा सकते हैं। अनुरोध इस तरह दिखेंगे:

चयन करें चयन करें

आईडीमॉन्स्टर्स, मॉन्स्टर्सनाम आईडीमॉन्स्टर्स, मॉन्स्टर्सनाम

एमएल से; राक्षसों से;

किसी मिलान की जांच करने के लिए, आप एमएल और मॉन्स्टर्स दोनों तालिकाओं को पहले idMonsters द्वारा जोड़कर क्वेरी कर सकते हैं।

ml.idराक्षस, राक्षस.राक्षसनाम

एमएल पर राक्षसों से जुड़ें

ml.idMonsters=monsters.idMonsters

राक्षसों द्वारा आदेश.idMonsters;

· एक अनुरोध कि इस राक्षस के लिए कौन सा अमृत उपयुक्त है।

इस क्वेरी को लागू करने के लिए, JOIN का उपयोग किया जाएगा। क्वेरी दो तालिकाओं अमृत और राक्षसों को संबोधित की जाएगी और इसमें राक्षस के खिलाफ लड़ाई में कब और कौन सा अमृत पीना है, इसके बारे में जानकारी होगी:

राक्षस.राक्षसनाम, अमृत.अमृतनाम, अमृत.अमृतविवरण

अमृत ​​राक्षसों से जुड़ें

elixirs.idElixirs=monsters.idElixirs;

· इस बारे में प्रश्न करें कि कौन सा घटक किसी विशेष इलाके में है।

इस क्वेरी को लागू करने के लिए, JOIN का उपयोग किया जाएगा। क्वेरी दो तालिकाओं इंग्रिडिएंट्स और स्थानों को संदर्भित करेगी और इसमें यह जानकारी होगी कि कौन सा घटक किस स्थान पर स्थित है और इसके प्रकार के बारे में जानकारी होगी:

इंग्रिडिएंट्स.डिस्क्रिप्शन, स्थान.डिस्क्रिप्शन, इंग्रिडिएंट्स.व्हेयरफाइंड

अवयव स्थानों पर शामिल हों

सामग्री.idIngridients=locations.idIngridients

सामग्री के अनुसार ऑर्डर करें। विवरण;

· अद्यतन अनुरोध

हम इस क्वेरी को हाइम नामक राक्षस तालिका में एक राक्षस के लिए लागू करते हैं। मान लीजिए कि हम इसका नाम बदलकर 'हिम' करना चाहते हैं:

दानव

सेट राक्षसों का नाम='उसे'

जहां idMonsters=1;

लेकिन, चूंकि हाइम अंग्रेजी संस्करण में सही है, हम सब कुछ वापस लौटा देंगे:

दानव

सेट मॉन्स्टर्सनाम='हाइम'

जहां idMonsters=1;

अंक 2। अद्यतन क्वेरी लागू करना

· एकत्रीकरण अनुरोध. गिनती और गिनती(अलग)

COUNT फ़ंक्शन दी गई तालिका में गैर-रिक्त पंक्तियों (आंतरिक रूप से गैर-शून्य) की संख्या की गणना करता है। COUNT में 1 तालिका के लिए उपयोग किए जाने पर पंक्तियों की संख्या आउटपुट करने के लिए एक अनुकूलित संस्करण है। उदाहरण के लिए:

चित्र 3. अमृत, राक्षस तालिका और राक्षस अमृत तालिका में पंक्तियों की गिनती।

COUNT(DISTINCT) फ़ंक्शन का उपयोग तालिकाओं में गैर-दोहराई जाने वाली पंक्तियों की संख्या प्रदर्शित करने के लिए किया जाता है और यह फ़ंक्शन के COUNT परिवार का अधिक अनुकूलित संस्करण है:

चित्र.4. राक्षस तालिका में गैर-आवर्ती अमृत की गिनती।

· हटाएँ फ़ंक्शन.

INSERT का उपयोग करके Elixirs तालिका में एक और पंक्ति जोड़ें:

अमृत ​​मूल्यों में सम्मिलित करें (6,'फॉरडिलीट','डिस्क्रिप्शनडिलीट');

चित्र.5. Elixirs तालिका में एक पंक्ति जोड़ना।

अब हम इस पंक्ति को हटाने का अनुरोध करेंगे, क्योंकि अमृत की कोई आवश्यकता नहीं है, जो राक्षसों के खिलाफ लड़ाई में किसी भी तरह से मदद नहीं करेगा:

अमृत ​​से हटाएं जहां idElixirs=6;

चित्र 6. जोड़ी गई पंक्ति हटाएँ.

डेटाबेस लोड परीक्षण

अब जब क्वेरीज़ निष्पादित हो गई हैं और डेटाबेस पहुंच स्थापित हो गई है, तो इसका कई तरीकों से परीक्षण किया जा सकता है:

· समय के साथ प्रतिक्रिया समय - यह परीक्षण प्रत्येक अनुरोध के लिए जानकारी प्रदर्शित करता है, इसका औसत प्रतिक्रिया समय मिलीसेकंड में प्रदर्शित करता है।

· रिस्पांस टाइम डिस्ट्रीब्यूशन या रिस्पांस टाइम डिस्ट्रीब्यूशन - यह चेक एक विशिष्ट समय अंतराल में प्रतिक्रियाओं की संख्या प्रदर्शित करता है जिसके दौरान अनुरोध निष्पादित किया गया था।

· प्रतिक्रिया समय प्रतिशत या प्रतिक्रिया समय प्रतिशत - यह परीक्षण प्रतिक्रिया समय मानों के लिए प्रतिशत प्रदर्शित करता है। ग्राफ़ पर, X-अक्ष प्रतिशत होगा, Y-अक्ष प्रतिक्रिया समय होगा।

सबसे प्रशंसनीय परीक्षणों के लिए, हम कुछ निश्चित करते हैं

विकल्प:

चित्र 7. परीक्षण विकल्प

थ्रेड्स की संख्या (उपयोगकर्ता) - आभासी उपयोगकर्ताओं की संख्या। हमारे मामले में, हम अपने डेटाबेस को यथासंभव लोड करने के लिए 1000 डालेंगे।

रैंप-अप अवधि - वह अवधि जिसके दौरान सभी उपयोगकर्ता शामिल होंगे।

हम सभी जॉइन अनुरोधों को उनके प्रदर्शन के लिए जांचेंगे जब वे एक साथ कई उपयोगकर्ताओं द्वारा सक्रिय किए जाएंगे।

अंतिम 3 बिंदु उन चेक के प्लॉटर हैं जिनके द्वारा हम डेटाबेस का परीक्षण करेंगे।

·
समय के साथ प्रतिक्रिया समय की जाँच करना

चित्र 7. परीक्षण के दौरान क्वेरी निष्पादन का परिणाम समय के साथ प्रतिक्रिया समय

जैसा कि आप ग्राफ़ से देख सकते हैं, सबसे कठिन अनुरोध "राक्षस और स्थान" था और इसका जवाब देने में सबसे अधिक समय लगा। आप कंसोल में अनुरोध निष्पादित करके अनुरोध के लंबे निष्पादन का कारण सत्यापित कर सकते हैं। इस देरी का मुख्य कारण यह है कि मॉन्स्टर्स टेबल और एमएल टेबल दोनों में राक्षसों की लंबी व्याख्याएं हैं या उन्हें कहां पाया जाए। इस वजह से, अनुरोध को काफी लंबे समय तक निष्पादित किया जाता है।

·
इंतिहान प्रतिक्रिया समय वितरण

चित्र.8. परीक्षण के दौरान क्वेरी निष्पादन का परिणाम प्रतिक्रिया समय वितरण.

इस ग्राफ़ से, हम यह निष्कर्ष निकाल सकते हैं कि एक ही समय अवधि में हमारे प्रत्येक अनुरोध के लिए प्रतिक्रियाओं की संख्या समान है।

·
प्रतिक्रिया समय प्रतिशत की जाँच करना

y-अक्ष निष्पादन समय दिखाता है, और भुज कुल संख्या का प्रतिशत दिखाता है। ग्राफ़ के अनुसार, हम यह निष्कर्ष निकाल सकते हैं कि 90% अनुरोधों को 0 से 340 मिलीसेकंड के समय अंतराल में निष्पादित किया जाता है, और 5% से 15% तक अनुरोधों की संख्या रैखिक रूप से बढ़ जाती है, और फिर बहुत कम वृद्धि कारक के साथ तेजी से बढ़ती है।

शेष 10% 340 मिलीसेकंड और 700 मिलीसेकंड के बीच चलता है, जो बताता है कि डेटाबेस भारी लोड के अंतर्गत है।

निष्कर्ष

इस पाठ्यक्रम कार्य में सभी कार्य पूर्ण कर लिये गये। डेटाबेस को डिज़ाइन किया गया, डेटा से भरा गया, प्रश्नों के रूप में इसके उपयोग की मुख्य संभावनाएं और उनके परिणाम दिखाए गए।

अंत में, इसके परिणामों का परीक्षण और विश्लेषण किया गया, जिसके बाद निष्कर्ष निकाले गए।

यह ध्यान दिया जाना चाहिए कि डेटाबेस स्वयं केवल एक प्रशिक्षण के रूप में बनाया गया था, इसलिए यह इतना बड़ा नहीं है।

एक अन्य महत्वपूर्ण विशेषता सुरक्षा है: पासवर्ड, यदि ऐसी कोई तालिका बनाई गई है, तो उसे एन्क्रिप्टेड रूप में संग्रहीत किया जाना चाहिए और अनधिकृत पहुंच से संरक्षित किया जाना चाहिए।

साहित्य

1. http://phpclub.ru/mysql/doc/- इंटरनेट संसाधन "MySQL - संदर्भ मैनुअल"

2. श्वार्ट्ज बी., ज़ैतसेव पी., तकाचेंको वी. एट अल. - MySQL। प्रदर्शन अनुकूलन (दूसरा संस्करण)

3. थाल्मन एल., किंडल एम., बेल सी. - "MySQL पर आधारित सिस्टम की उच्च उपलब्धता सुनिश्चित करना"

4. आंद्रेज सपकोव्स्की - "द विचर (बड़ा संग्रह)", पृष्ठों की संख्या: 571

5. सीडी प्रोजेक्ट रेड, जीओजी कॉम। द विचर 3: वाइल्ड हंट।


ऐसी ही जानकारी.


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

क्वेरी उदाहरण: किसी विशेष छात्र द्वारा उधार ली गई पुस्तकों की सूची प्रदर्शित करें। अंतिम नाम को पैरामीटर के रूप में सेट किया गया है.

क्वेरी उदाहरण: किसी विशिष्ट लेखक की पुस्तकों की एक सूची प्रदर्शित करें, जिसमें यह दर्शाया जाए कि वे पुस्तकालय में कहाँ संग्रहीत हैं। लेखक का नाम पैरामीटर के रूप में सेट करें.

अनुरोध उदाहरण: लाइब्रेरी कार्ड की संख्या से निर्धारित करें कि संबंधित छात्र किस कक्षा में पढ़ रहा है और उसका कक्षा शिक्षक कौन है।

चावल। 15. अनुरोध 3. "लाइब्रेरी कार्ड नंबर से एक छात्र को ढूंढें और निर्धारित करें कि वह किस कक्षा में पढ़ रहा है"

अनुरोध उदाहरण: छात्र के पूरे नाम से निर्धारित करें कि देनदार किस कक्षा में पढ़ रहा है और उसका कक्षा शिक्षक कौन है।

रिकॉर्ड के साथ काम करने की सुविधा के लिए विभिन्न तालिकाएँ बनाई गईं, जिनकी मदद से आप जानकारी देखने, अद्यतन करने और बदलने के लिए किसी भी तालिका को खोल सकते हैं। बटन का रूप चित्र में दिखाया गया है। 17.

चावल। 17. डेटाबेस बटन प्रपत्र

निष्कर्ष

अंतिम योग्यता कार्य वास्तविक विषय "ग्रामीण स्कूल पुस्तकालय के लिए एक सूचना प्रणाली का विकास" पर किया गया था।

सेराटोव क्षेत्र, फेडोरोव्स्की जिले, एमओयू माध्यमिक विद्यालय, सोलनेचनी गांव के स्कूल पुस्तकालय के लिए एक सूचना प्रणाली विकसित करने के लिए स्नातक परियोजना का लक्ष्य हासिल कर लिया गया है।

स्नातक परियोजना के कार्यान्वयन के दौरान, निम्नलिखित कार्य हल किए गए:

पुस्तकालय को शैक्षिक वातावरण का एक तत्व मानें;

बच्चों के पढ़ने के समर्थन और विकास की सरकारी अवधारणा का अध्ययन करना;

शैक्षणिक संस्थानों के पुस्तकालयों की कार्य प्रौद्योगिकियों का विश्लेषण किया जाता है;

आयोजित सर्वेक्षण के आधार पर विषय क्षेत्र का वर्णन किया गया है;

-एक ग्रामीण स्कूल के पुस्तकालय के लिए सूचना प्रणाली के विकास के लिए संदर्भ की शर्तें विकसित की गईं;

- स्कूल पुस्तकालय का एक कार्यात्मक मॉडल बनाया गया था;

- इनपुट और आउटपुट सूचना प्रवाह का विवरण;

DBMS पर आधारित एक सूचना प्रणाली विकसित की गईएसीसीएस एस;

- विकसित रिलेशनल डेटाबेस का परीक्षण किया गया।

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

टीओआर के आधार पर, ग्रामीण स्कूल पुस्तकालय की गतिविधि का एक कार्यात्मक मॉडल विकसित किया गया है। कार्यात्मक मॉडल, बदले में, पुस्तकालय के काम में गैर-स्वचालित क्षेत्रों की पहचान करने के लिए सामग्री के रूप में कार्य करता है।

विकास परिवेश के रूप में डीबीएमएस का चुनाव ग्रामीण पुस्तकालय की तकनीकी क्षमताओं द्वारा निर्धारित किया गया था। परिणामस्वरूप, DBMS पर आधारित पहुँचसूचना प्रणाली का मूल - डेटाबेस - बनाया गया है।

उपयोगकर्ताओं की सुविधा के लिए, एक पुश-बटन इंटरफ़ेस विकसित किया गया है।

डेटाबेस के परीक्षण के लिए संबंधित क्वेरीज़ विकसित की गई हैं। इन अनुरोधों की पूर्ति हमें ग्रामीण स्कूल पुस्तकालय के लिए सूचना प्रणाली के सामान्य प्रदर्शन का आकलन करने की अनुमति देती है।

प्रतिक्रिया दें संदर्भ