الاختبار وإدارة الإصدارات
الجودة وsemver
الاختبار وإدارة الإصدارات درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
لماذا تختبر Gem؟
لأن gem يُستخدم في العديد من المشاريع، فإن الخطأ يؤثر في الجميع. تتيح لك الاختبارات المؤتمتة تغيير الشيفرة بثقة وإثبات استمرار عمل gem بشكل صحيح.
- توثّق الاختبارات السلوك المتوقع.
- تكتشف حالات التراجع قبل الإصدار.
- يشترطها المستخدمون الجادون قبل اعتماد gem.
اختيار إطار الاختبار
الخياران الشائعان هما Minitest (يأتي مع Ruby وخفيف الوزن) وRSpec (يوفر DSL غنيًا وشائع الاستخدام جدًا). كلاهما مناسب؛ اختر أحدهما وأضفه كتبعية للتطوير في gemspec.
مثال على Minitest
اختبارات Minitest عبارة عن فئات عادية تحتوي على دوال تأكيد. إليك مثالًا مكتفيًا ذاتيًا يشغّل منطق gem الخاص بك ويتحقق من النتيجة.
require "minitest/autorun"
def greet(name)
"Hi, " + name
end
class GreetTest < Minitest::Test
def test_greet
assert_equal "Hi, Sam", greet("Sam")
end
endالتأكيدات الشائعة
تأكيدات Minitest المفيدة:
assert_equal expected, actualassert objوrefute objassert_nil valueassert_raises(Error) { ... }
ينبغي أن يتحقق كل اختبار من سلوك واضح واحد.
require "minitest/autorun"
class MathTest < Minitest::Test
def test_addition
assert_equal 4, 2 + 2
end
def test_truth
refute_nil 5
end
endتشغيل الاختبارات وأتمتتها
عادةً ما تضيف مهمة Rake بحيث يشغّل rake test مجموعة الاختبارات كاملة. ثم يشغّل التكامل المستمر المهمة نفسها عند كل عملية دفع، وعلى عدة إصدارات من Ruby، لاكتشاف المشكلات مبكرًا.
ما هي إدارة الإصدارات الدلالية؟
تمنح إدارة الإصدارات الدلالية (semver) معنى لرقم الإصدار MAJOR.MINOR.PATCH:
- MAJOR: تغييرات غير متوافقة في واجهة برمجة التطبيقات.
- MINOR: ميزات جديدة متوافقة مع الإصدارات السابقة.
- PATCH: إصلاحات أخطاء متوافقة مع الإصدارات السابقة.
يعتمد المستخدمون على ذلك للترقية بأمان.
قراءة إصدار
في الإصدار 2.4.1: الإصدار الرئيسي هو 2، والفرعي هو 4، وإصدار التصحيح هو 1. ويؤدي تقسيم السلسلة النصية إلى إظهار هذه الأجزاء.
version = "2.4.1"
major, minor, patch = version.split(".")
puts "Major: " + major
puts "Minor: " + minor
puts "Patch: " + patchمتى تزيد كل جزء
قواعد اتخاذ القرار:
- أصلحت خطأً من دون تغيير واجهة برمجة التطبيقات؟ زد patch.
- أضفت ميزة ولا تزال الشيفرة القديمة تعمل؟ زد minor وأعد patch إلى 0.
- أزلت سلوكًا موجودًا أو غيّرته؟ زد major وأعد minor وpatch إلى 0.
def bump_minor(version)
major, minor, _patch = version.split(".").map(&:to_i)
major.to_s + "." + (minor + 1).to_s + ".0"
end
puts bump_minor("1.3.5")قيود الإصدارات
يثبّت المستخدمون gem الخاص بك باستخدام معاملات في Gemfile الخاص بهم:
'~> 1.4'يسمح بالإصدارات ابتداءً من 1.4 وحتى ما قبل 2.0 (قيد متشائم).'>= 1.4'يسمح بأي إصدار أحدث.'= 1.4.2'يثبت إصدارًا محددًا بدقة.
يُعد القيد المتشائم ~> الأكثر شيوعًا، لأنه يوازن بين التحديثات والأمان.
حافظ على سجل التغييرات
حافظ على ملف CHANGELOG.md يسرد التغييرات في كل إصدار. فهو يوضح للمستخدمين ما الجديد، وما الذي تعطل، وكيفية الترحيل. أرفق إدخالًا في سجل التغييرات مع كل زيادة في الإصدار.
إصدارات ما قبل النشر
تشير إصدارات مثل 2.0.0.beta1 إلى إصدارات تجريبية غير مستقرة. ويجب على المستخدمين اختيار تثبيتها صراحةً، لذا يمكنك توفير إصدارات مبكرة للاختبار من دون التأثير في عمليات التثبيت العادية.
version = "2.0.0.beta1"
puts "Pre-release? " + version.include?("beta").to_sتحقق سريع
اختبر مدى فهمك لإدارة الإصدارات.
مراجعة: الاختبار وإدارة الإصدارات
لقد تعلمت كيفية الحفاظ على موثوقية gem:
- اكتب الاختبارات باستخدام Minitest أو RSpec، وأتمتها باستخدام Rake وCI.
- اتبع semver: MAJOR.MINOR.PATCH.
- زد الجزء المناسب للإصلاحات أو الميزات أو التغييرات غير المتوافقة.
- استخدم قيود
~>وحافظ على سجل للتغييرات.
سننشر بعد ذلك gem إلى RubyGems.
الأسئلة الشائعة
هل درس «الاختبار وإدارة الإصدارات» مجاني؟
نعم — نص درس «الاختبار وإدارة الإصدارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «الاختبار وإدارة الإصدارات»؟
الجودة وsemver تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الاختبار وإدارة الإصدارات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية Gem
- كتابة الشيفرة
- الاختبار وإدارة الإصدارات
- النشر إلى RubyGems