Bagaimana cara melakukan pengujian API eksternal (blackbox)

14

Asumsikan Anda menggunakan API dari vendor, bagaimana memastikan API mereka berfungsi seperti yang diharapkan?

Perhatian utama saya adalah kadang-kadang vendor mendorong perubahan pada kode mereka dan menghancurkan API, kami ingin memiliki semacam perangkat lunak otomatis untuk mengujinya secara terus menerus. Bagaimana cara menghadapinya?

pengguna34401
sumber
Bergantung pada bahasanya, mungkin ada alat yang dapat membantu (Saya sedang memikirkan Pex untuk C # libraries / API).
Steven Evers

Jawaban:

10

Jawaban singkat: Anda memerlukan rangkaian uji untuk API vendor pihak ketiga - jadi Anda harus mengembangkannya.

Jangan berharap orang lain melakukannya untuk Anda, dan jangan mengharapkan "peluru ajaib" untuk menghasilkan tes yang tepat secara otomatis.

Beberapa hal yang dapat Anda coba tambahan:

  • tanyakan kepada vendor apakah mereka memberikan daftar "pemecahan perubahan" untuk setiap rilis baru
  • tanyakan kepada mereka bagaimana mereka peduli tentang kompatibilitas API / beri tahu mereka bahwa ini adalah fitur penting bagi Anda
  • periksa apakah API menyediakan kait pengujian khusus, keluaran log atau sesuatu seperti itu untuk bagian yang tidak dapat diuji dengan mudah juga
  • membungkus panggilan API penting dengan kode logging Anda sendiri, menulis input dan output terkait dari API ke file log, ini akan membuatnya lebih mudah untuk men-debug hal-hal jika sesuatu yang tidak terduga terjadi
  • tambahkan pernyataan ke panggilan API untuk memeriksa kondisi sebelum dan sesudah, jadi jika rilis baru dari API menunjukkan perilaku tak terduga dalam aplikasi Anda, Anda mendapat informasi awal dengan pesan kesalahan

Apakah hal-hal ini berfungsi atau tidak tergantung pada siapa vendor Anda dan jenis API apa yang ada dalam pikiran Anda. API yang menghasilkan beberapa hasil seperti file jauh lebih mudah untuk diuji daripada API yang mengontrol beberapa perangkat fisik di mana Anda harus mengamati perilaku benda untuk memutuskan apakah panggilan API berhasil atau tidak.

Doc Brown
sumber
Saya sepenuhnya setuju, tetapi bagi saya, penanya tidak berpengalaman dengan unit pengujian dan tidak tahu skema kerja dengan mereka. Maksud saya: menemukan titik kritis, menulis unit uji, menjalankan semua tes, men-debug, selama debug menemukan titik kritis baru, menulis unit baru, ulangi 4 langkah terakhir setelah setiap perubahan API.
Gangnus
@ Gangnus: IMHO OP tidak memberi tahu kami apa pun tentang pengalaman sebelumnya dengan pengujian unit. Jika dia memiliki masalah dengan itu, saya yakin dia tahu untuk mengajukan pertanyaan yang lebih spesifik. Selanjutnya, topik di sini bukanlah "tes unit", tetapi "tes integrasi otomatis". Mereka biasanya memerlukan skema yang berbeda dari, misalnya pengujian unit dengan gaya TDD.
Doc Brown
Ya, dia belum mengatakan itu. Tetapi jika dia bertanya "bagaimana memastikan API mereka berfungsi seperti yang diharapkan" tidak menyebutkan uji unites, "menurut saya", bahwa dia tidak mengenal mereka. Adapun tes integrasi otomatis, ia tidak mengenalnya bahkan dengan probabilitas yang lebih tinggi, ia hanya menyebutkan "semacam perangkat lunak otomatis". Anda sedang menunggu dari orang-orang pengetahuan yang sama seperti milik Anda, tetapi dalam tema ini 99% programmer (termasuk saya) tahu jauh lebih sedikit. dan 90% jauh lebih sedikit.
Gangnus
0

Berdasarkan ungkapan poster, itu lebih dari sekedar pengujian, IMO. Setelah Anda menulis unit test Anda untuk API dan memastikan semuanya berfungsi seperti yang diharapkan, Anda perlu memantau API pihak ketiga sehingga Anda menangkap masalah sebelum pengguna melakukannya. Itu risiko nyata dengan API pihak ketiga - itu bukan kode Anda dan Anda tidak memiliki kendali atas berapa banyak pengujian yang dilakukan pada API atau kapan / jika itu berubah.

(Penafian: nama produk yang digunakan di sini) Jika Anda menggunakan soapUI untuk menulis tes API Anda, tes tersebut dapat digunakan kembali di AlertSite sebagai monitor operasional untuk memastikan API tetap berfungsi seperti yang diharapkan. Jika gagal dalam tes, Anda dapat diperingatkan sebelum pengguna menelepon Anda dan mengeluh bahwa aplikasi Anda tidak berfungsi.

Lorinda Brandon
sumber
0

Laksanakan tes belajar untuk bidang minat Anda (fitur yang Anda rencanakan untuk digunakan). Tes pembelajaran adalah tes integrasi yang ditulis oleh pengembang terhadap kontrak publik API. Tes tidak boleh ditulis terhadap rincian implementasi internal bahkan jika kode sumber untuk API tersedia. Tes pembelajaran semacam ini memiliki dua tujuan -

  1. Ini secara dramatis meningkatkan pemahaman Anda tentang API pihak ketiga.
  2. Tes membantu memverifikasi apakah versi baru yang diklaim benar-benar kompatibel atau tidak.
Anand Patel
sumber
0

Ada 2 pendekatan untuk masalah ini ...

aplikasi Anda hidup dalam produksi dengan lalu lintas pengguna nyata:

jika Anda memiliki aplikasi dalam produksi yang memiliki lalu lintas langsung dan bergantung pada api eksternal, Anda tidak punya pilihan selain memonitor dan memiliki ambang batas yang baik untuk mengetahui secepat mungkin ketika api eksternal melakukan perubahan tanpa memberi tahu.

Anda harus selalu mempertimbangkan bahwa:

  • api berubah seiring waktu
  • vendor api dapat memiliki bug
  • kit uji api vendor dapat memiliki bug atau tidak sepenuhnya mencakup semua fungsionalitas api produksi

aplikasi Anda adalah instalasi dan telah merencanakan versi / rilis:

dalam hal ini Anda memiliki tenggang waktu gagal ... pengguna langsung tidak segera terpengaruh oleh perubahan api eksternal.

menurut saya ini adalah tugas yang lebih mudah. menulis tes (tes ujung ke ujung) yang membuat transaksi nyata / http / permintaan untuk aplikasi Anda yang memanggil api eksternal dan memeriksa bahwa tidak ada kegagalan. tidak ada test-kit tanpa mengejek transaksi nyata.

setelah tugas ini selesai, Anda dapat memilih untuk menjalankan ini setiap 24 jam, 1 menit dll ...

Latihan yang baik:

  • mengotomatiskan segalanya
  • miliki seseorang yang dapat Anda hubungi dengan cepat dari vendor api eksternal
  • jangan membabi buta percaya vendor menguji segalanya
  • gagal cepat - jika layanan Anda sangat bergantung pada api eksternal jangan biarkan layanan Anda macet. gagal dengan cepat dan kembalikan pesan kesalahan yang tepat

alat:

Nimrod007
sumber