Back to "تطبيقات أساسية مع k6: مقدمة"

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

ASP.NET k6 Performance Testing

تطبيقات أساسية مع k6: مقدمة

Tuesday, 02 December 2025

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

هذا هو السيناريو الكابوس كل مخاوف المطورين لكن أغلبهم لا يختبرهم اختبار الأداء ليس اختيارياً - إنه الفرق بين الإطلاق الناجح و صفحة الطوارئ 3AM. هذا الدليل ذو القسمين سيريكم بالضبط كيفية منع هذا السيناريو باستخدام k6، أداة اختبار التحميل الحديثة التي هي قوية بما فيه الكفاية لتطبيقات المشروع ولكنها بسيطة بما يكفي لتشغيلها في خط أنابيب CI/CD.

هذا الجزء الأول من a من إثنان جزء سلسلة يعمل التحميل إختبار مع:

  • الجزء الأول (هذه المادة): مقدمة إلى K6، التركيب، أنواع الاختبار، ولماذا K6
  • الجزء 2: التنفيذ العملي: اختبارات الكتابة، والدمج، والتوصيف، والأمثلة عن العالم الحقيقي

أولاً

اختبار الأداء حاسم لأي إنتاج من تطبيقات ASP.NET الأساسية. سواء كنت تبني مدونة بسيطة، أو بنية خدمات صغرى معقدة، أو تطبيق مؤسسة، تحتاج إلى معرفة كيف يتصرف تطبيقك تحت الحمل. هل سيتعامل مع 100 مستخدم متزامن؟ 1000؟ أين الاختناقات؟ هل تعمل استراتيجية إعدادك؟

هذا دليل شامل يريك كيفية تحميل اختبار تطبيقات ASP.net الأساسية التي تستخدم - واحد من أقوى أدوات اختبار تحميل الأدوات المتاحة في حين أننا سنستخدم نعم نعم على سبيل المثال تطبيقنا التطبيقي (مدوّنة بسيطة قائمة على علامات حدودية مع ذاكرة و مخرجات كهش، التقنيات والأنماط المعروضة هنا تنطبق على (أ) أي طلب من الطلب الأساسي.

بنهاية هذه السلسلة المكونة من جزأين، ستعرفون كيف:

  • الثبات في الثبات و إعداد التهيئة K6 على أي منصة (Windows, Mc, Linux)
  • اختبارات أداء شاملة لسينيات مختلفة
  • ادمج k6 في خط اتصالك مع إجراءات GigtHub
  • استخدم أدوات التوصف (DotTrs، DotMememor) إلى جانب k6 إلى ابحث
  • تنفيذ مختلف استراتيجيات الاختبار: اختبارات التدخين والحمل والضغط والإجهاد والضغط المسبّب والنواقص
  • وضع نظام للكشف عن تراجع الأداء لمنع البطء في البرمجية من الوصول إلى الإنتاج

لماذا الحد الأدنى Blog هو المثال؟ إنه تطبيق ASP.NET 9.0 مع أنماط مشتركة: zazor pages، ذاكرة كشط، مخرجات كشط، ملف I/O، و معالجة العتبة. نُهُج الاختبار التي ستتعلمها تطبق بالتساوي على تطبيقات MVC الخاصة بك، و APIs على شبكة الإنترنت، وتطبيقات بلازور، أو الحد الأدنى من APIs.

ما هو k6 ولماذا استخدمه؟

هو أداة اختبار تحميل حديثة بنيت لمطورات. على عكس الأدوات الأقدم مثل JMeter أو حمولة Runner، k6 هو:

  • مُنْسِج: تم كتابة الاختبارات في جافاسكربت (ES6+)
  • الدورة الأولى:: الكمال لخطوط الأنابيب في إطار المؤتمر الدولي المشترك بين الوكالات المعني بمكافحة التصحر
  • ****: ثنائي واحد، بدون اعتمادات
  • ****: مكتوب في الذهاب للمقاييس الدقيقة
  • ****:: قدرات البرمجة الكاملة للسيناريوهات المعقدة
  • " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ": يمكن أن تندمج مع k6 colog, Grafana, Prometheus

لـ::::::::::::::::::::::::::::::::::::::::

  1. يمكننا أن نختبر: k6 يمكن التحقق من رأس و سلوك
  2. يمكننا محاكاة حركة المرور الحقيقية(أ) المستخدمون المتعددون في الاختبار:
  3. يمكننا التحقق من صحة مطالبات الأداء: يُقسَّم بأوقات الاستجابة الفعلية:
  4. يمكننا الإندماج مع CI/CD: اختبار تلقائي في خط أنابيبنا
  5. يمكننا اختبار سيناريوهات محددةالرشّح، الوظائف الفردية، صفحة الاستقبال

تثبيت

الخيار 1: استخدام الشوكة (موصى به)

choco install k6

الخيار 2: استخدام الجناح

winget install k6 --source winget

الخيار 3: الدليل

  1. يجري دعم تنفيذ GitHub الإصدارات
  2. ثالثاً - k6.exe & لا شيء
  3. اضض إلى مسارك أو نقل 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

قبل أن نغوص في الاختبار، دعونا نفهم التركيب الأساسي لاختبار 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
}

