یہاں باائپ کے ساتھ ایلیکسیر میں بیرونی APIs آزمائشی ہے

$config[ads_kvadrat] not found

اعدام های غير قضايی در ايران

اعدام های غير قضايی در ايران

فہرست کا خانہ:

Anonim

ہم خدمت پر مبنی فن تعمیراتی اصولوں کو ترجیح دیتے ہیں اندرونی. اس کا مطلب یہ ہے کہ واضح طور پر وضاحت کی ذمہ داریوں کے ساتھ ہمارے چھوٹے، برقرار رکھنے والے اجزاء ہیں. وہ نمائندگی پسندی ریاستی منتقلی، یا REST، APIs کے ذریعہ ایک دوسرے (زیادہ تر) سے بات کرتے ہیں.

یہ لچکدار فراہم کرتا ہے اور ایک اہم پہلو کی استثنا کے ساتھ ہمیں اچھی طرح سے خدمت کرلی ہے: امتحان. ٹیسٹنگ جب، سے بچنا چاہئے:

  • اسی مشین پر چل رہا ہے بیرونی خدمات پر انحصار.
  • سست ٹیسٹ

کیونکہ ایپلیکیشنز بیرونی طور پر بیرونی خدمات پر متفق ہیں، انحصار انحصار کے لئے ٹیسٹنگ کی حکمت عملی کے لئے ضروری ہے.

ہم نے حال ہی میں بپتسمہ کا استعمال شروع کر دیا اور میں وضاحت کروں گا کہ ہم کس طرح وہاں پہنچ گئے ہیں اور خاص طور پر ہم اسے کیسے استعمال کرتے ہیں.

ماضی

مذاق طریقوں اور اس طرح کچھ مثال کے طور پر ڈیٹا واپس لو

وہ روبی / ریل کی دنیا میں "جانے کا راستہ" (اور اب بھی میرا خیال ہے). بدقسمتی سے، یہ براس رویے کو فروغ دیتا ہے جیسا کہ جوس ویلم کی طرف سے یہاں سب سے بہتر وضاحت کی گئی تھی.

اس کے بعد ہم نے EXVCR کا استعمال کرتے ہوئے شروع کیا جس میں ایک عظیم لائبریری ہے، لیکن موڑ / اسٹاک کے طور پر اسی طرح کی خرابیاں ہیں: یہ سستے کو حوصلہ افزائی کرتا ہے اور ان کے خدشات کو الگ الگ نہیں کرتا جو مناسب تعریف شدہ API کے لئے اہم ہیں. ExVCR ایک "ریکارڈ" اور "پلے بیک" حقیقی زندہ اعداد و شمار کو ایک قابل بناتا ہے. ضم کرنے کے لئے بہت آسان ہے (بشمول آپ کی آزمائش میں چند لائنیں اور ہر چیز کی دیکھ بھال کی جا رہی ہے). لیکن مثالی طور پر آپ کو ٹیسٹ میں خارجی انحصار کے بارے میں سوچنا پڑتا ہے، ان کا خلاصہ نہیں. یہ اب بھی منظرنامہ کے لئے قابل عمل انتخاب ہوسکتا ہے جب اختتام پوائنٹ کے رویے کم از کم ہیڈ سر کے ساتھ ٹیسٹ کیا جاسکتا ہے (ہم ایمیزون کی AWS سروسز جیسے S3 جیسے ٹیسٹنگ کالز کے لئے استعمال کرتے ہیں).

اڈاپٹر درج کریں

اڈاپٹر بہت اچھا کام کرتے ہیں اور API کے معاہدے کے ارد گرد تشویش کو فروغ دیتے ہیں اور واضح طور پر بیان کردہ مواصلات کی حدوں کو فروغ دیتے ہیں ہم اب بھی اس نقطہ نظر کا استعمال کرتے ہیں، خاص طور پر جب اڈاپٹر زیادہ پیچیدہ ہے (جی ایس ایس-آر پی سی ساکٹ کی طرح).

یہ کس طرح اڈاپٹر دیکھ سکتا ہے:

