"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اختبار API مع السرو: دليل كامل

اختبار API مع السرو: دليل كامل

تم النشر بتاريخ 2024-11-04
تصفح:488

API Testing with Cypress: A Complete Guide

مقدمة

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

لماذا نستخدم Cypress لاختبار API؟

  1. الميزات المضمنة: يتمتع Cypress بقدرات مضمنة لتقديم طلبات HTTP والتأكيدات وإدارة الاختبارات غير المتزامنة.
  2. التكامل السهل: يمكنك بسهولة دمج اختبارات واجهة برمجة التطبيقات (API) في مجموعة اختبار Cypress الحالية لديك، إلى جانب اختبارات واجهة المستخدم الخاصة بك.
  3. تجربة مطور رائعة: تقدم Cypress واجهة سهلة الاستخدام، وردود فعل سريعة، وتصحيح الأخطاء في الوقت الفعلي.
  4. الأتمتة: يمكنك أتمتة اختبارات واجهة برمجة التطبيقات في مسار CI/CD الخاص بك، مما يضمن اختبار واجهات برمجة التطبيقات باستمرار مع كل عملية نشر.

البدء في اختبار واجهة برمجة التطبيقات (API) في Cypress

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

الخطوة 1: تثبيت Cypress

npm install cypress --save-dev

بمجرد التثبيت، يمكنك تشغيل Cypress باستخدام الأمر التالي:

npx cypress open

الخطوة 2: إعداد أول اختبار لواجهة برمجة التطبيقات (API)
يوفر Cypress طريقة cy.request() التي يمكنك استخدامها لإرسال طلبات HTTP. فيما يلي مثال أساسي لاختبار واجهة برمجة التطبيقات (API) التي تعرض قائمة بالمستخدمين:

describe('API Testing with Cypress', () => {
  it('should retrieve a list of users', () => {
    cy.request('GET', 'https://jsonplaceholder.typicode.com/users')
      .then((response) => {
        // Validate the status code
        expect(response.status).to.eq(200);

        // Validate the response body
        expect(response.body).to.have.length(10);
        expect(response.body[0]).to.have.property('name');
      });
  });
});

في هذا المثال، نقوم باختبار طلب GET لاسترداد قائمة المستخدمين. يقوم Cypress بالتحقق من صحة رمز حالة الاستجابة والتحقق من أن نص الاستجابة يحتوي على 10 مستخدمين.

طرق HTTP الشائعة في اختبار API

إليك كيفية تنفيذ طلبات HTTP الشائعة مثل GET وPOST وPUT وDELETE في Cypress.

الحصول على الطلب
تُستخدم طلبات GET لاسترداد البيانات من الخادم. على سبيل المثال:

cy.request('GET', 'https://jsonplaceholder.typicode.com/posts/1')
  .then((response) => {
    expect(response.status).to.eq(200);
    expect(response.body).to.have.property('id', 1);
  });

طلب النشر
تُستخدم طلبات POST لإنشاء موارد جديدة على الخادم. إليك كيفية اختبار طلب POST:

cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', {
  title: 'New Post',
  body: 'This is the content of the new post.',
  userId: 1
})
  .then((response) => {
    expect(response.status).to.eq(201);
    expect(response.body).to.have.property('title', 'New Post');
  });

طلب PUT
تُستخدم طلبات PUT لتحديث الموارد الموجودة. مثال:

cy.request('PUT', 'https://jsonplaceholder.typicode.com/posts/1', {
  id: 1,
  title: 'Updated Post Title',
  body: 'Updated content',
  userId: 1
})
  .then((response) => {
    expect(response.status).to.eq(200);
    expect(response.body).to.have.property('title', 'Updated Post Title');
  });

حذف الطلب
يتم استخدام طلبات الحذف لإزالة الموارد. مثال:

cy.request('DELETE', 'https://jsonplaceholder.typicode.com/posts/1')
  .then((response) => {
    expect(response.status).to.eq(200);
  });

تقنيات اختبار API المتقدمة

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

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

cy.request({
  method: 'GET',
  url: 'https://api.example.com/protected',
  headers: {
    Authorization: `Bearer ${Cypress.env('auth_token')}`
  }
})
  .then((response) => {
    expect(response.status).to.eq(200);
  });

هنا، يتم استخدام رأس التفويض لإرسال رمز مميز مع الطلب.

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

cy.request({
  method: 'GET',
  url: 'https://jsonplaceholder.typicode.com/posts/9999',
  failOnStatusCode: false
})
  .then((response) => {
    expect(response.status).to.eq(404);
  });

