Test-driven development (TDD) In Hindi
पाइथन प्रोग्रामिंग लैंग्वेज में टेस्ट-ड्रिवेन डेवलपमेंट (TDD) एक पाइथन बेस्ड सॉफ्टवेयर सोर्स कोड डेवलपमेंट मेथड है, जिसे एक्चुअल में रियल पाइथन प्रोग्राम सोर्स कोड से पहले टेस्ट क्रिएट किए जाते हैं।

पाइथन में पहले एक कम्पलीट प्रोग्राम क्रिएट करने और बाद में उसे टेस्ट करने के बदले, TDD एक स्माल पाइथन साइकिल को फॉलो करता है.
First write tests → Run the tests → Write the program source code → Now run your tests → Modify the existing source code
पाइथन में TDD का यूज़ सामान्य रूप से यूनिटटेस्ट और पायटेस्ट जैसे पॉपुलर पायथन टेस्टिंग टूल्स के साथ किया जाता है।
What is TDD in the Python programming language?
पाइथन प्रोग्रामिंग लैंग्वेज में TDD का मतलब है, टेस्ट-ड्रिवेन डेवलपमेंट एक सॉफ्टवेयर डेवलपमेंट टेस्टिंग टूल्स या कांसेप्ट है।
The main purpose of TDD is.
टेस्ट-ड्रिवेन डेवलपमेंट हमें किसी प्रोग्राम के एक्सपेक्टेड बिहेवियर को सोर्स कोड के डेवलपमेंट को गाइड करने में हेल्प करता है।
जैसे माना की, हमें किसी पाइथन प्रोग्राम में एक ऐसा फंक्शन चाहिए। जो दो अलग अलग इन्टिजर नंबरों को ऐड करता हो।
Instead of writing it directly.
def plus(p, q):
return p + q
यहाँ हम पहले एक टेस्ट को क्रिएट करते हैं, जिसमें यह इंडीकेट किया जाता है कि हम क्या एक्सपेक्ट करते हैं.
def test_plus():
assert plus(4, 7) == 11
यहाँ स्टार्ट में, यह टेस्ट फेल हो जाता है, क्योंकि इसमें plus() फंक्शन इम्प्लीमेंट नहीं किया गया है।
इसके बाद हम इस टेस्ट को पास करने के लिए ज़रूरी मिनिमम सोर्स कोड को क्रिएट करते हैं।
A TDD cycle representation in Python programming.
पाइथन लैंग्वेज बेस्ड एक टेस्ट-ड्रिवेन डेवलपमेंट TDD में मुख्य रूप से 3 स्टेज होते हैं, जिसे हम यहाँ निचे डिटेल में जानेंगे।
┌──────────────┐
│ RED │
│ यहाँ आप एक नया सोर्स कोड टेस्ट को लिखें │
└──────┬──────┘
↓
┌─────────────┐
│ GREEN │
│ अब आपके लिखे गए टेस्ट को इसमें पास करें │
└───────┬───────┘
↓
┌─────────────┐
│ रिफैक्टर │
│ अब जरूरत के अनुसा सोर्स कोड सुधारें │
└──────┬──────┘
↓
अब इन सभी को दोहराएं।
These stages are called in Test-Driven Development (TDD).
- रेड टेस्ट स्टेज
- ग्रीन टेस्ट स्टेज
- रिफैक्टर टेस्ट स्टेज
Step 1 – Red Light TDD Stage.
इसमें सबसे पहले, पाइथन यूजर अपने डिजायर बिहेवियर के लिए एक सोर्स कोड टेस्ट को लिखें।
यहाँ माना की हमें plus() नाम का एक फ़ंक्शन चाहिए।
def test_plus():
assert plus(4, 5) == 9
यहाँ हम अभी इस टेस्ट को रन करते हैं, तो यह फ़ेल हो जाता है, क्योंकि इसमें plus() फंक्शन मौजूद नहीं है।
यह एक रेड स्टेज है।
Source code written test
↓
If the test fails
↓
RED stage
रेड स्टेज टेस्ट मे फ़ेलियर के चान्सेस है, क्योंकि इसमें हमने अभी तक कोई इम्प्लीमेंटेशन नहीं लिखा है।
Step 2 – Green Light TDD Stage.
अब पाइथन यूजर एक सबसे इजी प्रोग्राम सोर्स कोड टेस्ट को लिखें, जिससे यह टेस्ट आसानी से पास हो जाए।
def plus(p, q):
return p + q
Now run this test again.
Test → PASS
यह पाइथन सोर्स कोड TDD में एक ग्रीन स्टेज है।
इस टेस्टिंग स्टेज पर आपका टारगेट परफ़ेक्ट टेस्ट कोड को लिखना नहीं है। इसमें हमारा टारगेट बस इस टेस्ट को सैटिस्फाई करना है।
Step 3 – Refactor TDD Stage.
यहाँ TDD स्टेज में टेस्ट पास होने के बाद, प्रोग्राम सोर्स कोड के बिहेवियर को बदले बिना उसे इम्प्रूव करते है।
उदाहरण के लिए, इसमें हम सोर्स कोड के ऑर्गनाइज़ेशन, नेमिंग या स्ट्रक्चर को इम्प्रूव कर सकते हैं। इसके बाद रिफैक्टरिंग के बाद, टेस्ट फिर से रन करे।
Refactor
↓
Run the test
↓
Pass
यह TDD टेस्टिंग फेज में एक रिफैक्टर स्टेज है।
Complete the TDD cycle in the Python test stage.
पाइथन प्रोग्राम में एक पूरा TDD टेस्टिंग प्रोसेस कुछ इस तरह से दिखता है.
First, write a failing test.
↓
RED TDD Stage🔴
↓
Write minimal program source code.
↓
GREEN TDD Stage🟢
↓
Improve your source code.
↓
REFACTOR TDD Stage🔵
↓
Now run your test again.
↓
Refactor it again.
यहाँ इस TDD साइकिल को अक्सर Red-Green-Refactor टेस्ट स्टेज के रूप में जाना जाता है।
Example of TDD using pytest in Python programming.
यहाँ माना की हम एक ऐसा पाइथन प्रोग्राम फ़ंक्शन क्रिएट करना चाहते हैं, जो यह पता लगाए कि कोई नंबर ईवन नंबर है, या नहीं है।
Step 1: First, write a test
def test_is_even_num():
assert is_even_num(8) is True
स्टार्ट में, यह टेस्ट फेल हो जाता है, क्योंकि इसमें is_even_num() फंक्शन मौजूद नहीं है।
Step 2: Write your source code
def is_even_num(number):
return number % 2 == 0
अब इस कंडीशन के साथ यह टेस्ट पास हो जाना चाहिए।
Step 3: Add more tests
def test_is_even_num():
assert is_even_num(8) is True
def test_is_odd_num():
assert is_even_num(7) is False
def test_zero_is_even_num():
assert is_even_num(0) is True
Now run it in Python.
pytest
अब इस प्रोग्राम में टेस्ट को वेरिफ़ाई करते हैं कि फ़ंक्शन कई केस में काम करता है।
Example of TDD using Python unittests.
पाइथन यूजर इस आइडिया को पाइथन के बिल्ट-इन यूनिटटेस्ट मॉड्यूल का यूज़ करके भी अप्लाई कर सकता है।
import unittest
def is_even_num(number):
return number % 2 == 0
class TestEvenNum(unittest.TestCase):
def test_even_num(self):
self.assertTrue(is_even_num(8))
def test_odd_num(self):
self.assertFalse(is_even_num(7))
def test_zero(self):
self.assertTrue(is_even_num(0))
if __name__ == “__main__”:
unittest.main()
Now run it using.
python -m unittest
Advantages of the TDD testing stage in Python.
- Fewer bugs – पाइथन TDD में क्योंकि टेस्ट कंटिन्यू क्रिएट किए जाते हैं, इस वजह से इश्यूज प्रोब्लेम्स को इमीडियेट फाइंड करने में इसे यूज़ किया जा सकता है।
- Better Code Design – पाइथन TDD सॉफ्टवेयर डेवलपर्स को स्माल फ़ंक्शन और क्लियर इंटरफ़ेस क्रिएट करने के लिए फाॅर्स करता है, जिससे हमारे लिए कोई टेस्ट करना इजी हो जाता है।
- Immediate Feedback – इससे पाइथन सॉफ्टवेयर डेवलपर्स को इमीडियेट पता चल जाता है कि उनका किया गया नया बदलाव प्रॉपर काम कर रहा है, या नहीं है।
- Safer Refactoring – मौजूदा पाइथन प्रोग्राम सोर्स कोड को इम्प्रूव करने या रीस्ट्रक्चर करने पर टेस्ट एक सेफ़्टी नेट प्रोवाइड करता हैं।
- Living Documentation – प्रॉपर आर्डर में क्रिएट किए गए प्रोग्राम सोर्स टेस्ट दिखाते हैं कि किसी मौजूदा प्रोग्राम में कोई फ़ंक्शन या कंपोनेंट से कैसा काम करने की उम्मीद की जाती है।
- Easy Maintenance – जब पाइथन डेवलपर की ज़रूरतें बदलती हैं, तो सॉफ्टवेयर डेवलपर्स टेस्ट को मॉडिफाई कर सकते हैं, और फिर अपने इम्प्लीमेंटेशन को अपडेट कर सकते हैं।
Disadvantages of the TDD Testing Stage in Python.
पाइथन प्रोगाम टेस्ट TDD में कुछ चुनौतियाँ या कमिया भी हैं।
- Time-consuming initially – पाइथन TDD में इम्प्लीमेंटेशन से पहले टेस्ट क्रिएट करना स्टार्ट में स्लो और टाइम कन्सुमिंग टास्क हो सकता है।
- Requires practice – पाइथन TDD में सॉफ्टवेयर डेवलपर्स को यह लर्न करना होगा कि सिर्फ जरूरी काम के, फ़ोकस्ड टेस्ट को कैसे क्रिएट करे।
- Bad tests can be misleading – यदी पाइथन TDD में टेस्ट खराब या गलत तरीके से डिज़ाइन डेवलप किए गए हैं, तो प्रोग्राम सोर्स कोड टेस्ट पास करने का मतलब यह नहीं है कि आपके सभी एप्लिकेशन सही आर्डर में है।
- Not everything is easy to test – पाइथन TDD में कुछ यूज़र-इंटरफ़ेस बिहेवियर, कॉम्प्लेक्स इंटीग्रेशन और एक्सटर्नल सिस्टम को यूनिट-लेवल TDD के अलावा और भी टेस्टिंग टेक्नीक की ज़रूरत हो सकती है।
Python TDD vs. Traditional Development.
Traditional Source Code Testing Approach
First write the program source code
↓
And write other code logic statements
↓
Complete the program
↓
Test the program
↓
Fix program bugs
TDD testing approach in Python programming.
First write the Python program source code test
↓
If the test fails
↓
Write the program code
↓
Test passes
↓
Refactor
↓
Write the next test
↓
Refactor it
पाइथन TDD vs. ट्रेडिशनल डेवलपमेंट में मैन डिफ्रेंस यह है कि TDD स्टार्ट से ही टेस्ट इम्प्लीमेंटेशन को गाइड करने के लिए टेस्ट को यूज़ करता है, न कि सोर्स कोड टेस्टिंग को डेवलपमेंट के बाद ही किया जाने वाला टास्क समझता है।
TDD and Unit Testing Concepts in Python.
पाइथन प्रोग्राम सोर्स कोड TDD और यूनिट टेस्टिंग एक-दूसरे से बहुत हद तक मिलते-जुलते कांसेप्ट या मेथड हैं, लेकिन ये दोनों कांसेप्ट अपने अपने तरीके से काम करते हैं।
Unit Python Testing.
पाइथन प्रोग्रामिंग में यूनिट टेस्टिंग एक टेस्टिंग तकनीक या मेथड है, इसका यूज़ प्रोग्राम सोर्स कोड की अलग-अलग यूनिट्स को टेस्ट या एनालाइज करने में किया जाता है।
TDD Python Testing.
पाइथन प्रोग्रामिंग में TDD एक डेवलपमेंट मेथड या कांसेप्ट है, जिसमें प्रोग्राम इम्प्लीमेंटेशन से पहले टेस्ट क्रिएट किए जाते हैं, और प्रोग्राम टेस्ट डेवलपमेंट को गाइड करने के लिए यूज़ किए जाते हैं। जैसे,
Unit Testing
↓
यह पाइथन प्रोग्राम सोर्स कोड के अलग-अलग हिस्सों को टेस्ट करता है
TDD Testing
↓
यह पाइथन प्रोग्राम सोर्स कोड डेवलपमेंट प्रोसेस को रन करने के लिए इस टेस्ट का यूज़ करता है
पाइथन यूजर TDD टेस्टिंग की प्रैक्टिस किए बिना यूनिट टेस्ट क्रिएट किए जा सकते हैं।
Best Practices for TDD Testing in Python.
यह आपके पाइथन सोर्स कोड टेस्ट को स्माल रखता है।
इसमें डिफाइन हर प्रोग्राम सोर्स कोड टेस्ट को एक बिहेवियर पर फोकस करना चाहिए।
Always use clear TDD test names.
For example.
def test_zero_is_even():
…
यह आपके लिए समझने में आसान है.
def test1():
…
Python TDD test edge cases.
For example.
0
नेगेटिव नंबर
खाली इनपुट
बड़ी वैल्यू
इनवैलिड इनपुट
सबसे पहले आप अपने सोर्स कोड टेस्ट में मिनिमम कोड लिखें।
ग्रीन स्टेज टेस्टिंग के दौरान, इसके इम्प्लीमेंटेशन को ओवर-इंजीनियर कर अधिक कस्टमाइज न करें।
जरूरत के अनुसार इसे रेगुलरली रिफैक्टर करें।
पाइथन TDD टेस्टिंग टेस्ट पास होने के बाद, टेस्ट को पास करते हुए अपने मौजूदा सोर्स कोड को और इम्प्रूव करे।
Real-world TDD source code testing example in Python.
यहाँ माना की हम एक बैंक की अकाउंट एप्लीकेशन डेवलप कर रहे हैं।
हमें या क्लाइंट को अपने बैंक अकाउंट से पैसे विथड्रॉ करने के लिए एक फ़ंक्शन चाहिए।
सबसे पहले, हम एक टेस्ट के साथ इसके एक्सपेक्टेड बिहेवियर को डिफाइन करते है.
def test_withdraw_amt():
client_account = Account(1000)
client_account.withdraw_amt(332)
assert account.balance == 668
स्टार्ट में, प्रोग्राम सोर्स कोड टेस्ट फेल हो जाता है, क्योंकि इसमें यूजर Account या withdraw_amt() फंक्शन कोड को इम्प्लीमेंट नहीं किया गया है।
इसके बाद में हम इसमें मिनिमम सोर्स कोड फंक्शनैलिटी को इम्प्लीमेंट करते हैं.
class Account:
def __init__(self, balance):
self.balance = balance
def withdrawal(self, amount):
self.balance -= amount
Then run the source code test again.
PASS
इसके बाद, हम एक और प्रोग्राम सोर्स कोड ज़रूरत को ऐड कर सकते हैं.
def test_cannot_withdraw_more_than_balance():
account = Account(1000)
# Source code Expected behavior will be defined here.
इसके बाद हम उस बिहेवियर को इम्प्लीमेंट करते हैं, और Red → Green → Refactor tdd टेस्टिंग स्टेज साइकिल को कंटिन्यू करते हैं।
TDD testing concepts in a Python-based project.
पाइथन प्रोग्रामिंग लैंग्वेज में टेस्ट-ड्रिवेन डेवलपमेंट (TDD) किसी प्रोजेक्ट को कुछ इस तरह से ऑर्गनाइज़ या स्ट्रक्चर किया जा सकता है.
testproject/
│
├── calculation.py
│
└── tests/
└── test_calculation.py
Python source code development happens in short cycles.
User source code requirement
↓
Write a failing test first
↓
Implement the required feature
↓
Run the test
↓
Refactor
↓
Check the next requirement
Conclusion of Python Test-driven development (TDD).
पाइथन प्रोग्रामिंग लैंग्वेज में टेस्ट-ड्रिवन डेवलपमेंट (TDD) एक प्रोग्राम सोर्स कोड सॉफ्टवेयर डेवलपमेंट मेथड या कांसेप्ट है, जिसमें इम्प्लीमेंटेशन कोड से पहले टेस्ट क्रिएट किये जाते हैं।
The basic Test-driven development (TDD) cycle is.
- 🔴 RED → इसमें आप एक ऐसा टेस्ट लिखें, जो टेस्ट में फेल हो जाए।
- 🟢 GREEN → इसमें आप पास होने के लिए काफी प्रोग्राम सोर्स कोड लिखे।
- 🔵 REFACTOR → इसमें आप अपने प्रोग्राम सोर्स कोड टेस्ट पास करते हुए कोड को इम्प्रूव करे।
TDD पाइथन सॉफ्टवेयर डेवलपर्स को प्रॉपर आर्डर में टेस्ट किया हुआ, मेंटेन करने लायक और भरोसेमंद प्रोग्राम सॉफ्टवेयर क्रिएट करने में हेल्प करता है। पाइथन प्रोग्रामिंग में, unittest और pytest जैसे पॉपुलर एडवांस्ड सोर्स कोड टेस्टिंग फ्रेमवर्क का यूज़ करके इसकी प्रैक्टिस की जा सकती है।
An easy formula to remember in Python programming is.
TDD = Test the source code first → Update the code → Apply refactoring → Repeat as needed

