কীভাবে বাহ্যিক এপিআই টেস্টিং করবেন (ব্ল্যাকবক্স)


14

ধরুন আপনি কোনও বিক্রেতার কাছ থেকে এপিআই ব্যবহার করছেন, কীভাবে নিশ্চিত করা যায় যে তাদের এপিআই প্রত্যাশা অনুযায়ী কাজ করছে?

আমার মূল উদ্বেগ হ'ল কখনও কখনও বিক্রেতা তাদের কোডগুলিতে পরিবর্তনগুলি ঠেকায় এবং API টি ভঙ্গ করে, আমরা ক্রমাগত এগুলি পরীক্ষা করার জন্য কিছু ধরণের স্বয়ংক্রিয় সফ্টওয়্যার রাখতে চাই। কিভাবে এটি মোকাবেলা?


ভাষার উপর নির্ভর করে এমন কিছু সরঞ্জাম থাকতে পারে যা সাহায্য করতে পারে (আমি সি # লাইব্রেরি / এপিআইয়ের জন্য পেক্স ভাবছি)।
স্টিভেন এভার্স

উত্তর:


10

সংক্ষিপ্ত উত্তর: তৃতীয় পক্ষের বিক্রেতা API এর জন্য আপনার একটি টেস্ট স্যুট দরকার - যাতে আপনাকে একটি বিকাশ করতে হবে।

আপনার জন্য অন্য কারও এটি করার আশা করবেন না এবং স্বয়ংক্রিয়ভাবে সঠিক পরীক্ষাগুলি তৈরি করার জন্য "ম্যাজিক বুলেট" আশা করবেন না।

কিছু জিনিস আপনি অতিরিক্তভাবে চেষ্টা করতে পারেন:

  • বিক্রেতাকে জিজ্ঞাসা করুন যদি তারা প্রতিটি নতুন প্রকাশের জন্য "ব্রেকিং পরিবর্তন" এর একটি তালিকা সরবরাহ করে
  • তারা কীভাবে এপিআই সামঞ্জস্যতা সম্পর্কে যত্নশীল তা জিজ্ঞাসা করুন / তাদের জানান যে এটি আপনার জন্য একটি গুরুত্বপূর্ণ বৈশিষ্ট্য
  • এপিআই নির্দিষ্ট টেস্টিং হুক, লগিং আউটপুট বা এমন কিছু অংশ সরবরাহ করে কিনা যা খুব সহজে পরীক্ষা করা যায়নি কিনা তা পরীক্ষা করে দেখুন
  • আপনার নিজের লগিং কোড, লগ ইনপুট রচনার ইনপুট এবং সম্পর্কিত আউটপুট দিয়ে গুরুত্বপূর্ণ এপিআই কলগুলি মোড়ানো, এটি অপ্রত্যাশিত কিছু ঘটলে জিনিসগুলি ডিবাগ করা সহজ করে দেবে
  • প্রাক-এবং পোস্টকন্ডিশনগুলি পরীক্ষা করতে API কলগুলিতে যুক্তি যুক্ত করুন, সুতরাং যদি API এর নতুন প্রকাশ আপনার অ্যাপ্লিকেশনটির মধ্যে অপ্রত্যাশিত আচরণ দেখায়, আপনি একটি ত্রুটি বার্তার মাধ্যমে তাড়াতাড়ি অবহিত হন

এই জিনিসগুলি যদি কাজ করে বা না করে তবে আপনার বিক্রেতার কে এবং আপনার কী ধরণের API এ মনে আছে তা নির্ভর করে। ফাইলগুলির মতো কিছু পরিদর্শনযোগ্য আউটপুট তৈরি করে এমন একটি এপিআই যা এমন কোনও শারীরিক ডিভাইসকে নিয়ন্ত্রণ করে যেখানে এপিআই কল সফল হয়েছিল কিনা তা নির্ধারণ করার জন্য জিনিসটির আচরণটি পর্যবেক্ষণ করতে হবে এমন কোনও এপিআই এর চেয়ে পরীক্ষা করা আরও সহজ।


আমি পুরোপুরি একমত, তবে এটি আমার কাছে মনে হয়, প্রশ্নকর্তা পরীক্ষার ইউনিটগুলির সাথে অভিজ্ঞতা অর্জন করেন না এবং তাদের সাথে কাজ করার পরিকল্পনাটি জানেন না। আমার অর্থ: সমালোচক পয়েন্টগুলি সন্ধান করুন, পরীক্ষা ইউনিট লিখুন, সমস্ত পরীক্ষা চালান, ডিবাগ করুন, ডিবাগিংয়ের সময় নতুন সমালোচনামূলক পয়েন্টগুলি সন্ধান করুন, নতুন ইউনিট লিখুন, প্রতিটি এপিআই পরিবর্তনের পরে শেষ 4 টি ধাপ পুনরাবৃত্তি করুন।
গাংনাস

@ গাংনাস: ওপেন আইএমএইচএও আমাদের ইউনিট পরীক্ষার সাথে তার পূর্বের অভিজ্ঞতা সম্পর্কে কিছু জানায়নি। যদি তার সাথে সমস্যা থাকে তবে আমি নিশ্চিত যে সে আরও নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করতে জানে। তদ্ব্যতীত, এখানে বিষয়টি "ইউনিট পরীক্ষা" নয়, "স্বয়ংক্রিয় ইন্টিগ্রেশন পরীক্ষা"। এগুলির জন্য সাধারণত একটি টিডিডি স্টাইল পদ্ধতিতে ইউনিট-টেস্টিংয়ের চেয়ে আলাদা স্কিম প্রয়োজন require
ডক ব্রাউন

হ্যাঁ, তিনি তা বলেননি। তবে তিনি যদি পরীক্ষার itesক্যবদ্ধ হওয়ার কথা উল্লেখ না করে "তাদের এপিআইটি কীভাবে প্রত্যাশা অনুযায়ী কাজ করছে তা নিশ্চিত করতে", "এটি আমার কাছে মনে হয়", যদি তিনি তাদের জানেন না তবে অটোমেটেড ইন্টিগ্রেশন টেস্টের ক্ষেত্রে, উচ্চতর সম্ভাবনা থাকা সত্ত্বেও তিনি সেগুলি জানেন না, তিনি কেবল "কিছু ধরণের স্বয়ংক্রিয় সফ্টওয়্যার" উল্লেখ করেছিলেন। আপনি জনগণের কাছ থেকে আপনার মতো একই জ্ঞানের অপেক্ষায় রয়েছেন, তবে এই থিমগুলিতে 99% প্রোগ্রামার (আমাকে সহ) আরও কম জানেন। এবং 90% অনেক বেশি কম।
গাংনাস

0

পোস্টারের ফ্রেসিংয়ের ভিত্তিতে এটি আইএমও পরীক্ষার চেয়ে বেশি more আপনি API এর জন্য আপনার ইউনিট পরীক্ষাটি লেখার পরে এবং নিশ্চিত হয়েছিলেন যে সবকিছু প্রত্যাশা অনুযায়ী কাজ করছে, আপনার তৃতীয় পক্ষের API গুলি পর্যবেক্ষণ করা দরকার যাতে ব্যবহারকারীরা করার আগে আপনি সমস্যাগুলি ধরেন। তৃতীয় পক্ষের এপিআইগুলির সাথে এটিই আসল ঝুঁকি - এটি আপনার কোড নয় এবং এপিআইতে কতটা পরীক্ষা করা হয়েছিল বা কখন / যদি এটি পরিবর্তিত হয় তার উপর আপনার কোনও নিয়ন্ত্রণ নেই।

(অস্বীকৃতি: পণ্যের নাম এখানে ব্যবহৃত) আপনি যদি নিজের এপিআই পরীক্ষাগুলি লেখার জন্য soapUI ব্যবহার করেন, তবে এই পরীক্ষাগুলি প্রত্যাশিতভাবে কাজ করে চলেছে তা নিশ্চিত করার জন্য অ্যালার্টসাইটে অপারেশনাল মনিটর হিসাবে পুনরায় ব্যবহার করা যেতে পারে। যদি এটি পরীক্ষায় ব্যর্থ হয় তবে আপনার ব্যবহারকারীরা আপনাকে কল করার আগে এবং সতর্ক হতে পারে যে আপনার অ্যাপ্লিকেশনটি কাজ করে না।


0

আপনার আগ্রহের ক্ষেত্রের জন্য শেখার পরীক্ষাগুলি প্রয়োগ করুন (আপনি যে বৈশিষ্ট্যগুলি ব্যবহারের পরিকল্পনা করছেন)। লার্নিং টেস্টগুলি হল সংহতকরণ পরীক্ষা যা এপিআইয়ের সার্বজনীন চুক্তির বিরুদ্ধে বিকাশকারী দ্বারা লিখিত হয়। এপিআইয়ের উত্স কোড উপলব্ধ থাকলেও অভ্যন্তরীণ বাস্তবায়নের বিশদগুলির বিরুদ্ধে পরীক্ষাগুলি লেখা উচিত নয়। এই ধরণের শিখন পরীক্ষা দুটি উদ্দেশ্য করে -

  1. এটি তৃতীয় পক্ষের এপিআই সম্পর্কে আপনার বোঝার নাটকীয়ভাবে উন্নতি করে।
  2. পরীক্ষাগুলি দাবি করা নতুন সংস্করণটি আসলে পশ্চাদপটে সামঞ্জস্যপূর্ণ কিনা তা যাচাই করতে সহায়তা করে।

0

এই সমস্যাটির জন্য 2 টি পন্থা রয়েছে ...

আপনার অ্যাপ্লিকেশন প্রকৃত ব্যবহারকারীর ট্র্যাফিক সহ উত্পাদিত হয়:

আপনার যদি উত্পাদনের কোনও অ্যাপ থাকে যা সরাসরি ট্র্যাফিক রয়েছে এবং এটি কোনও বহিরাগত এপি-র উপর নির্ভর করে আপনার যখন বাইরের এপিআই না জানিয়ে পরিবর্তন করে তখন যত দ্রুত সম্ভব তা নিবিড়ভাবে পর্যবেক্ষণ করা এবং ভাল থ্রোসোল্ড থাকা ছাড়া আপনার কোনও বিকল্প নেই।

আপনার সর্বদা অ্যাকাউন্টে নেওয়া উচিত:

  • সময়ের সাথে সাথে এপিআই এর পরিবর্তন
  • এপিআই বিক্রেতার বাগ থাকতে পারে
  • এপিআই বিক্রেতাদের টেস্ট-কিটগুলিতে বাগ থাকতে পারে বা সমস্ত উত্পাদন এপিআইয়ের কার্যকারিতা সম্পূর্ণরূপে কভার করা যায় না

আপনার অ্যাপ্লিকেশনটি একটি ইনস্টলেশন এবং পরিকল্পনা করা সংস্করণ / প্রকাশের পরিকল্পনা করেছে:

এই ক্ষেত্রে আপনার ব্যর্থ হওয়ার গরিব সময়কাল আছে ... সরাসরি ব্যবহারকারী বাহ্যিক এপিআই ব্রেকিং পরিবর্তনের সাথে সাথে প্রভাবিত হয় না।

আমার মতে এটি আরও সহজ কাজ। একটি পরীক্ষা লিখুন (সম্পূর্ণ শেষ থেকে শেষের পরীক্ষা) যা আপনাকে সত্যিকারের লেনদেন / HTTP / অনুরোধ করে যা আপনাকে আবেদন করে যা বাহ্যিক এপিআই আবেদন করে এবং কোন ব্যর্থতা নেই তা পরীক্ষা করে দেখুন। কোনও পরীক্ষা-কিট কোনও সত্যিকারের লেনদেনের উপহাস করে না।

এই কাজটি শেষ হওয়ার পরে আপনি এটি প্রতি 24 ঘন্টা, 1 মিনিট ইত্যাদি চালানোর জন্য চয়ন করতে পারেন ...

ভাল অনুশীলন:

  • সবকিছু স্বয়ংক্রিয় করুন
  • একজন ব্যক্তির সাথে আপনি দ্রুত বাহ্যিক এপিআই বিক্রেতার কাছ থেকে যোগাযোগ করতে পারেন
  • অন্ধভাবে বিক্রেতা পরীক্ষার সবকিছু বিশ্বাস করবেন না
  • দ্রুত ব্যর্থ হন - যদি আপনার পরিষেবা বহিরাগত এপিআইয়ের উপর নির্ভর করে তবে আপনার পরিষেবাটি ক্রাশ হতে দেবে না। দ্রুত ব্যর্থ হন এবং যথাযথ ত্রুটি বার্তাগুলি ফিরে আসুন

সরঞ্জাম:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.