المفاهيم الرئيسية:

  • المستخدمات الافتراضية (VUs): مستخدمون متزامنون مُحَوَّلون
  • الميكم المدة التي يستغرقها الاختبار
  • التحقق من التحقق"تأشيرات لا توقف الإختبار"
  • الميزات: معايير المرور/الإبحار
  • ****: وقت الرد، الناتج، معدل الخطأ

أنواع اختبارات الأداء

قبل اختبار تطبيقك، دعونا نفهم خمسة أنواع رئيسية من اختبارات الحمل ومتى تستخدم كل منها:

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

1 - اختبارات التدخين

****: التحقق من أن النظام يعمل تحت حمولة دنيا

إلى وقت الاستخدام:

  • بعد كل تغيير شفر
  • قبل إجراء اختبارات أكثر كثافة
  • كتحقق من صحة الحالة الصحية في CI/CD

الوصفات:

  • 1-2-1 VVUs (المستخدمون الافتراضيون)
  • مدة قصيرة (30s-1min)
  • الوظائف الأساسية للاختبارات

2 - اختبارات الحمل

****: تقدير الأداء في إطار الحمولة العادية المتوقعة

إلى وقت الاستخدام:

  • (أ) إنشاء أداء خط الأساس
  • التحقق من الوفاء بمقتضيات
  • اختبار تراجع الأداء الدوري

الوصفات:

  • العدد الحقيقي للمستعملين
  • تحميل التحميل
  • المدة المعتادة: 5-15 دقيقة

3- اختبارات الاجهاد

****اعثر على نقطة كسر النظام

إلى وقت الاستخدام:

  • فهم حدود القدرات
  • تحديد الاختناز
  • الجدول ١ - ١ ١

الوصفات:

  • تحميل مُزز
  • دفع ما يتجاوز القدرة العادية
  • المدة: 10-30 دقائق

4 - الاختبارات

****: سلوك اختباري تحت إرتفاعات حركة المرور المفاجئة

إلى وقت الاستخدام:

  • رابعاً - التمهيد لعمليات إطلاق المنتجات
  • (أ) تكلفة التشغيل
  • السلوك المصادق للمصادقة

الوصفات:

  • زيادة كبيرة في التحميل
  • المدة القصيرة
  • المدة الإجمالية: 5-10 دقائق

5 - اختبارات السواك (الاختبارات

****: البحث عن تسريبات الذاكرة والتحلل مع مرور الزمن

إلى وقت الاستخدام:

  • المجموع قبل الإطلاقات الرئيسية
  • خدمات الاختبار لفترات طويلة
  • المادة المثبتة لتنظيف المورد

الوصفات:

  • مستويات تحميل عادي
  • (ساعات أو أيام)
  • رصد التردي
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؟ دعونا نقارن k6 بالبدائل الشعبية:

K6 vs Apach JMetter

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.) □

متى إلى استخدام:

  • الحاجة لأجهزة الاختبار غير التقنية
  • (JDBC، LDAP، SOAP)
  • لديه خبرة JMETER في الفريق
  • الحاجة إلى النظام المكمن

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • اقرب إلى كتابة الاختبارات (JavaScrcrcrbrt vs XML)
  • بصممم من الموارد
  • إدماج أفضل في البرامج المتكاملة/الجماعية
  • خبرة أكثر حدا أحدث تطويرا

