مقدمة في اختبار واجهة برمجة التطبيقات باستخدام Rest Assured للمبتدئين

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

Amir Hassan

Amir Hassan

26 مايو 2025

مقدمة في اختبار واجهة برمجة التطبيقات باستخدام Rest Assured للمبتدئين

في عالم تطوير البرمجيات، أصبحت واجهات برمجة التطبيقات (APIs) العمود الفقري للتطبيقات الحديثة. مع تزايد تعقيد هذه الواجهات وأهميتها، لم يكن هناك حاجة لمناهج اختبار قوية وفعالة أكثر من أي وقت مضى. أدخل Rest Assured، مكتبة قائمة على جافا غيرت طريقة تعاملنا مع اختبار واجهات برمجة التطبيقات.

حققت Rest Assured شعبية كبيرة بين المطورين ومحترفي ضمان الجودة بفضل بساطتها وقوتها في أتمتة اختبارات REST API. تجعل صيغتها التعبيرية ودمجها السلس مع جافا خيارًا مثاليًا للفرق التي تسعى لتنفيذ استراتيجيات اختبار API شاملة.

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

ما هي Rest Assured في اختبار واجهات برمجة التطبيقات؟

Rest Assured هي مكتبة قائمة على جافا مصممة خصيصًا لاختبار واجهات برمجة التطبيقات RESTful. توفر لغة مخصصة (DSL) لإجراء طلبات HTTP والتحقق من الاستجابات. تشمل الميزات الرئيسية:

ما هي واجهة برمجة التطبيقات REST في الاختبار؟

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

  1. التحقق من التعامل الصحيح مع طرق HTTP (GET، POST، PUT، DELETE، إلخ)
  2. التحقق من رموز حالة الاستجابة
  3. فحص هيكل ومحتوى الحمولة الاستجابية
  4. اختبار سلوك واجهة برمجة التطبيقات تحت سيناريوهات مختلفة (مدخلات صحيحة/غير صحيحة، مصادقة، إلخ)
  5. التحقق من تغييرات الحالة بعد عمليات واجهة برمجة التطبيقات

ما الفرق بين Postman و Rest Assured؟

بينما تُستخدم الأداتان في اختبار واجهات برمجة التطبيقات، إلا أن لهما أغراضًا مختلفة:

الميزة Postman Rest Assured
الواجهة قائمة على واجهة المستخدم الرسومية قائمة على التعليمات البرمجية
اللغة JavaScript Java
منحنى التعلم أقل أكثر حدة
الأتمتة ممكنة مع Newman مدمجة
دمج CI/CD يتطلب إعداد إضافي سلس
مرونة البرمجة النصية مقيدة ببرمجة Postman كامل نظام جافا

عادة ما يُفضل استخدام Rest Assured عندما تحتاج إلى دمج اختبارات واجهات برمجة التطبيقات في إطار أتمتة اختباراتك المستندة إلى جافا أو عندما تحتاج إلى سيناريوهات اختبار أكثر تعقيدًا.

ما الفرق بين TestNG و Rest Assured؟

يخدم كل من TestNG و Rest Assured أغراضًا مختلفة ولكنهما يُستخدمان معًا غالبًا:

الميزة TestNG Rest Assured
الغاية الأساسية إطار اختبار مكتبة اختبار واجهات برمجة التطبيقات
النطاق اختبار متعدد الأغراض محدد لاختبار واجهات برمجة التطبيقات
الميزات تنظيم الاختبارات، التنفيذ المتوازي، التقارير طلبات HTTP، التحقق من الاستجابة
دعم اللغة Java Java

يمكنك استخدام TestNG لتنظيم وتشغيل اختبارات Rest Assured، مجمعًا بين نقاط القوة لكلتا الأداتين. على سبيل المثال:

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class CombinedTest {

    @BeforeClass
    public void setup() {
        baseURI = "https://api.example.com";
        basePath = "/v1";
    }

    @Test(groups = "smoke")
    public void testGetUser() {
        given()
            .pathParam("id", 1)
        .when()
            .get("/users/{id}")
        .then()
            .statusCode(200)
            .body("name", notNullValue());
    }

    @Test(groups = "regression")
    public void testCreateUser() {
        String newUser = "{\"name\":\"John Doe\",\"email\":\"john@example.com\"}";
        
        given()
            .contentType("application/json")
            .body(newUser)
        .when()
            .post("/users")
        .then()
            .statusCode(201)
            .body("id", notNullValue());
    }
}

