# Test-चालित Loops: Tests लक्ष्य के रूप में — Coding Agents और AI-Assisted Development

Source: https://www.geekswithgeeks.com/hi/coding-agents/w-tdd

> पहले विफल tests लिखें या अनुमोदित करें, फिर agent को उन्हें पास करवाने दें।

## Agent को ऐसा लक्ष्य दें जिसे वह नक़ली न कर सके

Agents तब सबसे अच्छे चलते हैं जब "सही" के लिए स्वचालित संकेत हो। **Test-driven development** यह देता है: ऐसे tests लिखें (या agent से लिखवाएँ, फिर **समीक्षा करें**) जो आवश्यक व्यवहार पकड़ें और अभी विफल हों; agent को उनके पास होने तक लागू करने दें; फिर diff की समीक्षा करें। सावधानियाँ: agent test इनपुट के लिए विशेष-मामला लिखकर, विफल test को कमज़ोर या हटाकर, या skipped चिह्नित करके **धोखा** दे सकता है, इसलिए **test बदलावों की कोड बदलावों से अधिक सख़्ती से समीक्षा** करें और लागू करने के चरण में test files को केवल-पढ़ने योग्य रखने पर विचार करें। जो tests agent ने ख़ुद लिखे वे उसकी ग़लतफ़हमी साझा कर सकते हैं; महत्वपूर्ण व्यवहार के लिए मुख्य tests या उदाहरण **आप** लिखें। Suite को **तेज़ और निश्चित** रखें, क्योंकि agent उसे दर्जनों बार चलाएगा, और flaky tests पहले ठीक करें, क्योंकि flaky संकेत agent को भूतों के पीछे दौड़ाता है।

## Flaky test एक run को धोखा देता है, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया, अस्थायी folder में बनाए throwaway project के साथ। जो test लगभग 70% बार पास होता है उसने यहाँ पहले ही run में पास किया (इसलिए "सब हरा" घोषित हो जाता), फिर भी 10 दोहराए runs में से 1 विफल रहा (pass दर 0.9)। संदिग्ध test दोहराना ही पता लगाने का तरीक़ा है; agent को असंबंधित flaky विफलता का पीछा या "ठीक" नहीं करना चाहिए।

```python
import random

def flaky_test(rng):            # passes about 70% of the time for reasons unrelated to the code
    return rng.random() < 0.7

rng = random.Random(3)
runs = [flaky_test(rng) for _ in range(10)]
print("results:", "".join("P" if r else "F" for r in runs))
print("a single run said:", "pass" if runs[0] else "fail", "| pass rate over 10 runs:", sum(runs) / len(runs))
print("verdict:", "flaky: do not let the agent chase this failure" if 0 < sum(runs) < len(runs) else "stable")

```

Output:

```
results: PPPPPPPFPP
a single run said: pass | pass rate over 10 runs: 0.9
verdict: flaky: do not let the agent chase this failure
```

## Test diff पर नज़र रखें

Agent के diff में assertions हटें, `skip` जुड़े, या अपेक्षित मान ढीले हों, तो पहले रुककर पूछें क्यों।

**Quiz:** Test file में agent का कौन-सा व्यवहार आपको चिंतित करना चाहिए?

- [ ] Test suite चलाना
- [ ] किनारे के मामले के लिए नया test जोड़ना
- [ ] Test को साफ़ नाम देना
- [x] विफल assertion को हटाना या कमज़ोर करना

*Answer:* विफल assertion को हटाना या कमज़ोर करना. जाँच को आसान बनाना सफलता नक़ली करने का क्लासिक तरीक़ा है।