محلus هو أداة اختبار الحمولة على أساس بايثون، شعبية في محلات بايثون.

□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ك ٦ - - |---------|----|---------| | اللغة / جافا سكربت / بيثون / | م م م م * سريع جداً (Go renrtime) / مبطِّل (Python GIL) / | اسس استخدام مبسّط جافاسكربت بسيط / بيثونيك، سهل | اختبار المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المُوز المنقولة (مدفوعة) Qoint-in (مجاناً) | الشبكة Limited Limited UI | **** العديد من الأشكال CSV, Web UI

متى تستخدم Locust بدلاً من ذلك:

  • الفريق الأول
  • الاختبار الذي يحتاج إلى اختبار مجاني
  • تريد في الوقت الحقيقي على شبكة الويب URUI أثناء الإختبارات
  • المنطق في الاختبارات Python

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • تحسين أداء القياسات الدقيقة
  • جافاSccrbret أكثر مألوفاً لـ ووب مُطوِر
  • العتبة النظيف/خلاصة الاعتماد
  • تكامل أفضل من حيث المُثليين/الجَرْفَة

**** هو أداة قائمة على نظام Scala مع تقديم تقارير ممتازة.

□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ك ٦ ٢ |---------|----|---------| | اللغة جافاسكربت / سكاليا / جافا / | التقارير تقارير أساسية (+ توسيعات) □ تقارير مدمجة في HTML جميلة وجميلة | & هذا ▪ معتدلة سهلة وسهلة (Scala DSL) o | م م م م ممتاز أو ممتاز ممتاز أو ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز أو ممتاز ممتاز ممتاز | & المصدر غير مفتوح مفتوح تماماً ومفتوح بالكامل ومفتوح مع إضافة المؤسسات | **** K6 سحابة / شركة Gatling Enterprise

متى إلى استخدام:

  • JVV/Scala الخبرة في الفريق
  • الحاجة إلى تقارير مدمجة في التقارير
  • سيناريوهات اختبار مركبة اختبارية HTTP
  • الاحتياجات من تكاليف دعم المؤسسة

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • جاف جافاScCrebr أكثر يسراً
  • مبسط تثبيت و تنفيذ
  • تحسين عمليات الفحص السريعة التي يجريها مركز التنسيق/الفحص السريع
  • أكثر وضوحاً لاختبار بسيط HTTTP

K6 في المدفعية

المدفعية هو أداة اختبار تحميل جافاسكربت أخرى.

المدفعية ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو ميكرو كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام كيلوغرام |---------|----|---------| | ثانياً- التعريف رمز جافا سكربتر رمز YAML + خطاطات البورصة | م م م م أسرع (Go) / أبطأ (Node.js) / | اسس استخدام □ مستندة إلى مدونة □ YAAML config back bcode □ YAML | أنشئ لـ (ي) حمولة اختبار حمولة + اختبار وظيفي | **** (بآلاف دولارات الولايات المتحدة) | الميج □ الامتدادات □ ملحقات □

وقت استخدام المدفعية بدلاً من ذلك:

  • مفضّل YAMAML فوق رمز
  • اختبار الحاجة إلى الاختبار.
  • فشل البحث البحث المُنت المُنت المُنتر المُنت
  • استخدام النظام الإيكولوجي في العقد(ج) بالفعل

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • مقاييس أكثر دقة (Go vs Node.js)
  • نظام العتبة الأفضل
  • مُكن مُنجِز مُجِز
  • أكثر نضجا واستقرارا

K6 vs wrk/ Wrk2

مننك هو أداة قياس مرجعية للوزن المنخفض HTTP.

□ موضعات ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ |---------|----|---------| | اسس استخدام الرقم القياسي القياسي لأسعار الاستهلاك على مستوى رفيع + المستوى المنخفض جيم + لوا / لوا | المباريات • دعم السيناريو السيناريو الغني: الأساس الأساسي للنقاط المرجعية فقط | **** أولاً - معلومات أساسية شاملة | **** لُعْلَى مَنْ مَنْ مِنْ مَنْ مَجَزَاءَ مُلْكَكِرْكِبْكِتْلَ | **** اختبار كامل للحمل الكامل للنقاط المرجعية السريعة