لیکن سادہ HTTP اختتام کے لئے، اڈاپٹر بہت سارے کام کی طرح لگتے ہیں اور ایک بڑی خرابی رکھتے ہیں: وہ لائبریریوں کو چھوڑ دیتے ہیں جب وہ ٹیسٹ کے مساوات سے محروم ہوتے ہیں. اگر HTTP یا JSON لائبریریوں میں کچھ بھی تبدیل ہوجاتا ہے، تو ٹیسٹ اسے نہیں پکڑ سکیں گے. اس کے نقطہ نظر کی طرف سے untested چھوڑ دیا پیداوار کے اہم کوڈ کی رقم ناقابل قبول ہے.

موجودہ اور مستقبل

بپتسمہ ہمیں آزمائشی خدمات میں بہت آسان ویب سرور شروع کرنے کی اجازت دیتا ہے جو ہم بیرونی استعمال کرتے ہیں.

اب، ہم مکمل اسٹیک ٹیسٹ کر سکتے ہیں، بشمول HTTP لائبریری، JSON انکوڈنگ / ضابطہ بندی لائبریری، اور توثیق کے طریقہ کار سمیت. بائیساس ریڈیمی اچھی طرح لکھا ہے، لہذا میں عمل درآمد کی تفصیلات کو چھوڑ دونگا. ہم کرتے ہیں، تاہم، تھوڑا سا تبدیل کرتے ہیں کہ ہم ٹیسٹ استعمال اور پڑھنے کے قابل رکھنے کے لئے کس طرح استعمال کرتے ہیں.

سب سے پہلے، ہم کبھی کبھی فیس بک پر فون کرنا چاہتے ہیں جب ٹیسٹ مکمل انضمام سوٹ کے طور پر چلتے ہیں. ہم یہ ناقابل یقین حد تک کرتے ہیں کہ اس بات کو یقینی بنانا ہے کہ فیس بک API ہماری توقعوں کے مطابق ابھی تک کام کرتا ہے. شامل کرنا انضمام شامل کریں کرنے کے لئے مرکب ٹیسٹ API کا انکار نہیں کرتا لیکن اس کے بجائے، بیرونی سروس (لائنوں 5، 7) سے مطالبہ کرتا ہے.

ہم واضح طور پر واضح ہوتے ہیں کہ ہم بیرونی خدمات کی درخواستیں کرتے ہیں تاکہ باضابطہ طور پر استعمال ہونے والے ہر امتحان میں tag facebook_bypass (لائن 7).

آخر میں، handle_fb تقریب (لائنز 30-39) کہا جا رہا ہے (یہ دیا ہے request_path میچز) میں کام کے سر میں مماثلت پسند کرتا ہوں کیونکہ واضح ہوتا ہے کہ ہم جس راستے سے رد عمل کرتے ہیں اور ہمیں مختلف راستوں کے لئے مختلف افعال کی وضاحت کرنے کی اجازت دیتا ہے.

لہذا بائپ صرف ٹیگ کے ساتھ ٹیگ چلتا ہے tag: بائی پاس اور جب ہم اپنے انضمام سوٹ چلاتے نہیں ہیں. بائائپ قائم کرنے کے دوران ہم ایک اور چیز کو ٹیگ کو بتاتی ہے (صفحہ 8، 20). تو یہاں یہ ہے کہ باطنی آزمائشی ٹیسٹ کی آزادی کس طرح کی ہے.

جیسا کہ آپ دیکھ سکتے ہیں، facebook_bypass ٹیگ یہ واضح کرتا ہے کہ ہم API کو ضم کر رہے ہیں (جب تک ہم انضمام موڈ میں نہیں ہیں). یہ ہمیں مصنوعی API پر معلومات کو منتقل کرنے کی اجازت دیتا ہے، اور مختلف تجربات کے لئے اسی بائپاس ترتیب کو دوبارہ استعمال کرنا بہت آسان ہے.

مجھے امید ہے کہ آپ بیرونی APIs کی جانچ میں مدد ملتی ہے. اگر آپ کو مزید سوالات ہیں تو آپ مجھے ٹویٹر پر تلاش کر سکتے ہیں (نیچے ملاحظہ کریں).

$config[ads_kvadrat] not found