من خلال تعيين FailOnStatusCode: false، لن تفشل Cypress في الاختبار تلقائيًا للاستجابات غير 2xx، مما يسمح لك بالتحقق من صحة استجابات الأخطاء.

تسلسل استدعاءات واجهة برمجة التطبيقات
في بعض الأحيان، تحتاج إلى ربط عدة استدعاءات لواجهة برمجة التطبيقات معًا، على سبيل المثال، إنشاء مورد ثم استخدامه في اختبار لاحق:

cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', {
  title: 'Post for chaining',
  body: 'Chained post content',
  userId: 1
}).then((postResponse) => {
  cy.request('GET', `https://jsonplaceholder.typicode.com/posts/${postResponse.body.id}`)
    .then((getResponse) => {
      expect(getResponse.body).to.have.property('title', 'Post for chaining');
    });
});

في هذا المثال، يقوم طلب POST بإنشاء منشور جديد، ويقوم طلب GET باسترداد هذا المنشور بناءً على المعرف الذي تم إرجاعه من المكالمة الأولى.

أتمتة اختبارات API في خطوط أنابيب CI/CD

لضمان استقرار واجهات برمجة التطبيقات الخاصة بك، من الضروري تشغيل اختبارات واجهة برمجة التطبيقات الخاصة بك كجزء من خط أنابيب التكامل المستمر/النشر المستمر (CI/CD). يمكن دمج Cypress بسهولة في أدوات CI/CD مثل Jenkins أو GitHub Actions أو Travis CI.

إليك مثال على سير عمل GitHub Actions الذي يقوم بتشغيل اختبارات Cypress في كل دفعة:

name: CI

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Run Cypress tests
        run: npx cypress run

يضمن سير العمل هذا تنفيذ اختبارات واجهة برمجة التطبيقات (API) تلقائيًا في كل مرة يتم فيها دفع التعليمات البرمجية إلى الفرع الرئيسي.

أفضل الممارسات لاختبار API مع Cypress

للتأكد من أن اختبارات واجهة برمجة التطبيقات الخاصة بك موثوقة وقابلة للصيانة وفعالة، اتبع أفضل الممارسات التالية:

  1. استخدام متغيرات البيئة: قم بتخزين البيانات الحساسة مثل مفاتيح واجهة برمجة التطبيقات، أو الرموز المميزة، أو عناوين URL الأساسية في متغيرات البيئة.
  2. الاستجابات الوهمية عند الضرورة: إذا كنت لا تريد الوصول إلى واجهة برمجة التطبيقات الحقيقية في كل مرة، فاسخر من استجابات واجهة برمجة التطبيقات باستخدام cy.intercept().
  3. حدود معدل التعامل: إذا كانت واجهة برمجة التطبيقات لديك لها حدود للمعدل، فتأكد من أن اختباراتك تتعامل معها بشكل مناسب عن طريق إضافة عمليات إعادة المحاولة أو التأخير بين الطلبات.
  4. الحفاظ على استقلالية الاختبارات: تأكد من أن كل اختبار لواجهة برمجة التطبيقات (API) مستقل عن الاختبارات الأخرى، بحيث يمكن تشغيلها بأي ترتيب دون مشاكل التبعية.
  5. التركيز على حالات الحافة: اختبر كلاً من المسار السعيد وحالات الحافة (على سبيل المثال، المدخلات غير الصالحة، ومجموعات البيانات الكبيرة، وتحديد المعدل) لتغطية جميع السيناريوهات المحتملة.

خاتمة

يعد اختبار واجهة برمجة التطبيقات (API) جزءًا أساسيًا لضمان عمل التطبيق الخاص بك بسلاسة، حتى عندما يعتمد على خدمات خارجية أو واجهات برمجة التطبيقات الخلفية. يوفر Cypress طريقة بسيطة لكنها قوية لاختبار واجهات برمجة التطبيقات جنبًا إلى جنب مع اختبارات واجهة المستخدم الخاصة بك، مما يجعله خيارًا ممتازًا للمطورين الذين يعملون مع تطبيقات JavaScript الحديثة. من خلال الاستفادة من ميزات مثل cy.request() والتأكيدات وتكامل CI/CD، يمكنك إنشاء مجموعة اختبار قوية وموثوقة لواجهة برمجة التطبيقات (API) التي تكتشف المشكلات مبكرًا وتضمن جودة واجهات برمجة التطبيقات الخاصة بك.

ابدأ باختبار واجهات برمجة التطبيقات الخاصة بك مع Cypress اليوم، وقم بتحسين سير عمل التطوير الخاص بك من خلال اختبارات تلقائية وموثوقة!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/aswani25/api-testing-with-cypress-a-complete-guide-7p7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3