Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tantangan saat menguji aplikasi tanpa server
Saat Anda menggunakan emulator dan panggilan tiruan untuk menguji aplikasi tanpa server di desktop lokal, Anda mungkin mengalami inkonsistensi pengujian saat kode Anda berkembang dari lingkungan ke lingkungan di pipeline CI/CD Anda. Pengujian unit yang Anda buat di desktop untuk memvalidasi logika bisnis aplikasi Anda mungkin tidak menyertakan atau secara akurat mewakili aspek penting dari layanan cloud. Tes lengkap tidak dapat dilakukan secara lokal dalam isolasi. Mereka memerlukan verifikasi izin dan konfigurasi di antara beberapa layanan.
Bagian berikut menguraikan tantangan yang mungkin Anda alami saat menerapkan strategi pengujian cloud.
Contoh: Fungsi Lambda yang membuat bucket S3
Jika logika fungsi Lambda bergantung pada pembuatan bucket S3, pengujian lengkap harus mengonfirmasi bahwa Amazon S3 berhasil dipanggil dan bucket berhasil dibuat. Dalam pengaturan pengujian tiruan, Anda mungkin mengejek respons sukses dan berpotensi menambahkan kasus uji untuk menangani respons kegagalan. Dalam skenario pengujian emulasi, CreateBucketAPI mungkin dipanggil, tetapi identitas yang membuat panggilan tidak akan berasal dari layanan Lambda dengan asumsi peran, dan otentikasi placeholder akan digunakan sebagai gantinya — ini sering kali peran atau identitas pengguna Anda yang lebih permisif.
Pengaturan tiruan dan emulasi yang dibahas sebelumnya kemungkinan besar akan menguji apa yang akan dilakukan fungsi Lambda jika berhasil (atau tidak berhasil) memanggil Amazon S3. Namun, pengujian tersebut akan gagal untuk menangkap apakah fungsi Lambda mampu berhasil membuat bucket, mengingat konfigurasi fungsi. Konfigurasi ini kemungkinan diwakili oleh infrastruktur sebagai kode (IAc) untuk produk dan layanan seperti AWS CloudFormation, AWS SAM, atau HashiCorp Terraform. Satu masalah yang mungkin terjadi adalah bahwa peran yang ditetapkan ke fungsi tidak memiliki kebijakan terlampir yang memungkinkan s3:CreateBucket
tindakan tersebut, dan oleh karena itu fungsi tersebut akan selalu gagal saat diterapkan ke lingkungan cloud.
Contoh: Fungsi Lambda yang memproses pesan dari antrian Amazon SQS
Jika antrian Amazon SQS adalah sumber fungsi Lambda, pengujian lengkap harus memverifikasi bahwa fungsi Lambda berhasil dipanggil saat pesan dimasukkan ke dalam antrean. Pengujian emulasi dan pengujian tiruan umumnya disiapkan untuk menjalankan kode fungsi Lambda secara langsung, dan untuk mensimulasikan integrasi Amazon SQS dengan meneruskan muatan peristiwa JSON (atau objek deserialisasi) sebagai input penangan fungsi.
Pengujian lokal yang mensimulasikan integrasi Amazon SQS akan menguji apa yang akan dilakukan fungsi Lambda saat dipanggil oleh Amazon SQS dengan muatan tertentu, tetapi tidak akan memastikan bahwa Amazon SQS akan berhasil menjalankan fungsi Lambda saat dikerahkan ke lingkungan cloud.
Beberapa contoh masalah konfigurasi yang mungkin Anda temui dengan Amazon SQS dan Lambda termasuk yang berikut:
-
Batas waktu visibilitas Amazon SQS terlalu rendah, menghasilkan beberapa pemanggilan ketika hanya satu yang dimaksudkan.
-
Peran eksekusi fungsi Lambda tidak mengizinkan membaca pesan dari antrian (melalui
sqs:ReceiveMessage
,sqs:DeleteMessage
, atau).sqs:GetQueueAttributes
-
Contoh peristiwa yang diteruskan ke fungsi Lambda melebihi kuota ukuran pesan Amazon SQS. Oleh karena itu, pengujian tidak valid karena Amazon SQS tidak akan pernah dapat mengirim pesan sebesar itu.
Seperti yang ditunjukkan oleh contoh-contoh ini, tes yang mencakup logika bisnis tetapi bukan konfigurasi antara layanan cloud cenderung memberikan hasil yang tidak dapat diandalkan.