Написання тестів і захист коду за допомогою ШІ

Кодування з підтримкою ШІ для розробників

Francesca Donadoni

AI Curriculum Manager, DataCamp

Запит, керований тестами

☺ Звичайний запит

Напишіть функцію Python для розбору електронних адрес.

🤓 Запит, керований тестами

Напишіть функцію Python для розбору електронних адрес. Вона має пройти такі тести:

  • Приймає коректну адресу на кшталт "[email protected]".
  • Відхиляє некоректне введення на кшталт "user@@domain".
  • Підіймає ValueError для порожнього введення.
Кодування з підтримкою ШІ для розробників

Запит, керований тестами

  • Запит користувача: Згенеруйте модульні тести в Python для функції, що обробляє дані з форми користувача й вставляє їх у базу даних SQL.

  • Відповідь моделі:

Ось готовий до запуску набір pytest, що покриває валідацію, нормалізацію, захист від SQL-інʼєкцій і поведінку транзакцій для функції, яка обробляє дані форми та вставляє запис у базу даних SQL.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
Кодування з підтримкою ШІ для розробників

Запит, керований тестами

  • Запит користувача: Згенеруйте модульні тести Python з pytest для наступної функції. Додайте кейси для порожнього введення, наявності ключових слів SQL у введенні та спеціальних символів. Припустіть наявність макета зʼєднання з базою. <INSERT FUNCTION>

  • Відповідь моделі:

Ось самодостатній модуль тестів pytest, що використовує моки (без реальної БД) і покриває порожнє введення, ключові слова SQL і спеціальні символи. Також перевіряє commit/close та ігнорування винятків.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
Кодування з підтримкою ШІ для розробників

Запити щодо безпеки

☺ Звичайний запит

$$

Перевірте наступну функцію Python на потенційні вразливості та запропонуйте безпечніші альтернативи, якщо їх буде виявлено.

🤓 Запит, керований тестами

$$

Перевірте цей код на типові проблеми веббезпеки, зокрема SQL-інʼєкції, XSS і помилки валідації введення.

Кодування з підтримкою ШІ для розробників

OWASP Top 10

OWASP Top 10

Кодування з підтримкою ШІ для розробників

OWASP Top 10

  • Запит користувача: Аудитуйте наведену функцію на вразливості 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()
  • Відповідь моделі:

Ось стислий аудит OWASP Top 10 для вашої функції login і безпечніший варіант.

  1. A03: Injection. Пряме підставляння рядків у SQL робить її тривіально вразливою до SQL-інʼєкцій. Приклади навантажень:
    • username = "admin' --" → обходить перевірку пароля. [...]
Кодування з підтримкою ШІ для розробників

Давайте потренуємось!

Кодування з підтримкою ШІ для розробників

Preparing Video For Download...