متى إلى استخدام:

  • الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة الحاجة
  • نقطة مرجعية سريعة واحدة من الدرجة الأولى
  • (أ) أداء الاختبار
  • اختبار بروتوكول منخفض المستوى

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • أسهل بكثير لكتابة الاختبارات
  • تحسين الإبلاغ والقياسات
  • (المراحل، المراحل)
  • ودّية فيما بين الدورات

k6 vs playwwright/Cyprs (مسندة على المتصفح)

جاري كتابة وقد عقد مؤتمراً بشأن إعسس (أ) أدوات التشغيل الآلي للمتصفح التي تستخدم أحياناً لاختبار الأحمال.

□ موضعات ْ ْ ْ ْ ْ ْ ْ k6 ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ ْ |---------|----|---------| | النهج HTTP على مستوى البروتوكول | م م م م آلاف من نقاط الضعف/عشرات المتصفحات | **** مواد خفيفة الوزن/ ثقيلة (مقصات) / | تنفيذ □ لا □ نعم □ | ملف ملف ملف الاختبار الوظيفي للاختبارات (E2E)

متى إلى استخدام لعبةwright/Cypress بدلاً من:

  • إلى اختبار تنفيذ
  • جاري التحقق من
  • SPAS الاختبار
  • اختبار E2E

لماذا k6 أفضل لمعظم تطبيقات ASP.net الأساسية:

  • اختبار مستوى البروتوكول بما يكفي لتطبيقات الخوادم
  • & حاجة إلى مزامن
  • استخدام الموارد على نحو أكثر كفاءة بكثير

الملخص: K6's Swit

مُنتِهِك:

  • اختبار تحميل سريع ودقيق
  • مطور مُطور مُيسِي المُطور
  • التكامل فيما بين المؤتمرات/الاجتماعات
  • اختبار HTTTP على مستوى البروتوكول (لا حاجة إلى متصفح)
  • دعم السيناريو الثري (السموك، الحمل، الحمل، الإجهاد، المس، الصنك)
  • التحديث باستخدام النظام الإيكولوجي الجيد
  • استخدام الموارد الخفيفة

هو مثالي لـ:

  • ألف- التطبيقات وخدمات شبكة الإنترنت
  • دعمات محدثات خادم الخادم
  • بوابات الأداء الخاصة بالدائرة/المركز المشترك/المركز
  • اختبار الأداء القائم على المطور
  • التطبيقات التي يُكُرِمُها

النظر في البدائل إذا كنت بحاجة إلى:

  • الاختبار القائم على المستعرض (الاستخدام) جاري كتابة)
  • دعم بروتوكول شامل فيما بعد HTTP (الاستخدام) أكثر من أكثر)
  • الاختبار (الاستخدام) محلus)
  • تقارير مدمجة في داخلات جميلة (الاستخدام) )
  • لطلة اختبارات غير تقنية (الاستخدام) أكثر من أكثر)

الخطوات المقبلة

الآن بما أنك تفهم ما هو k6، كيفية تثبيته، أنواع اختبارات الأداء المتاحة، ولماذا k6 هو خيار عظيم لتطبيقات ASP.NET الأساسية، أنت على استعداد لبدء كتابة الاختبارات الفعلية.

& الجزء 2: التنفيذ العملي حيث نحن سَنَغطّي:

  • إعداد بيئة اختبارك
  • اختبارات التدخين، الحمل، الضغط، الضغط، الارتفاع، واختبارات النقانق
  • & اختبار
  • عمليات محاكاة رحلة المستخدم
  • دمجCCCC/CD في إجراءات GigtHub
  • الكشف عن الأداء
  • تُحَكِّم مع Dott Ttratray and dotMigmor
  • أفضل الممارسات وحل المشاكل

الموارد الخارجة عن

الوثائق

& تحميل تحميل تحميل

  • KMet - اختبار الحمل على أساس جاف
  • محلus - اختبار الحمول القائم على أساس البيثون
  • - اختبار الحمل استناداً إلى القكالا
  • المدفعية - اختبار تحميل العقدة
  • مننك - أداة تحديد النقاط المرجعية HTTP
  • جاري كتابة - تشغيل المتصفح واختباره
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.