टेस्ट-ड्रिवन डेवलपमेंट

Java में Testing परिचय

Maria Milusheva

Senior Software Engineer

टेस्ट-ड्रिवन डेवलपमेंट

अब तक हमने प्रोडक्शन कोड लिखने के बाद ही टेस्ट लिखे हैं.

  • Test-Driven Development (TDD) एक डिज़ाइन तकनीक है जहाँ टेस्ट डिज़ाइन को गाइड करते हैं
  • TDD में प्रोडक्शन कोड लिखने से पहले टेस्ट लिखे जाते हैं

  • TDD क्यों करें?

Java में Testing परिचय

TDD के फायदे

  • TDD से डेवलप करने पर प्रोजेक्ट आवश्यकताओं को बेहतर तरीके से पूरा किया जाता है
  • तुरंत वेरिफिकेशन - जो भी कोड आप लिखते हैं उसके टेस्ट पहले से हैं
  • टेस्ट-आधारित कोडिंग से कोड साफ और बेहतर संरचित होता है
Java में Testing परिचय

TDD के नियम

1. कोई भी प्रोडक्शन कोड लिखने से पहले एक फेल होता टेस्ट लिखना जरूरी है

2. जितना संभव हो उतना छोटा टेस्ट लिखना जरूरी है

3. टेस्ट पास कराने लायक जितना पर्याप्त हो, उससे ज्यादा प्रोडक्शन कोड नहीं लिखना चाहिए

इन्हें क्रम में लागू करना = TDD का एक चक्र

डेवलपमेंट TDD के दोहराए गए चक्रों से आगे बढ़ता है

1 https://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
Java में Testing परिचय

Palindromes के लिए टेस्टिंग

  • मान लीजिए हमें एक मेथड लिखना है जो जाँचता है कि कोई integer palindrome है या नहीं

  • palindromic integers के उदाहरण: 12321, 0, 3333

Java में Testing परिचय

कोड लिखने से पहले फेल होता टेस्ट लिखें

@Test
public void isPalindrome_nonPalindromicInt_returnsFalse() {
    int number = 1234;

    assertFalse(isPalindrome(number)); // isPalindrome() is not yet written
}

एक टेस्ट भविष्य के अपने लिए नोट जैसा है, जो प्रोजेक्ट आवश्यकताओं की याद दिलाता है.

Java में Testing परिचय

टेस्ट पास कराने के लिए न्यूनतम कोड लिखें

public boolean isPalindrome(int num) {
    return false; // Write minimal code that fulfills the requirements of the test.
}

अब टेस्ट पास हो रहा है. आप TDD के अगले चक्र पर बढ़ सकते हैं.

Java में Testing परिचय

एक और टेस्ट लिखें

नया टेस्ट - फीचर के लिए नई आवश्यकता:

@Test
public void isPalindrome_PalindromicInt_ReturnsTrue() {
    int number = 1234321; // Now write a more complex test case.

    assertTrue(isPalindrome(number)); // At this point isPalindrome() will fail.
}
Java में Testing परिचय

मेथड इम्प्लीमेंट करें

public boolean isPalindrome(int num) {
    int inverted = 0;
    while (num != 0) {
        // At every iteration take the last digit of the number using % 10
        // and add it to inverted * 10.
        inverted = inverted * 10 + num % 10;
        // Now that we have processed the last digit, discard it using / 10.
        num = num / 10;
    }
    return inverted;
}
Java में Testing परिचय

TDD से बगफिक्सिंग

बग ठीक करने में TDD बेहतरीन है!

अभी लिखा मेथड number = -121 के लिए true लौटाता है. यह सही नहीं है!

हम बग दिखाने के लिए एक यूनिट टेस्ट लिखते हैं:

@Test
public void isPalindrome_NegativeNumber_ReturnsFalse() {
    int number = -121; // Not a palindrome as -121 is not the same as 121-.

    assertFalse(isPalindrome(number));
}
Java में Testing परिचय

TDD से बगफिक्सिंग

public boolean isPalindrome(int num) {
    if (num < 0) { 
        return false; // We add a clause to return false for negative values.
    }
    int inverted = 0;
    while (num != 0) {
        inverted = inverted * 10 + num % 10;
        num = num / 10;
    }
    return inverted;
}
Java में Testing परिचय

अभ्यास करते हैं!

Java में Testing परिचय

Preparing Video For Download...