التكامل المستمر
مجموعة الاختبارات التي لم نعد ننتظرها هي مجموعة اختبارات خسرناها بالفعل
الاختبارات في خط التكامل المستمر
يستغرق خط التكامل المستمر لديك ست وعشرين دقيقة. يفتح مطوّر طلب دمج، ويُطلق التنفيذ، ثم ينتقل إلى مهمة أخرى. وبعد نصف ساعة يظهر اختبار من طرف إلى طرف باللون الأحمر؛ فيعيد التشغيل دون أن ينظر في السبب، لأن «هذا الاختبار يفشل من حين لآخر». وبعد خمسين دقيقة من أول commit يمرّ الدمج أخيرًا. ومن بين خمسة طلبات في اليوم، يكون الفريق قد أضاع أربع ساعات في الانتظار، والأهم أنه أضاع عادة قراءة حالات الفشل.
هذه هي نقطة الانقلاب التي ينبغي تجنّبها، ولا علاقة لها بجودة كل اختبار على حدة. تكون المجموعة مفيدة ما دام حكمها يصل بسرعة كافية كي يبقى مرتبطًا بالتغيير الذي أطلقها، وما دام الاختبار الأحمر يعني فعلًا «هناك شيء معطّل». فبعد نحو عشر دقائق ينتقل الناس إلى سياق آخر، وبعد بضع حالات فشل عشوائية يتم التساهل معها يتوقفون عن القراءة. لذلك يعالج هذا الدرس مقدارين: زمن التنفيذ ونسبة حالات الفشل الكاذبة. وكل ما عدا ذلك ينتج عنهما.
تقسيم التنفيذ إلى مراحل
لا تُطلق كل شيء في اللحظة نفسها. ينبغي أن تُصدر الاختبارات السريعة حكمها قبل أن تبدأ الاختبارات البطيئة، لكي يحدث الفشل مبكرًا وتتحرر الوكلاء (agents).
# .github/workflows/tests.yml
name: Tests
on:
pull_request:
push:
branches: [main]
concurrency:
group: tests-${{ github.ref }}
cancel-in-progress: true
jobs:
verification-rapide:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
- run: npx tsc --noEmit
- run: npx vitest run --allowOnly=false --coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: couverture
path: coverage/
retention-days: 7
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش