Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश के साथ परीक्षण बैश

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

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

बैश ऑटोमेटेड टेस्टिंग सिस्टम (बैट्स) डेवलपर्स को बैश स्क्रिप्ट और लाइब्रेरी लिखने में सक्षम बनाता है, जो जावा, रूबी, पायथन और अन्य डेवलपर्स द्वारा अपने बैश कोड में उपयोग की जाने वाली समान प्रथाओं को लागू करते हैं।

BATS इंस्टॉल करना

BATS GitHub पेज में इंस्टॉलेशन निर्देश शामिल हैं। दो BATS सहायक पुस्तकालय हैं जो अधिक शक्तिशाली अभिकथन प्रदान करते हैं या BATS द्वारा उपयोग किए जाने वाले टेस्ट एनीथिंग प्रोटोकॉल (TAP) आउटपुट स्वरूप को ओवरराइड करने की अनुमति देते हैं। इन्हें एक मानक स्थान पर स्थापित किया जा सकता है और सभी लिपियों द्वारा प्राप्त किया जा सकता है। परीक्षण किए जा रहे स्क्रिप्ट या लाइब्रेरी के प्रत्येक सेट के लिए Git रिपॉजिटरी में BATS और उसके सहायक पुस्तकालयों के पूर्ण संस्करण को शामिल करना अधिक सुविधाजनक हो सकता है। इसे गिट सबमॉड्यूल . का उपयोग करके पूरा किया जा सकता है प्रणाली।

निम्न आदेश BATS और उसके सहायक पुस्तकालयों को परीक्षण . में स्थापित करेंगे एक गिट भंडार में निर्देशिका।

git submodule init
git submodule add https://github.com/sstephenson/bats test/libs/bats
git submodule add https://github.com/ztombol/bats-assert test/libs/bats-assert
git submodule add https://github.com/ztombol/bats-support test/libs/bats-support
git add .
git commit -m 'installed bats'

Git रिपॉजिटरी को क्लोन करने और उसके सबमॉड्यूल को एक ही समय में इंस्टॉल करने के लिए,

--recurse-submodules का उपयोग करें। गिट क्लोन . को फ़्लैग करें ।

प्रत्येक BATS परीक्षण स्क्रिप्ट को चमगादड़ . द्वारा निष्पादित किया जाना चाहिए निष्पादन योग्य। यदि आपने अपने स्रोत कोड रेपो के परीक्षण/libs . में BATS स्थापित किया है निर्देशिका, आप इसके साथ परीक्षण का आह्वान कर सकते हैं:

./test/libs/bats/bin/bats <path to test script>

वैकल्पिक रूप से, अपनी प्रत्येक BATS परीक्षण स्क्रिप्ट की शुरुआत में निम्नलिखित जोड़ें:

#!/usr/bin/env ./test/libs/bats/bin/bats
load 'libs/bats-support/load'
load 'libs/bats-assert/load'

और chmod +x <परीक्षण स्क्रिप्ट का पथ> . यह क) उन्हें ./test/libs/bats में स्थापित BATS के साथ निष्पादन योग्य बना देगा और बी) इन सहायक पुस्तकालयों को शामिल करें। BATS परीक्षण स्क्रिप्ट आमतौर पर परीक्षण . में संग्रहीत की जाती हैं निर्देशिका और परीक्षण की जा रही स्क्रिप्ट के लिए नामित, लेकिन .bats . के साथ विस्तार। उदाहरण के लिए, एक BATS स्क्रिप्ट जो बिन/बिल्ड . का परीक्षण करती है test/build.bats . कहा जाना चाहिए ।

