

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menguji dan men-debug fungsi tahan lama
<a name="test-and-debug-durable-functions"></a>

Menguji dan men-debug fungsi tahan lama secara lokal bekerja mirip dengan fungsi Lambda biasa, dengan dukungan otomatis untuk checkpointing dan replay. Panduan ini mencakup skenario pengujian umum dan teknik pemecahan masalah.

## Alur kerja pengujian lokal
<a name="test-and-debug-durable-functions-workflow"></a>

Saat menguji fungsi tahan lama secara lokal, alur kerja berbeda dari fungsi Lambda biasa:

**Alur kerja pengujian fungsi yang tahan lama**

1. Bangun aplikasi Anda:

   ```
   $ sam build
   ```

1. Panggil fungsi tahan lama Anda:

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

1. Periksa riwayat eksekusi jika diperlukan:

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

## Skenario pengujian umum
<a name="test-and-debug-durable-functions-scenarios"></a>

### Menguji perilaku checkpointing
<a name="test-and-debug-durable-functions-scenarios-checkpoints"></a>

Untuk menguji apakah fungsi Anda dengan benar status pos pemeriksaan:

```
# 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"}
```

Saat Anda menjalankan fungsi ini secara lokal, periode tunggu ditangani secara otomatis.

### Menguji skenario panggilan balik
<a name="test-and-debug-durable-functions-scenarios-callbacks"></a>

Untuk fungsi yang menunggu callback eksternal:

1. Mulai fungsi tahan lama Anda yang menunggu panggilan balik

1. Di terminal lain, selesaikan panggilan balik:

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

1. Amati fungsi melanjutkan eksekusi

## Pemecahan masalah
<a name="test-and-debug-durable-functions-troubleshooting"></a>

### Fungsi tahan lama tidak dijalankan dengan benar
<a name="test-and-debug-durable-functions-troubleshooting-config"></a>

**Masalah:** Fungsi tidak berperilaku sebagai fungsi yang tahan lama.

**Solusi:**
+ Verifikasi yang `DurableConfig` diatur dalam template SAM Anda
+ Pastikan kode fungsi Anda menggunakan metode SDK fungsi yang tahan lama (mis.,`context.wait()`)
+ Periksa apakah Anda menggunakan runtime yang didukung (TypeScript, JavaScript, Python)

### Tidak dapat mengambil riwayat eksekusi
<a name="test-and-debug-durable-functions-troubleshooting-history"></a>

**Masalah:** `local execution history` Perintah tidak mengembalikan hasil.

**Solusi:**
+ Verifikasi bahwa ID eksekusi sudah benar
+ Periksa apakah fungsi telah dipanggil setidaknya sekali

### Perintah callback tidak berfungsi
<a name="test-and-debug-durable-functions-troubleshooting-callbacks"></a>

**Masalah:** Perintah callback tidak menyelesaikan operasi yang tertunda.

**Solusi:**
+ Verifikasi ID callback sudah benar
+ Pastikan fungsi tersebut benar-benar menunggu panggilan balik
+ Verifikasi bahwa Anda menggunakan sintaks perintah callback yang benar

## Kiat debugging
<a name="test-and-debug-durable-functions-debugging"></a>
+ **Gunakan riwayat eksekusi** - Tinjau riwayat eksekusi untuk memahami alur fungsi tahan lama Anda
+ **Uji secara bertahap** - Mulailah dengan operasi tunggu sederhana sebelum menambahkan logika kompleks
+ **Gunakan pencatatan verbose** - Aktifkan pencatatan terperinci untuk melacak alur eksekusi

## Pelajari selengkapnya
<a name="test-and-debug-durable-functions-learn"></a>

Untuk informasi selengkapnya tentang pengujian dan debugging, lihat:
+ [Pengantar pengujian dengan sam local invoke](using-sam-cli-local-invoke.md)- Dokumentasi panggilan lokal
+ [sam local execution history](sam-cli-command-reference-sam-local-execution-history.md)- Riwayat eksekusi