تقول صفحة المنتج إن لديه واجهة API، فتتعطل سلسلة الاجتماعات حول التكامل عند السؤال الثاني. أي عملية، وعلى أي كائن، وبمن تستدعى، وما الذي يعد نجاحا؟ الإجابة عن هذه الأسئلة الأربعة قبل مقارنة المنتجات تسقط عادة نصف المرشحين. وهي أيضا تحول المقارنة المتبقية إلى شيء يمكن لاختبار أن يحسمه.

استبدل عبارة لديه واجهة API بعملية واحدة

واجهة API وسيلة نقل، لا قدرة. يمكن تسمية نقطة نهاية REST ومقبس محلي وغلاف سطر أوامر جميعا واجهة API، لكنها لا تقدم عمليات متكافئة.

اكتب العملية في جملة واحدة قبل أن تفتح الوثائق.

بدء اتصال محلي إجراء من جهة العميل ويقف أمامه مستخدم. إصدار ملف تعريف لجهاز إجراء تزويد وتقف خلفه جردة أصول. تعطيل وصول مستخدم إجراء إداري وله سجل تدقيق. هذه الثلاثة تعيش عادة في مكونات مختلفة، تملكها فرق مختلفة، وبسلطات مختلفة.

أربعة حقول تجعل العقد قابلا للاختبار

املأ أربعة حقول لكل عملية: الكائن، والإجراء، والمستدعي، وشرط النجاح. العقد الذي ينقصه حقل هو مجرد أمنية.

الجدول هو ورقة العمل كاملة:

FieldQuestionExample
ObjectWhat is being acted on?One enrolled device
ActionObserve, create, change, start, stop, or revoke?Revoke
CallerWhich identity calls it?Deployment service
SuccessWhat observable state proves it?Future sign-in denied

شرط النجاح هو الحقل الذي يتخطاه الناس، وهو الذي يحدد ما إذا كان التكامل يعمل. الإعداد المحفوظ ليس نفقا نشطا، والحساب المعطل ليس جلسة منتهية.

إذا احتاجت عمليتان إلى مستدعيين مختلفين، فهما تكاملان اثنان. جمعهما في حساب خدمة واحد يعني عادة منح سلطة أكبر مما تحتاجه أي منهما.

طابق الواجهة مع طبقتها الفعلية

تتحدث واجهة الإدارة المجتمعية لـOpenVPN مع البرنامج الخفي عبر TCP أو مقبس Unix. وتشمل أوامرها مراقبة الحالة وإرسال الإشارات إلى البرنامج الخفي.

وهذا يجعلها قناة تحكم في البرنامج الخفي، لا واجهة API اشتراك مستضافة ولا خدمة تسجيل مستخدمين. وقراءة وثائقها بعناية تمنعك من البناء على طبقة لا تملك الكائن.

تقول تلك الوثائق أيضا إن البروتوكول لا يحمل تشفيرا خاصا به. فمن يستطيع الوصول إلى المقبس يستطيع التحكم في البرنامج الخفي، لذا تعامل معه كتحكم حساس لا كتدفق مؤشرات. اربطه بواجهة loopback أو بمقبس Unix، وضعه خلف ترتيب مقيد إذا احتاج مستدع بعيد إليه. تعريضه للإنترنت لأجل الراحة يحول قناة تحكم إلى حادث.

حدد السلوك بعد الاستدعاء

القبول ليس هو الإكمال. قد يعود البرنامج الخفي قبل أن يرتفع النفق، فانتظر حدث الإكمال أو الفشل الموثق واربطه بالطلب الذي أرسلته.

قرر ما يفعله المستدعي إذا فقد الرد. تكرار إنشاء أو إعادة اتصال بشكل أعمى ليس مثل التحقق مما إذا كان الطلب الأول قد نفذ فعلا.

إزالة الوصول هي ثلاثة إجراءات مختلفة على الأقل: منع تسجيل الدخول مستقبلا، وإنهاء جلسة جارية، وإبطال بيانات الاعتماد. اطلب ما تتطلبه السياسة فعلا، وبين في العقد أي إجراء هو أي. لا تصف تحديث حساب ناجح واحد بأنه إبطال كامل دون دليل. الفرق مهم أثناء حادث، حين يدق الوقت.

اختبر العقد بتجربة محدودة

يجب أن تغطي تجربة محدودة معتمدة النجاح والرفض والانقطاع وإعادة المحاولة، ثم عملية التطبيق التي يفترض السماح بها أو منعها.

وبالنسبة لواجهة على مستوى البرنامج الخفي، يمارس أمران المراقبة وإرسال إشارة:

echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505

امنح فقط السلطة التي تتطلبها العملية. أبق الأسرار خارج سجلات التشغيل الدورية، وسجل ما يكفي من التفاصيل الخاصة لبيان الهدف المتأثر وكيف انتهى الأمر.

اكتب مسار الاستعادة للحالة التي تكون فيها واجهة التحكم نفسها معطلة. اختر الواجهة التي تملك الكائن ودورة حياته؛ فادعاءات الأتمتة على صفحة منتج ليست بديلا.

مقالات ذات صلة