AI के साथ टेस्ट लिखना और कोड सुरक्षित करना

डेवलपर्स के लिए AI-असिस्टेड कोडिंग

Francesca Donadoni

AI Curriculum Manager, DataCamp

Test-driven prompting

☺ Normal Prompting

ईमेल पते पार्स करने के लिए एक Python फंक्शन लिखिए.

🤓 Test-Driven Prompting

ईमेल पते पार्स करने के लिए एक Python फंक्शन लिखिए. इसे नीचे दिए गए टेस्ट पास करने चाहिए:

  • "[email protected]" जैसे वैध पते स्वीकार करता है.
  • "user@@domain" जैसे अमान्य इनपुट को अस्वीकार करता है.
  • खाली इनपुट पर ValueError उठाता है.
डेवलपर्स के लिए AI-असिस्टेड कोडिंग

Test-driven prompting

  • User prompt: यूज़र- सबमिटेड फॉर्म डेटा प्रोसेस करने और उसे SQL डेटाबेस में insert करने वाले फंक्शन के लिए Python में यूनिट टेस्ट जनरेट करें.

  • Model response:

यहाँ एक रेडी-टू-रन pytest सूट है जो वैलिडेशन, नॉर्मलाइज़ेशन, SQL-injection सुरक्षा, और ट्रांज़ैक्शन व्यवहार को कवर करता है, ऐसे फंक्शन के लिए जो फॉर्म डेटा प्रोसेस कर SQL डेटाबेस में रिकॉर्ड insert करता है.

[...]
# ---------- Test DB fixtures ----------

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
डेवलपर्स के लिए AI-असिस्टेड कोडिंग

Test-driven prompting

  • User prompt: नीचे दिए गए फंक्शन के लिए pytest इस्तेमाल कर Python यूनिट टेस्ट जनरेट करें. खाली इनपुट, इनपुट में SQL कीवर्ड, और स्पेशल कैरेक्टर्स के केस शामिल करें. मान लीजिए एक mock डेटाबेस कनेक्शन है. <INSERT FUNCTION>

  • Model response:

यहाँ एक self-contained pytest टेस्ट मॉड्यूल है जो mocks इस्तेमाल करता है (कोई real DB नहीं) और खाली इनपुट, SQL कीवर्ड, व स्पेशल कैरेक्टर्स को कवर करता है. यह commit/close व्यवहार को भी वेरिफ़ाई करता है और एक्सेप्शंस के swallow होने की जाँच करता है.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
डेवलपर्स के लिए AI-असिस्टेड कोडिंग

सुरक्षा के लिए prompting

☺ Normal Prompting

$$

नीचे दिए गए Python फंक्शन में संभावित कमजोरियाँ स्कैन कीजिए और जहाँ ज़रूरत हो सुरक्षित विकल्प सुझाइए.

🤓 Test-Driven Prompting

$$

इस कोड की सामान्य वेब सिक्योरिटी समस्याओं के लिए समीक्षा कीजिए, जिनमें SQL injection, XSS, और इनपुट वैलिडेशन की खामियाँ शामिल हैं.

डेवलपर्स के लिए AI-असिस्टेड कोडिंग

OWASP Top 10

OWASP टॉप 10

डेवलपर्स के लिए AI-असिस्टेड कोडिंग

OWASP Top 10

  • User prompt: नीचे दिए गए फंक्शन का OWASP Top 10 कमजोरियों के लिए ऑडिट करें.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Model response:

यहाँ आपके login फंक्शन का केंद्रित OWASP Top 10 ऑडिट है, साथ में एक सुरक्षित री-राइट भी.

  1. A03: Injection. SQL में डायरेक्ट string interpolation इसे trivially SQL-injectable बना देती है. उदाहरण payloads:
    • username = "admin' --" → पासवर्ड चेक बायपास. [...]
डेवलपर्स के लिए AI-असिस्टेड कोडिंग

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

डेवलपर्स के लिए AI-असिस्टेड कोडिंग

Preparing Video For Download...