AI를 활용한 테스트 작성 및 코드 보안

개발자를 위한 AI 보조 코딩

Francesca Donadoni

AI Curriculum Manager, DataCamp

테스트 주도 프롬프팅

☺ 일반 프롬프팅

이메일 주소를 파싱하는 Python 함수를 작성해 주세요.

🤓 테스트 주도 프롬프팅

이메일 주소를 파싱하는 Python 함수를 작성해 주세요. 다음 테스트를 통과해야 합니다:

  • "[email protected]"과 같은 유효한 주소를 허용합니다.
  • "user@@domain"과 같은 잘못된 입력을 거부합니다.
  • 빈 입력에 대해 ValueError를 발생시킵니다.
개발자를 위한 AI 보조 코딩

테스트 주도 프롬프팅

  • 사용자 프롬프트: 사용자가 제출한 양식 데이터를 처리하여 SQL 데이터베이스에 삽입하는 함수에 대한 Python 단위 테스트를 생성해 주세요.

  • 모델 응답:

유효성 검사, 정규화, SQL 인젝션 안전성, 트랜잭션 동작을 포함하는 즉시 실행 가능한 pytest 스위트를 제공합니다.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
개발자를 위한 AI 보조 코딩

테스트 주도 프롬프팅

  • 사용자 프롬프트: 아래 함수에 대해 pytest를 사용한 Python 단위 테스트를 생성해 주세요. 빈 입력, SQL 키워드 포함 입력, 특수 문자에 대한 테스트 케이스를 포함하고, 모의 데이터베이스 연결을 가정하세요. <INSERT FUNCTION>

  • 모델 응답:

모의 객체를 사용하는(실제 DB 불필요) 독립형 pytest 테스트 모듈로, 빈 입력, SQL 키워드, 특수 문자를 다루며 커밋/종료 동작과 예외 처리도 검증합니다.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
개발자를 위한 AI 보조 코딩

보안을 위한 프롬프팅

☺ 일반 프롬프팅

$$

아래 Python 함수에서 잠재적인 취약점을 검사하고, 발견된 경우 더 안전한 대안을 제안해 주세요.

🤓 테스트 주도 프롬프팅

$$

이 코드에서 SQL 인젝션, XSS, 입력 유효성 검사 취약점 등 일반적인 웹 보안 문제를 검토해 주세요.

개발자를 위한 AI 보조 코딩

OWASP Top 10

owasp_top_10.png

개발자를 위한 AI 보조 코딩

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 감사 결과와 더 안전한 코드로 재작성한 내용을 제공합니다.

  1. A03: 인젝션. SQL에 문자열을 직접 삽입하면 SQL 인젝션에 취약합니다. 공격 예시:
    • username = "admin' --" → 비밀번호 검사를 우회합니다. [...]
개발자를 위한 AI 보조 코딩

연습해 봅시다!

개발자를 위한 AI 보조 코딩

Preparing Video For Download...