

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 내구성 함수 테스트 및 디버깅
<a name="test-and-debug-durable-functions"></a>

내구성 있는 함수를 로컬에서 테스트하고 디버깅하는 작업은 체크포인트 및 재생을 자동으로 지원하는 일반 Lambda 함수와 비슷하게 작동합니다. 이 가이드에서는 일반적인 테스트 시나리오와 문제 해결 기법을 다룹니다.

## 로컬 테스트 워크플로
<a name="test-and-debug-durable-functions-workflow"></a>

내구성이 뛰어난 함수를 로컬에서 테스트할 때 워크플로는 일반 Lambda 함수와 다릅니다.

**내구성 있는 함수 테스트 워크플로**

1. 애플리케이션을 빌드합니다.

   ```
   $ sam build
   ```

1. 내구성 있는 함수를 호출합니다.

   ```
   $ sam local invoke MyDurableFunction --durable-execution-name test 
   ```

1. 필요한 경우 실행 기록을 확인합니다.

   ```
   $ sam local execution history execution-id
   ```

## 일반적인 테스트 시나리오
<a name="test-and-debug-durable-functions-scenarios"></a>

### 체크포인트 동작 테스트
<a name="test-and-debug-durable-functions-scenarios-checkpoints"></a>

함수가 상태를 올바르게 체크포인트하는지 테스트하려면:

```
# Example Python durable function
def handler(event, context):
    # This will create a checkpoint
    context.wait(10)  # Wait 10 seconds
    
    # Function resumes here after wait
    return {"message": "Function resumed after wait"}
```

이 함수를 로컬에서 호출하면 대기 기간이 자동으로 처리됩니다.

### 콜백 시나리오 테스트
<a name="test-and-debug-durable-functions-scenarios-callbacks"></a>

외부 콜백을 기다리는 함수의 경우:

1. 콜백을 기다리는 내구성 함수 시작

1. 다른 터미널에서 콜백을 해결합니다.

   ```
   $ sam local callback succeed callback-id
   ```

1. 함수 재개 실행 관찰

## 문제 해결
<a name="test-and-debug-durable-functions-troubleshooting"></a>

### 내구성 함수가 제대로 실행되지 않음
<a name="test-and-debug-durable-functions-troubleshooting-config"></a>

**문제:** 함수가 내구성 있는 함수로 동작하지 않습니다.

**솔루션:**
+ SAM 템플릿에 `DurableConfig`이 설정되어 있는지 확인
+ 함수 코드가 내구성 있는 함수 SDK 메서드(예: `context.wait()`)를 사용하는지 확인합니다.
+ 지원되는 런타임(TypeScript, JavaScript, Python)을 사용하고 있는지 확인합니다.

### 실행 기록을 검색할 수 없음
<a name="test-and-debug-durable-functions-troubleshooting-history"></a>

**문제:** `local execution history` 명령이 결과를 반환하지 않습니다.

**솔루션:**
+ 실행 ID가 올바른지 확인
+ 함수가 한 번 이상 호출되었는지 확인

### 콜백 명령이 작동하지 않음
<a name="test-and-debug-durable-functions-troubleshooting-callbacks"></a>

**문제:** 콜백 명령이 보류 중인 작업을 해결하지 못합니다.

**솔루션:**
+ 콜백 ID가 올바른지 확인
+ 함수가 실제로 콜백을 기다리고 있는지 확인합니다.
+ 올바른 콜백 명령 구문을 사용하고 있는지 확인

## 디버깅 팁
<a name="test-and-debug-durable-functions-debugging"></a>
+ **실행 기록 사용** - 실행 기록을 검토하여 내구성 있는 함수의 흐름을 이해합니다.
+ **점진적으로 테스트** - 복잡한 로직을 추가하기 전에 간단한 대기 작업으로 시작
+ **상세 로깅 사용** - 세부 로깅을 활성화하여 실행 흐름 추적

## 자세히 알아보기
<a name="test-and-debug-durable-functions-learn"></a>

테스트 및 디버깅에 대한 자세한 내용은 다음을 참조하세요.
+ [sam local invoke를 사용한 테스트 소개](using-sam-cli-local-invoke.md) - 로컬 호출 설명서
+ [sam local execution history](sam-cli-command-reference-sam-local-execution-history.md) - 실행 기록