This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Tuesday, 02 December 2025
تطبيقك يعمل بشكل مثالي على حاسوبك المحمول. اختبار الوحدة يمر. اختبار ادماج يمر. انت تنتقل الى الانتاج ، وفجأة كل شيء يطحن الى التوقف. خمسمائة مستخدم حقيقي ضرب صفحة استقبالك في وقت واحد، وخادمك بدأ في إرجاع 503 خطأ. استراتيجية إعدادك بعناية؟ اتضح انها لا تعمل كما كنت تعتقد. قاعدة البيانات تلك التي اتسائلت عن سرعتها؟ انها تخلق رقعة قنينة على نطاق واسع.
هذا هو السيناريو الكابوس كل مخاوف المطورين لكن أغلبهم لا يختبرهم اختبار الأداء ليس اختيارياً - إنه الفرق بين الإطلاق الناجح و صفحة الطوارئ 3AM. هذا الدليل ذو القسمين سيريكم بالضبط كيفية منع هذا السيناريو باستخدام k6، أداة اختبار التحميل الحديثة التي هي قوية بما فيه الكفاية لتطبيقات المشروع ولكنها بسيطة بما يكفي لتشغيلها في خط أنابيب CI/CD.
هذا الجزء الأول من a من إثنان جزء سلسلة يعمل التحميل إختبار مع:
اختبار الأداء حاسم لأي إنتاج من تطبيقات ASP.NET الأساسية. سواء كنت تبني مدونة بسيطة، أو بنية خدمات صغرى معقدة، أو تطبيق مؤسسة، تحتاج إلى معرفة كيف يتصرف تطبيقك تحت الحمل. هل سيتعامل مع 100 مستخدم متزامن؟ 1000؟ أين الاختناقات؟ هل تعمل استراتيجية إعدادك؟
هذا دليل شامل يريك كيفية تحميل اختبار تطبيقات ASP.net الأساسية التي تستخدم - واحد من أقوى أدوات اختبار تحميل الأدوات المتاحة في حين أننا سنستخدم نعم نعم على سبيل المثال تطبيقنا التطبيقي (مدوّنة بسيطة قائمة على علامات حدودية مع ذاكرة و مخرجات كهش، التقنيات والأنماط المعروضة هنا تنطبق على (أ) أي طلب من الطلب الأساسي.
بنهاية هذه السلسلة المكونة من جزأين، ستعرفون كيف:
لماذا الحد الأدنى Blog هو المثال؟ إنه تطبيق ASP.NET 9.0 مع أنماط مشتركة: zazor pages، ذاكرة كشط، مخرجات كشط، ملف I/O، و معالجة العتبة. نُهُج الاختبار التي ستتعلمها تطبق بالتساوي على تطبيقات MVC الخاصة بك، و APIs على شبكة الإنترنت، وتطبيقات بلازور، أو الحد الأدنى من APIs.
هو أداة اختبار تحميل حديثة بنيت لمطورات. على عكس الأدوات الأقدم مثل JMeter أو حمولة Runner، k6 هو:
لـ::::::::::::::::::::::::::::::::::::::::
الخيار 1: استخدام الشوكة (موصى به)
choco install k6
الخيار 2: استخدام الجناح
winget install k6 --source winget
الخيار 3: الدليل
k6.exe & لا شيءk6.exe لدليل موجود في الوقت الحاليالتثبيت:
k6 version
الخيار 1: استخدام المسكن (موصى به)
brew install k6
الخيار 2: استخدام المواد
sudo port install k6
الخيار 3: الدليل
# Download and install the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-macos-amd64.zip
unzip k6-macos-amd64.zip
sudo cp k6-macos-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6
التثبيت:
k6 version
الخيار 1: استخدام مديري الحزمات
(أ) ديشيان/أوبونتو:
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
(أ) الفيدورا/CentOS/RHEL:
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
الخيار الخيار 2: استخدام الن
sudo snap install k6
الخيار 3: الدليل
# Download the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-linux-amd64.tar.gz
tar -xzf k6-linux-amd64.tar.gz
sudo cp k6-linux-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6
الخيار 4: استخدام المَرْفِر
docker pull grafana/k6:latest
# Run a test
docker run --rm -i grafana/k6:latest run - <script.js
التثبيت:
k6 version
قبل أن نغوص في الاختبار، دعونا نفهم التركيب الأساسي لاختبار k6:
import http from 'k6/http';
import { check, sleep } from 'k6';
// Test configuration
export const options = {
vus: 10, // Virtual users
duration: '30s', // Test duration
};
// Setup function (runs once before test)
export function setup() {
// Prepare test data
return { baseUrl: 'http://localhost:5000' };
}
// Main test function (runs for each VU)
export default function(data) {
const response = http.get(data.baseUrl);
// Assertions
check(response, {
'status is 200': (r) => r.status === 200,
'response time < 200ms': (r) => r.timings.duration < 200,
});
sleep(1); // Wait between iterations
}
// Teardown function (runs once after test)
export function teardown(data) {
// Clean up
}
المفاهيم الرئيسية:
قبل اختبار تطبيقك، دعونا نفهم خمسة أنواع رئيسية من اختبارات الحمل ومتى تستخدم كل منها:
graph TD
A[Performance Testing Types] --> B[Smoke Test]
A --> C[Load Test]
A --> D[Stress Test]
A --> E[Spike Test]
A --> F[Soak Test]
B --> B1[1-2 VUs<br/>30s-1min<br/>Basic Functionality]
C --> C1[Normal Load<br/>5-15 minutes<br/>Verify SLAs]
D --> D1[Gradual Increase<br/>10-30 minutes<br/>Find Breaking Point]
E --> E1[Sudden Spike<br/>5-10 minutes<br/>Test Recovery]
F --> F1[Normal Load<br/>Hours/Days<br/>Memory Leaks]
style B stroke:#90EE90
style C stroke:#87CEEB
style D stroke:#FFD700
style E stroke:#FF6347
style F stroke:#DDA0DD
****: التحقق من أن النظام يعمل تحت حمولة دنيا
إلى وقت الاستخدام:
الوصفات:
****: تقدير الأداء في إطار الحمولة العادية المتوقعة
إلى وقت الاستخدام:
الوصفات:
****اعثر على نقطة كسر النظام
إلى وقت الاستخدام:
الوصفات:
****: سلوك اختباري تحت إرتفاعات حركة المرور المفاجئة
إلى وقت الاستخدام:
الوصفات:
****: البحث عن تسريبات الذاكرة والتحلل مع مرور الزمن
إلى وقت الاستخدام:
الوصفات:
graph LR
A[Start] --> B{Smoke Test Pass?}
B -->|No| C[Fix Issues]
C --> A
B -->|Yes| D{Load Test Pass?}
D -->|No| E[Optimize]
E --> D
D -->|Yes| F{Stress Test}
F --> G{Found Limit?}
G -->|Yes| H[Document Capacity]
G -->|No| I[Increase Load]
I --> F
H --> J{Spike Test Pass?}
J -->|No| K[Improve Resilience]
K --> J
J -->|Yes| L{Soak Test}
L --> M{Memory Stable?}
M -->|No| N[Fix Memory Leaks]
N --> L
M -->|Yes| O[Production Ready]
style O stroke:#90EE90
مع العديد من أدوات اختبار التحميل المتاحة، لماذا تختار k6؟ دعونا نقارن k6 بالبدائل الشعبية:
KMet (منذ عام 1999).
□ موضعات ْ ْ ْ ْ k6 / جِمْيَتَر / |---------|----|---------| | عدد أفراد □ ثنائي واحد، لا اعتمادات تحتاج جافا، تثبيت أثقل □ | ثانياً- التعريف لا يوجد رمز رمز جافاسكربت / XML أو dog o | **** خفيفة الوزن (Go) ثقيلة (Java) | CCC/CD * ممتاز (CLI-First) * متطلبات الملحقات | & هذا □ سهل على المطورين o Steeber، مركز على المبادئ التوجيهية □ | دعم البروتوكول □ HTTP, WebSockets, gRPC owarder (FTP, JDBC, SMTP, etc.) □ HTTP, WebSockets, gRPC overder (FTP, JDBC, SMTP, etc.) □
متى إلى استخدام:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
محلus هو أداة اختبار الحمولة على أساس بايثون، شعبية في محلات بايثون.
□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ك ٦ - - |---------|----|---------| | اللغة / جافا سكربت / بيثون / | م م م م * سريع جداً (Go renrtime) / مبطِّل (Python GIL) / | اسس استخدام مبسّط جافاسكربت بسيط / بيثونيك، سهل | اختبار المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المنقولة (مدفوعة) Qoint-in (مجاناً) | الشبكة Limited Limited UI | **** العديد من الأشكال CSV, Web UI
متى تستخدم Locust بدلاً من ذلك:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
**** هو أداة قائمة على نظام Scala مع تقديم تقارير ممتازة.
□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ك ٦ ٢ |---------|----|---------| | اللغة جافاسكربت / سكاليا / جافا / | التقارير تقارير أساسية (+ توسيعات) □ تقارير مدمجة في HTML جميلة وجميلة | & هذا ▪ معتدلة سهلة وسهلة (Scala DSL) o | م م م م ممتاز أو ممتاز ممتاز أو ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز ممتاز | & المصدر غير مفتوح مفتوح تماماً ومفتوح بالكامل ومفتوح مع إضافة المؤسسات | **** K6 سحابة / شركة Gatling Enterprise
متى إلى استخدام:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
المدفعية هو أداة اختبار تحميل جافاسكربت أخرى.
المدفعية ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام |---------|----|---------| | ثانياً- التعريف رمز جافا سكربتر رمز YAML + خطاطات البورصة | م م م م أسرع (Go) / أبطأ (Node.js) / | اسس استخدام □ مستندة إلى مدونة □ YAAML config back bcode □ YAML | أنشئ لـ (ي) حمولة اختبار حمولة + اختبار وظيفي | **** (بآلاف دولارات الولايات المتحدة) | الميج □ الامتدادات □ ملحقات □
وقت استخدام المدفعية بدلاً من ذلك:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
مننك هو أداة قياس مرجعية للوزن المنخفض HTTP.
□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ |---------|----|---------| | اسس استخدام الرقم القياسي القياسي لأسعار الاستهلاك على مستوى رفيع + المستوى المنخفض جيم + لوا / لوا | المباريات • دعم السيناريو السيناريو الغني: الأساس الأساسي للنقاط المرجعية فقط | **** أولاً - معلومات أساسية شاملة | **** لُعْلَى مَنْ مَنْ مِنْ مَنْ مَجَزَاءَ مُلْكَكِرْكِبْكِتْلَ | **** اختبار كامل للحمل الكامل للنقاط المرجعية السريعة
متى إلى استخدام:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
جاري كتابة وقد عقد مؤتمراً بشأن إعسس (أ) أدوات التشغيل الآلي للمتصفح التي تستخدم أحياناً لاختبار الأحمال.
□ موضعات ْ ْ ْ ْ ْ ْ ْ k6 ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ |---------|----|---------| | النهج HTTP على مستوى البروتوكول | م م م م آلاف من نقاط الضعف/عشرات المتصفحات | **** مواد خفيفة الوزن/ ثقيلة (مقصات) / | تنفيذ □ لا □ نعم □ | ملف ملف ملف الاختبار الوظيفي للاختبارات (E2E)
متى إلى استخدام لعبةwright/Cypress بدلاً من:
لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:
مُنتِهِك:
هو مثالي لـ:
النظر في البدائل إذا كنت بحاجة إلى:
الآن بما أنك تفهم ما هو k6، كيفية تثبيته، أنواع اختبارات الأداء المتاحة، ولماذا k6 هو خيار عظيم لتطبيقات ASP.NET الأساسية، أنت على استعداد لبدء كتابة الاختبارات الفعلية.
& الجزء 2: التنفيذ العملي حيث نحن سَنَغطّي:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.