用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/salmandev/arabic-skills-library --skill arabic-api-testing命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| 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 |
يساعد هذه المهارة في إعداد توثيق شامل لاختبار واجهات البرمجة (API Testing) باللغة العربية الفصحى، يتضمن حالات الاختبار، السيناريوهات، النتائج المتوقعة، وتقارير الأخطاء، لتسهيل عملية ضمان الجودة.
استخدم هذه المهارة عندما تحتاج إلى:
أنت مهندس جودة برمجيات (QA Engineer) متخصص في اختبار APIs. عند إعداد التوثيق:
١. الشمول: تغطية جميع السيناريوهات ٢. الوضوح: خطوات قابلة للتكرار ٣. الدقة: نتائج متوقعة محددة ٤. القابلية للأتمتة: هيكل قابل للتحويل لكود
١. معلومات الـ API ٢. حالات الاختبار ٣. البيانات الاختبارية ٤. النتائج والتقارير
الطلب:
وثق اختبار 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"
}
الاستجابة المتوقعة (Expected Response):
Status: 201 Created
{
"success"
خطوات الاختبار:
معايير النجاح:
| البند | التفاصيل |
|---|---|
| المعرف | TC-AUTH-002 |
| العنوان | تسجيل ببريد إلكتروني مكرر |
| النقطة الطرفية | POST /api/v1/auth/register |
| الأولوية | عالية 🔴 |
| النوع | Negative |
الطلب:
{
"email": "existing@example.com",
"password": "Test@123456",
"fullName": "مستخدم جديد",
"phone": "+966501234567"
}
الاستجابة المتوقعة:
Status: 409 Conflict
{
"success": false,
"error": {
"code": "EMAIL_EXISTS",
"message": "البريد الإلكتروني مسجل مسبقاً",
"field": "email"
}
}
خطوات الاختبار:
| البند | التفاصيل |
|---|---|
| المعرف | TC-AUTH-003 |
| العنوان | تسجيل بكلمة مرور ضعيفة |
| النقطة الطرفية | POST /api/v1/auth/register |
| الأولوية | متوسطة 🟡 |
| النوع | Validation |
الطلب:
{
"email": "test2@example.com",
"password": "123",
"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
}
}
}
| البند | التفاصيل |
|---|---|
| المعرف | TC-AUTH-010 |
| العنوان | تسجيل دخول ناجح |
| النقطة الطرفية | POST /api/v1/auth/login |
| الأولوية | عالية 🔴 |
| النوع | Functional |
الطلب:
{
"email": "test@example.com",
"password": "Test@123456"
}
الاستجابة المتوقعة:
Status: 200 OK
{
"success": true,
"message": "تم تسجيل الدخول بنجاح",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "dGhpcyBpcyBhIHJlZnJl...",
"expiresIn": 3600,
"user": {
"userId": "usr_123456",
"email": "test@example.com",
"fullName": "أحمد محمد",
"role": "user"
}
}
}
خطوات الاختبار:
| البند | التفاصيل |
|---|---|
| المعرف | TC-AUTH-011 |
| العنوان | تسجيل دخول بكلمة مرور خاطئة |
| النقطة الطرفية | POST /api/v1/auth/login |
| الأولوية | عالية 🔴 |
| النوع | Negative |
الطلب:
{
"email": "test@example.com",
"password": "WrongPassword123"
}
الاستجابة المتوقعة:
Status: 401 Unauthorized
{
"success": false,
"error": {
"code": "INVALID_CREDENTIALS",
"message": "البريد الإلكتروني أو كلمة المرور غير صحيحة"
}
}
| البند | التفاصيل |
|---|---|
| المعرف | 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 |
| العنوان | تحديث بيانات المستخدم |
| النقطة الطرفية | 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"
}
}
| البند | التفاصيل |
|---|---|
| المعرف | TC-USR-003 |
| العنوان | حذف المستخدم |
| النقطة الطرفية | DELETE /api/v1/users/{userId} |
| الأولوية | عالية 🔴 |
| النوع | Destructive |
الطلب:
DELETE /api/v1/users/usr_123456
Authorization: Bearer {adminAccessToken}
الاستجابة المتوقعة:
Status: 204 No Content
خطوات التحقق الإضافية:
| المعرف | السيناريو | المستخدمين المتزامنين | المدة | RPS المستهدف |
|---|---|---|---|---|
| PERF-001 | تسجيل دخول | ١٠٠ | ٥ دقائق | ٥٠ |
| PERF-002 | جلب بيانات | ٢٠٠ | ١٠ دقائق | ١٠٠ |
| PERF-003 | بحث | ١٥٠ | ٥ دقائق | ٧٥ |
| المقياس | الهدف | الحد المقبول |
|---|---|---|
| زمن الاستجابة المتوسط | < ٢٠٠ مللي ثانية | < ٥٠٠ مللي ثانية |
| زمن الاستجابة ٩٥٪ | < ٥٠٠ مللي ثانية | < ١٠٠٠ مللي ثانية |
| معدل النجاح | ٩٩.٩٪ | ٩٩٪ |
| الأخطاء في الثانية | < ١ | < ٥ |
| المعرف | الاختبار | النوع | الأولوية |
|---|---|---|---|
| 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 | متوسطة |
TC-SEC-004: اختبار حد المعدل
الخطوات:
١. إرسال ١٠٠ طلب خلال دقيقة واحدة من نفس IP
٢. التحقق من رفض الطلبات بعد الحد المسموح
الاستجابة المتوقعة بعد تجاوز الحد:
Status: 429 Too Many Requests
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "تجاوزت حد الطلبات المسموح. حاول بعد ٦٠ ثانية",
"retryAfter": 60
}
}
{
"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);"
]
}
}
]
}
]
}
]
}
describe('API اختبار - المصادقة', () => {
test('TC-AUTH-001: تسجيل مستخدم جديد بنجاح', async () => {
const response = await request(app)
.post('/api/v1/auth/register')
.send({
email: 'test@example.com',
password: 'Test@123456',
fullName: 'أحمد محمد',
phone: '+966501234567'
});
expect(response.status).toBe(201);
expect(response.body.success).toBe(true);
expect(response.body.data).toHaveProperty('userId');
expect(response.body.data.email).toBe('test@example.com');
});
test('TC-AUTH-002: تسجيل ببريد مكرر', async () => {
// أولاً نسجل مستخدم
await registerUser('existing@example.com');
// نحاول تسجيل نفس البريد
const response = await request(app)
.post('/api/v1/auth/register')
.send({
email: 'existing@example.com',
password: 'Test@123456'
});
expect(response.status).toBe(409);
expect(response.body.error.code).toBe('EMAIL_EXISTS');
});
});
# تقرير اختبار API
## معلومات التقرير
| البند | التفاصيل |
|-------|----------|
| **اسم الـ API** | نظام إدارة المستخدمين |
| **الإصدار** | v1.0.0 |
| **تاريخ الاختبار** | ١٥/٠٧/١٤٤٧هـ |
| **المختبِر** | فريق الجودة |
| **البيئة** | Staging |
## ملخص النتائج
| الحالة | العدد | النسبة |
|--------|-------|--------|
| ✅ نجح | ٤٥ | ٩٠٪ |
| ❌ فشل | ٣ | ٦٪ |
| ⚠️ تحذير | ٢ | ٤٪ |
| **المجموع** | **٥٠** | **١٠٠٪** |
## الأخطاء المكتشفة
| # | المعرف | العنوان | الأولوية | الحالة |
|---|--------|---------|----------|--------|
| ١ | BUG-001 | رسالة الخطأ بالإنجليزية بدلاً من العربية | عالية | مفتوح |
| ٢ | BUG-002 | زمن استجابة بطيء في جلب القائمة | متوسطة | قيد المعالجة |
| ٣ | BUG-003 | عدم وجود Validation للرقم الهاتفي | منخفضة | مفتوح |
## التوصيات
١. تعريب جميع رسائل الأخطاء
٢. تحسين أداء نقطة endpoint جلب القائمة
٣. إضافة validation إضافي للرقم الهاتفي
## الاعتماد
☐ مقبول للإنتاج
☐ مقبول بشروط (معالجة الأخطاء العالية)
☐ مرفوض - يحتاج إصلاح
التوقيع: _______________
| English | العربية |
|---|---|
| API | واجهة البرمجة |
| Endpoint | النقطة الطرفية |
| Request | الطلب |
| Response | الاستجابة |
| Authentication | المصادقة |
| Authorization | التفويض |
| Token | رمز |
| Payload | الحمولة |
| Header | الترويسة |
| Query Parameter | معامل الاستعلام |
| Path Parameter | معامل المسار |
| Status Code | كود الحالة |
| Test Case | حالة الاختبار |
| Test Suite | مجموعة الاختبارات |
---
## الكلمات المفتاحية
### العربية:
- "اختبار API"
- "توثيق اختبار"
- "حالات اختبار"
- "تقرير أخطاء"
- "QA عربي"
### English:
- "API testing arabic"
- "test cases arabic"
- "QA documentation arabic"
- "API test plan"
- "bug report arabic"
---
## سجل التغييرات
### v1.0.0
- الإصدار الأولي