आप BATS को रेगुलर एक्सप्रेशन पास करके BATS परीक्षण फ़ाइलों का एक पूरा सेट भी चला सकते हैं, उदाहरण के लिए, ./test/lib/bats/bin/bats test/*.bats

BATS कवरेज के लिए लाइब्रेरी और स्क्रिप्ट को व्यवस्थित करना

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

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

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

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

if [[ "${BASH_SOURCE[0]}" == "${0}" ]]
then
  run_main
fi

अतिरिक्त कोड का यह बिट कुछ खास करता है। यह स्क्रिप्ट को स्रोत के साथ वातावरण में लाए जाने की तुलना में स्क्रिप्ट के रूप में निष्पादित होने पर अलग तरह से व्यवहार करता है . यह ट्रिक स्क्रिप्ट को उसी तरह परीक्षण करने में सक्षम बनाती है जैसे लाइब्रेरी का परीक्षण किया जाता है, इसे सोर्स करके और व्यक्तिगत कार्यों का परीक्षण करके। उदाहरण के लिए, यहां बेहतर BATS टेस्टेबिलिटी के लिए build.sh को रिफैक्ट किया गया है।

परीक्षण लिखना और चलाना

जैसा कि ऊपर उल्लेख किया गया है, BATS एक सिंटैक्स और आउटपुट के साथ एक TAP-संगत परीक्षण ढांचा है जो उन लोगों से परिचित होगा जिन्होंने अन्य TAP-अनुपालन परीक्षण सूट, जैसे कि JUnit, RSpec, या Jest का उपयोग किया है। इसके परीक्षण व्यक्तिगत परीक्षण लिपियों में व्यवस्थित होते हैं। परीक्षण स्क्रिप्ट को एक या अधिक वर्णनात्मक @test . में व्यवस्थित किया जाता है ब्लॉक जो परीक्षण किए जा रहे एप्लिकेशन की इकाई का वर्णन करते हैं। प्रत्येक @परीक्षण ब्लॉक कमांड की एक श्रृंखला चलाएगा जो परीक्षण वातावरण तैयार करता है, परीक्षण के लिए कमांड चलाता है, और परीक्षण किए गए कमांड के बाहर निकलने और आउटपुट के बारे में दावा करता है। कई अभिकथन कार्य चमगादड़ . के साथ आयात किए जाते हैं , चमगादड़-जोर , और चमगादड़-समर्थन पुस्तकालय, जो BATS परीक्षण स्क्रिप्ट की शुरुआत में पर्यावरण में लोड होते हैं। यहाँ एक विशिष्ट BATS परीक्षण खंड है:

@test "requires CI_COMMIT_REF_SLUG environment variable" {
  unset CI_COMMIT_REF_SLUG
  assert_empty "${CI_COMMIT_REF_SLUG}"
  run some_command
  assert_failure
  assert_output --partial "CI_COMMIT_REF_SLUG"
}

यदि BATS स्क्रिप्ट में सेटअप . शामिल है और/या फाड़ना फ़ंक्शन, वे प्रत्येक परीक्षण ब्लॉक के चलने से पहले और बाद में BATS द्वारा स्वचालित रूप से निष्पादित होते हैं। इससे पर्यावरण चर बनाना, फाइलों का परीक्षण करना और एक या सभी परीक्षणों के लिए आवश्यक अन्य चीजें करना संभव हो जाता है, फिर प्रत्येक परीक्षण के चलने के बाद उन्हें फाड़ दें। बिल्ड.बैट्स हमारे नए स्वरूपित build.sh . का पूर्ण BATS परीक्षण है लिखी हुई कहानी। (द mock_docker इस परीक्षण में कमांड को मॉकिंग/स्टबिंग अनुभाग में नीचे समझाया जाएगा।)

जब परीक्षण स्क्रिप्ट चलती है, तो BATS निष्पादन . का उपयोग करता है प्रत्येक @test . को चलाने के लिए एक अलग उपप्रक्रिया के रूप में ब्लॉक करें। यह एक @test . में पर्यावरण चर और यहां तक ​​कि कार्यों को निर्यात करना संभव बनाता है अन्य @test . को प्रभावित किए बिना s या आपके वर्तमान शेल सत्र को प्रदूषित कर रहा है। टेस्ट रन का आउटपुट एक मानक प्रारूप है जिसे मनुष्यों द्वारा समझा जा सकता है और TAP उपभोक्ताओं द्वारा प्रोग्रामेटिक रूप से पार्स या हेरफेर किया जा सकता है। यहां CI_COMMIT_REF_SLUG . के आउटपुट का एक उदाहरण दिया गया है विफल होने पर परीक्षण ब्लॉक करें:

 ✗ requires CI_COMMIT_REF_SLUG environment variable
   (from function `assert_output' in file test/libs/bats-assert/src/assert.bash, line 231,
    in test file test/ci_deploy.bats, line 26)
     `assert_output --partial "CI_COMMIT_REF_SLUG"' failed

   -- output does not contain substring --
   substring (1 lines):
     CI_COMMIT_REF_SLUG
   output (3 lines):
     ./bin/deploy.sh: join_string_by: command not found
     oc error
     Could not login
   --

   ** Did not delete , as test failed **

1 test, 1 failure

यहाँ एक सफल परीक्षण का परिणाम दिया गया है:

✓ requires CI_COMMIT_REF_SLUG environment variable

सहायक

किसी भी शेल स्क्रिप्ट या लाइब्रेरी की तरह, BATS टेस्ट स्क्रिप्ट में हेल्पर लाइब्रेरी शामिल हो सकती हैं जो सभी परीक्षणों में सामान्य कोड साझा करती हैं या उनकी क्षमताओं को बढ़ाती हैं। ये सहायक पुस्तकालय, जैसे कि चमगादड़-जोर और चमगादड़-समर्थन , BATS के साथ भी परीक्षण किया जा सकता है।

पुस्तकालयों को उसी परीक्षण निर्देशिका में रखा जा सकता है जिसमें BATS स्क्रिप्ट या test/libs निर्देशिका यदि परीक्षण निर्देशिका में फ़ाइलों की संख्या बोझिल हो जाती है। BATS लोड . प्रदान करता है फ़ंक्शन जो परीक्षण की जा रही स्क्रिप्ट के सापेक्ष बैश फ़ाइल का पथ लेता है (उदा., परीक्षण , हमारे मामले में) और स्रोत जो फ़ाइल करते हैं। फ़ाइलें उपसर्ग .bash . के साथ समाप्त होनी चाहिए , लेकिन फ़ाइल का पथ लोड . पर चला गया फ़ंक्शन में उपसर्ग शामिल नहीं हो सकता। बिल्ड.बैट्स चमगादड़-जोर . लोड करता है और चमगादड़-समर्थन पुस्तकालय, एक छोटा helpers.bash पुस्तकालय, और एक docker_mock.bash लाइब्रेरी (नीचे वर्णित) के साथ निम्नलिखित कोड के साथ परीक्षण स्क्रिप्ट की शुरुआत में दुभाषिया जादू लाइन के नीचे रखा गया है:

load 'libs/bats-support/load'
load 'libs/bats-assert/load'
load 'helpers'
load 'docker_mock'

टेस्ट इनपुट को रोकना और बाहरी कॉल का मज़ाक उड़ाना

अधिकांश बैश स्क्रिप्ट और लाइब्रेरी चलने पर फ़ंक्शन और/या निष्पादन योग्य निष्पादित करते हैं। अक्सर उन्हें बाहर निकलने की स्थिति या आउटपुट (stdout .) के आधार पर विशिष्ट तरीकों से व्यवहार करने के लिए प्रोग्राम किया जाता है , stderr ) इन कार्यों या निष्पादन योग्य। इन लिपियों का ठीक से परीक्षण करने के लिए, इन आदेशों के नकली संस्करण बनाना अक्सर आवश्यक होता है जो एक विशिष्ट परीक्षण के दौरान एक विशिष्ट तरीके से व्यवहार करने के लिए डिज़ाइन किए जाते हैं, एक प्रक्रिया जिसे "स्टबिंग" कहा जाता है। यह सुनिश्चित करने के लिए परीक्षण किए जा रहे कार्यक्रम की जासूसी करना भी आवश्यक हो सकता है कि यह एक विशिष्ट कमांड को कॉल करता है, या यह विशिष्ट तर्कों के साथ एक विशिष्ट कमांड को कॉल करता है, एक प्रक्रिया जिसे "मॉकिंग" कहा जाता है। इसके बारे में अधिक जानकारी के लिए, रूबी आरएसपीसी में मॉकिंग और स्टबिंग की यह महान चर्चा देखें, जो किसी भी परीक्षण प्रणाली पर लागू होती है।

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

function cat() { echo "THIS WOULD CAT ${*}" }
export -f cat

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

@test ".login raises on oc error" {
  source ${profile_script}
  function raise() { echo "${1} raised"; }
  export -f raise
  run login
  assert_failure
  assert_output -p "Could not login raised"
}

आम तौर पर, परीक्षण के बाद स्टब/मॉक फ़ंक्शन को अनसेट करना आवश्यक नहीं है, क्योंकि निर्यात निष्पादन . के दौरान केवल वर्तमान उपप्रक्रिया को प्रभावित करता है वर्तमान @परीक्षण . के खंड मैथा। हालांकि, आदेशों का उपहास करना/आधार करना संभव है (उदा. बिल्ली , sed , आदि) कि BATS जोर * फ़ंक्शन आंतरिक रूप से उपयोग करते हैं। ये नकली/स्टब फ़ंक्शन अनसेट . होने चाहिए इन मुखर आदेशों के चलने से पहले, या वे ठीक से काम नहीं करेंगे। यहां build.bats से एक उदाहरण दिया गया है जो sed . का उपहास करता है , build_deployable . चलाता है कार्य करता है, और sed . को अनसेट करता है किसी भी दावे को चलाने से पहले:

@test ".build_deployable prints information, runs docker build on a modified Dockerfile.production and publish_image when its not a dry_run" {
  local expected_dockerfile='Dockerfile.production'
  local application='application'
  local environment='environment'
  local expected_original_base_image="${application}"
  local expected_candidate_image="${application}-candidate:${environment}"
  local expected_deployable_image="${application}:${environment}"
  source ${profile_script}
  mock_docker build --build-arg OAUTH_CLIENT_ID --build-arg OAUTH_REDIRECT --build-arg DDS_API_BASE_URL -t "${expected_deployable_image}" -
  function publish_image() { echo "publish_image ${*}"; }
  export -f publish_image
  function sed() {
    echo "sed ${*}" >&2;
    echo "FROM application-candidate:environment";
  }
  export -f sed
  run build_deployable "${application}" "${environment}"
  assert_success
  unset sed
  assert_output --regexp "sed.*${expected_dockerfile}"
  assert_output -p "Building ${expected_original_base_image} deployable ${expected_deployable_image} FROM ${expected_candidate_image}"
  assert_output -p "FROM ${expected_candidate_image} piped"
  assert_output -p "build --build-arg OAUTH_CLIENT_ID --build-arg OAUTH_REDIRECT --build-arg DDS_API_BASE_URL -t ${expected_deployable_image} -"
  assert_output -p "publish_image ${expected_deployable_image}"
}

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

  • mock_foo:अपेक्षित तर्कों को इनपुट के रूप में लेता है, और उन्हें एक TMP फ़ाइल में बनाए रखता है
  • foo:कमांड का नकली संस्करण, जो प्रत्येक कॉल को अपेक्षित तर्कों की निरंतर सूची के साथ संसाधित करता है। इसे निर्यात -f के साथ निर्यात किया जाना चाहिए।
  • क्लीनअप_फू:टियरडाउन फंक्शन में उपयोग के लिए टीएमपी फाइल को हटा देता है। यह सुनिश्चित करने के लिए परीक्षण कर सकता है कि हटाने से पहले @test ब्लॉक सफल रहा था।

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

एक अच्छा उदाहरण है docker_mock.bash . इसे build.bats . में लोड किया जाता है और किसी भी परीक्षण ब्लॉक में उपयोग किया जाता है जो एक फ़ंक्शन का परीक्षण करता है जो डॉकर को निष्पादन योग्य कहता है। docker_mock . का उपयोग करके एक सामान्य परीक्षण ब्लॉक ऐसा दिखता है:

@test ".publish_image fails if docker push fails" {
  setup_publish
  local expected_image="image"
  local expected_publishable_image="${CI_REGISTRY_IMAGE}/${expected_image}"
  source ${profile_script}
  mock_docker tag "${expected_image}" "${expected_publishable_image}"
  mock_docker push "${expected_publishable_image}" and_fail
  run publish_image "${expected_image}"
  assert_failure
  assert_output -p "tagging ${expected_image} as ${expected_publishable_image}"
  assert_output -p "tag ${expected_image} ${expected_publishable_image}"
  assert_output -p "pushing image to gitlab registry"
  assert_output -p "push ${expected_publishable_image}"
}

यह परीक्षण एक अपेक्षा स्थापित करता है कि डॉकर को अलग-अलग तर्कों के साथ दो बार बुलाया जाएगा। डॉकर को दूसरी कॉल विफल होने के साथ, यह परीक्षण कमांड चलाता है, फिर बाहर निकलने की स्थिति का परीक्षण करता है और डॉकर को अपेक्षित कॉल करता है।

BATS का एक पहलू mock_docker.bash . द्वारा पेश किया गया ${BATS_TMPDIR} . है पर्यावरण चर, जिसे BATS एक मानक स्थान पर TMP फ़ाइलों को बनाने और नष्ट करने के लिए परीक्षण और सहायकों को अनुमति देने के लिए शुरुआत में सेट करता है। mock_docker.bash यदि कोई परीक्षण विफल हो जाता है, तो पुस्तकालय अपनी स्थायी मॉक फ़ाइल को नहीं हटाएगा, लेकिन यह प्रिंट करेगा कि यह कहाँ स्थित है ताकि इसे देखा और हटाया जा सके। आपको इस निर्देशिका से पुरानी नकली फाइलों को समय-समय पर साफ करने की आवश्यकता हो सकती है।

मॉकिंग/स्टबिंग के संबंध में सावधानी का एक नोट:build.bats परीक्षण जानबूझकर परीक्षण के एक सिद्धांत का उल्लंघन करता है जो कहता है:जो आपके पास नहीं है उसका मज़ाक न उड़ाएँ! यह कहावत उन आदेशों को कॉल करने की मांग करती है जिन्हें परीक्षण के डेवलपर ने नहीं लिखा था, जैसे docker , बिल्ली , sed , आदि, को अपने स्वयं के पुस्तकालयों में लपेटा जाना चाहिए, जिसका उपयोग उन लिपियों के परीक्षणों में किया जाना चाहिए जो उनका उपयोग करते हैं। बाहरी आदेशों का मजाक उड़ाए बिना रैपर पुस्तकालयों का परीक्षण किया जाना चाहिए।

यह अच्छी सलाह है और इसे नज़रअंदाज करने पर कीमत चुकानी पड़ती है। यदि डॉकर सीएलआई एपीआई बदलता है, तो परीक्षण स्क्रिप्ट इस परिवर्तन का पता नहीं लगा पाएंगी, जिसके परिणामस्वरूप एक गलत सकारात्मक परिणाम होगा जो परीक्षण किए गए build.sh तक प्रकट नहीं होगा। स्क्रिप्ट डॉकर के नए संस्करण के साथ उत्पादन सेटिंग में चलती है। परीक्षण डेवलपर्स को यह तय करना होगा कि वे इस मानक का कितनी सख्ती से पालन करना चाहते हैं, लेकिन उन्हें अपने निर्णय में शामिल ट्रेडऑफ़ को समझना चाहिए।

निष्कर्ष

किसी भी सॉफ्टवेयर विकास परियोजना के लिए एक परीक्षण व्यवस्था का परिचय a) कोड और परीक्षणों को विकसित करने और बनाए रखने के लिए आवश्यक समय और संगठन में वृद्धि के बीच एक ट्रेडऑफ़ बनाता है और b) डेवलपर्स के पास अपने जीवनकाल में एप्लिकेशन की अखंडता में वृद्धि का विश्वास है। परीक्षण व्यवस्थाएं सभी लिपियों और पुस्तकालयों के लिए उपयुक्त नहीं हो सकती हैं।

सामान्य तौर पर, स्क्रिप्ट और लाइब्रेरी जो निम्न में से एक या अधिक को पूरा करती हैं, उनका परीक्षण BATS के साथ किया जाना चाहिए:

  • वे स्रोत नियंत्रण में संग्रहीत होने के योग्य हैं
  • वे महत्वपूर्ण प्रक्रियाओं में उपयोग किए जाते हैं और लंबे समय तक लगातार चलने के लिए भरोसा करते हैं
  • उनके कार्य को जोड़ने/निकालने/संशोधित करने के लिए उन्हें समय-समय पर संशोधित करने की आवश्यकता है
  • वे दूसरों द्वारा उपयोग किए जाते हैं

एक या एक से अधिक बैश स्क्रिप्ट या पुस्तकालयों के लिए एक परीक्षण अनुशासन लागू करने का निर्णय लेने के बाद, BATS व्यापक परीक्षण सुविधाएँ प्रदान करता है जो अन्य सॉफ़्टवेयर विकास वातावरण में उपलब्ध हैं।

स्वीकृति:मुझे BATS परीक्षण से परिचित कराने के लिए मैं डैरिन मान का ऋणी हूं।


  1. Apache JMeter के साथ लोड टेस्ट योर रेल ऐप्स

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

  1. इस बैश स्क्रिप्ट के साथ इमेज प्रोसेसिंग को स्वचालित करें

    लेखक न केवल शब्दों के साथ काम करते हैं, उन्हें अक्सर छवियों के साथ काम करना पड़ता है। तकनीकी लेखन में प्रौद्योगिकी और प्रक्रियाओं को व्यक्त करने के लिए बहुत सारे स्क्रीनशॉट प्रस्तुत करना शामिल है। अलग-अलग प्रकाशन प्लैटफ़ॉर्म में इमेज के लिए अलग-अलग ज़रूरतें हो सकती हैं, जैसे कि इमेज फ़ॉर्मैट या फ़ाइ

  1. पहेली की इस किताब के साथ जानें बैश

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