تكرار السؤال: …
الإجابة المختصرة
تتحقق من عمل سيناريوهات الأعمال الحيوية عبر كامل المنظومة المجمعة (الخادم، قواعد البيانات، طوابير المهام، والخدمات التابعة) من منظور العميل الحقيقي.
الشرح
تركز اختبارات E2E على مسارات الاستخدام الحساسة (مثل دورة إنشاء حساب، وإتمام عملية شراء، وإصدار الفاتورة). على عكس اختبارات الوحدة، لا يتم استخدام أي Mocks في E2E. على الرغم من ثقتها العالية، إلا أنها أبطأ وأكثر عرضة للتقلبات، لذا يجب الحفاظ على عدد قليل وموجه منها ضمن هرم الاختبارات.
مثال بالكود
import test from "node:test";
import assert from "node:assert/strict";
const base = process.env.BASE_URL ?? "http://localhost:3000";
const json = { "content-type": "application/json" };
test("checkout flow across services", async () => {
const login = await fetch(`${base}/login`, {
method: "POST", headers: json, body: JSON.stringify({ email: "[email protected]", password: "secret" }),
});
const { token } = await login.json();
const res = await fetch(`${base}/orders`, {
method: "POST",
headers: { ...json, authorization: `Bearer ${token}` },
body: JSON.stringify({ sku: "tea", qty: 2 }),
});
const order = await res.json();
assert.equal(order.status, "PAID"); // payment, inventory and notification services all took part
});أخطاء شائعة
- بناء هرم اختبارات مقلوب بحيث تكون معظم الاختبارات E2E مما يبطئ دورة التطوير بشكل هائل.