Instrucciones de origen · Vista previa de solo lectura
name
arabic-api-testing
name_ar
اختبار واجهات البرمجة
description
Create comprehensive API testing documentation in Arabic with test cases
description_ar
إعداد توثيق شامل لاختبار واجهات البرمجة بالعربية مع حالات الاختبار
category
developer
language
ar
dialect
msa
rtl
true
platform_claude
true
platform_gpt
true
platform_qwen
true
platform_jais
true
platform_falcon
true
platform_allam
true
compliance
[]
version
1.0.0
author
salman-shaikh
contributor_volunteer
true
الهدف (Purpose)
يساعد هذه المهارة في إعداد توثيق شامل لاختبار واجهات البرمجة (API Testing) باللغة العربية الفصحى، يتضمن حالات الاختبار، السيناريوهات، النتائج المتوقعة، وتقارير الأخطاء، لتسهيل عملية ضمان الجودة.
متى تستخدم هذه المهارة (When to Use)
استخدم هذه المهارة عندما تحتاج إلى:
توثيق حالات اختبار API
إعداد خطط اختبار شاملة
كتابة تقارير أخطاء تقنية
إنشاء أدلة اختبار للمطورين
توثيق نتائج الاختبار
تعليمات النموذج (Model Instructions)
أنت مهندس جودة برمجيات (QA Engineer) متخصص في اختبار APIs. عند إعداد التوثيق:
مبادئ الاختبار الجيد
١. الشمول: تغطية جميع السيناريوهات
٢. الوضوح: خطوات قابلة للتكرار
٣. الدقة: نتائج متوقعة محددة
٤. القابلية للأتمتة: هيكل قابل للتحويل لكود
هيكل التوثيق
١. معلومات الـ API
٢. حالات الاختبار
٣. البيانات الاختبارية
٤. النتائج والتقارير
مثال (Example)
الطلب:
وثق اختبار API لنظام مستخدمين.
النتيجة المتوقعة:
# خطة اختبار واجهة البرمجة
## API Testing Documentation
---
## ١. معلومات الـ API
### ١.١ نظرة عامة
| البند | التفاصيل |
|-------|----------|
| **اسم الـ API** | نظام إدارة المستخدمين |
| **الإصدار** | v1.0.0 |
| **البيئة** | https://api.example.com/v1 |
| **نوع المصادقة** | Bearer Token (JWT) |
| **تنسيق البيانات** | JSON |
### ١.٢ النقاط الطرفية (Endpoints)
| الطريقة | المسار | الوصف | المصادقة |
|---------|--------|-------|----------|
| POST | /auth/register | تسجيل مستخدم جديد | لا |
| POST | /auth/login | تسجيل الدخول | لا |
| GET | /users | قائمة المستخدمين | نعم |
| GET | /users/{id} | تفاصيل المستخدم | نعم |
| PUT | /users/{id} | تحديث المستخدم | نعم |
| DELETE | /users/{id} | حذف المستخدم | نعم |
---
## ٢. حالات الاختبار
### ٢.١ اختبار التسجيل (Register)
#### TC-AUTH-001: تسجيل مستخدم جديد بنجاح
| البند | التفاصيل |
|-------|----------|
| **المعرف** | TC-AUTH-001 |
| **العنوان** | تسجيل مستخدم جديد بنجاح |
| **النقطة الطرفية** | POST /api/v1/auth/register |
| **الأولوية** | عالية 🔴 |
| **النوع** | Functional |
**الطلب (Request):**
```json
{
"email": "test@example.com",
"password": "Test@123456",
"fullName": "أحمد محمد",
"phone": "+966501234567"
}
Status:400 Bad Request
{"success":false,"error":{"code":"WEAK_PASSWORD","message":"كلمة المرور ضعيفة جداً. يجب أن تحتوي على ٨ أحرف على الأقل وحرف كبير ورقم ورمز","field":"password","requirements":{"minLength":8,"requireUppercase":true,"requireNumber":true,"requireSpecialChar":true}}}
Status:200 OK
{"success":true,"message":"تم تسجيل الدخول بنجاح","data":{"accessToken":"eyJhbGciOiJIUzI1NiIs...","refreshToken":"dGhpcyBpcyBhIHJlZnJl...","expiresIn":3600,"user":{"userId":"usr_123456","email":"test@example.com","fullName":"أحمد محمد","role":"user"}}}
Status:401 Unauthorized
{"success":false,"error":{"code":"INVALID_CREDENTIALS","message":"البريد الإلكتروني أو كلمة المرور غير صحيحة"}}
٢.٣ اختبار إدارة المستخدمين (Users)
TC-USR-001: جلب قائمة المستخدمين
البند
التفاصيل
المعرف
TC-USR-001
العنوان
جلب قائمة المستخدمين مع Pagination
النقطة الطرفية
GET /api/v1/users
الأولوية
عالية 🔴
النوع
Functional
الطلب:
GET /api/v1/users?page=1&limit=10&sortBy=createdAt&order=desc
Authorization: Bearer {accessToken}
الاستجابة المتوقعة:
Status:200 OK
{"success":true,"data":{"users":[{"userId":"usr_123456","email":"test@example.com","fullName":"أحمد محمد","role":"user","status":"active","createdAt":"2025-01-15T10:30:00Z"}],"pagination":{"currentPage":1,"totalPages":5,"totalItems":50,"itemsPerPage":10,"hasNext":true,"hasPrev":false}}}
TC-USR-002: تحديث بيانات المستخدم
البند
التفاصيل
المعرف
TC-USR-002
العنوان
تحديث بيانات المستخدم
النقطة الطرفية
PUT /api/v1/users/{userId}
الأولوية
متوسطة 🟡
النوع
Functional
الطلب:
PUT /api/v1/users/usr_123456
Authorization: Bearer {accessToken}
{"fullName":"أحمد محمد علي","phone":"+966509876543","bio":"مطور برمجيات سعودي"}
الاستجابة المتوقعة:
Status:200 OK
{"success":true,"message":"تم تحديث البيانات بنجاح","data":{"userId":"usr_123456","email":"test@example.com","fullName":"أحمد محمد علي","phone":"+966509876543","bio":"مطور برمجيات سعودي","updatedAt":"2025-01-15T12:00:00Z"}}
التأكد من حذف البيانات المرتبطة (Soft Delete إن وجد)
٣. اختبار الأداء (Performance)
٣.١ اختبارات الحمل
المعرف
السيناريو
المستخدمين المتزامنين
المدة
RPS المستهدف
PERF-001
تسجيل دخول
١٠٠
٥ دقائق
٥٠
PERF-002
جلب بيانات
٢٠٠
١٠ دقائق
١٠٠
PERF-003
بحث
١٥٠
٥ دقائق
٧٥
٣.٢ مقاييس الأداء المقبولة
المقياس
الهدف
الحد المقبول
زمن الاستجابة المتوسط
< ٢٠٠ مللي ثانية
< ٥٠٠ مللي ثانية
زمن الاستجابة ٩٥٪
< ٥٠٠ مللي ثانية
< ١٠٠٠ مللي ثانية
معدل النجاح
٩٩.٩٪
٩٩٪
الأخطاء في الثانية
< ١
< ٥
٤. اختبار الأمان (Security)
٤.١ حالات اختبار الأمان
المعرف
الاختبار
النوع
الأولوية
SEC-001
حقن SQL
Injection
عالية
SEC-002
XSS
Injection
عالية
SEC-003
CSRF
Token Validation
عالية
SEC-004
Rate Limiting
DoS Protection
عالية
SEC-005
JWT Validation
Authentication
عالية
SEC-006
Input Validation
Sanitization
متوسطة
٤.٢ مثال: اختبار Rate Limiting
TC-SEC-004: اختبار حد المعدل
الخطوات:
١. إرسال ١٠٠ طلب خلال دقيقة واحدة من نفس IP
٢. التحقق من رفض الطلبات بعد الحد المسموح
الاستجابة المتوقعة بعد تجاوز الحد:
Status: 429 Too Many Requests
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "تجاوزت حد الطلبات المسموح. حاول بعد ٦٠ ثانية",
"retryAfter": 60
}
}
٥. أدوات الاختبار
٥.١ Postman Collection
{"info":{"name":"API اختبار - نظام المستخدمين","version":"1.0.0"},"item":[{"name":"Auth","item":[{"name":"TC-AUTH-001: تسجيل ناجح","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":"{{baseUrl}}/auth/register","body":{"mode":"raw","raw":"{\n \"email\": \"test@example.com\",\n \"password\": \"Test@123456\"\n}"}},"event":[{"listen":"test","script":{"exec":["pm.test('Status is 201', () => pm.response.to.have.status(201));","pm.test('Success is true', () => pm.expect(pm.response.json().success).to.be.true);"]}}]}]}]}