يستخدم هذا المثال تعليقات TestNG لتنظيم الاختبارات وRest Assured من أجل منطق اختبار واجهة برمجة التطبيقات الفعلي.

البدء باستخدام اختبار واجهات برمجة التطبيقات Rest Assured

قبل أن نتعمق في تفاصيل Rest Assured، دعونا نقوم بإعداد بيئة التطوير الخاصة بنا لضمان استعدادنا لبدء الاختبار.

إعداد بيئتك

تثبيت جافا: تتطلب Rest Assured جافا 8 أو أعلى. قم بتنزيل وتثبيت أحدث JDK من موقع Oracle على الويب أو استخدم OpenJDK.

اختيار IDE: بينما يمكنك استخدام أي محرر نصوص، فإن بيئة التطوير المتكاملة (IDE) يمكن أن تعزز إنتاجيتك بشكل كبير. من الخيارات الشائعة:

إعداد مشروع Maven: سيساعد Maven في إدارة الاعتمادات الخاصة بنا. أنشئ مشروع Maven جديد في IDE الخاص بك أو استخدم سطر الأوامر:

mvn archetype:generate -DgroupId=com.example -DartifactId=rest-assured-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

إضافة اعتماد Rest Assured: افتح ملف pom.xml الخاص بك وأضف الاعتماد التالي:

<dependencies>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>4.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>2.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

يشمل ذلك Rest Assured وTestNG لتنظيم الاختبارات وHamcrest لمطابقة إضافية.

تحديث Maven: قم بتشغيل mvn clean install لتنزيل الاعتمادات.

مع انتهاء هذه الخطوات، أصبحت الآن جاهزًا لبدء كتابة اختبارات Rest Assured!

المفاهيم الأساسية لاختبار واجهات برمجة التطبيقات Rest Assured

يتبع Rest Assured صيغة Given-When-Then، المستوحاة من تطوير مدفوع بالسلوك (BDD). تجعل هذه البنية الاختبارات قابلة للقراءة والبديهة، حتى لمن ليسوا على دراية بقاعدة الشيفرة.

بنية Given-When-Then

دعونا نحلل مثالًا بسيطًا:

import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import org.testng.annotations.Test;

public class SimpleTest {
    @Test
    public void testGetRequest() {
        given()
            .baseUri("https://api.example.com")
        .when()
            .get("/users")
        .then()
            .statusCode(200)
            .body("data.size()", greaterThan(0))
            .body("data[0].id", notNullValue())
            .body("data[0].email", containsString("@"));
    }
}

يفعل هذا الاختبار ما يلي:

  1. يحدد URI الأساسي لواجهة برمجة التطبيقات
  2. يرسل طلب GET إلى نقطة نهاية "/users"
  3. يتحقق أن:

فهم صيغة Rest Assured

تستخدم Rest Assured واجهة سلسة، مما يسمح لك بسلسلة استدعاءات الطرق. إليك تحليل لبعض الطرق الشائعة:

تقنيات اختبار واجهات برمجة التطبيقات Rest Assured المتقدمة

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

التعامل مع المصادقة في اختبار واجهات برمجة التطبيقات Rest Assured

تتطلب العديد من واجهات برمجة التطبيقات المصادقة. تدعم Rest Assured طرق المصادقة المختلفة:

المصادقة الأساسية

given()
    .auth().basic("username", "password")
.when()
    .get("/secure-endpoint")
.then()
    .statusCode(200);

OAuth 2.0

given()
    .auth().oauth2("your_access_token")
.when()
    .get("/oauth2-protected-endpoint")
.then()
    .statusCode(200);

المصادقة المخصصة

لواجهات برمجة التطبيقات التي تحتوي على آليات مصادقة مخصصة، يمكنك إضافة الرؤوس يدويًا:

given()
    .header("X-API-Key", "your-api-key")
.when()
    .get("/custom-auth-endpoint")
.then()
    .statusCode(200);

تمرير الاختبارات في اختبار واجهات برمجة التطبيقات Rest Assured

تتيح الاختبارات المنخفضة تشغ

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات