การทดสอบและการกำหนดเวอร์ชัน
คุณภาพและ semver
การทดสอบและการกำหนดเวอร์ชัน เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
ทำไมต้องทดสอบเจม
เนื่องจากเจมถูกใช้โดยโครงการจำนวนมาก ข้อผิดพลาดเพียงจุดเดียวจึงส่งผลกระทบต่อทุกคน การทดสอบอัตโนมัติช่วยให้คุณเปลี่ยนโค้ดได้อย่างมั่นใจและยืนยันว่าเจมยังทำงานได้ถูกต้อง
- การทดสอบบันทึกพฤติกรรมที่คาดหวังไว้
- การทดสอบตรวจจับปัญหาที่กลับมาเกิดซ้ำก่อนเผยแพร่
- ผู้ใช้ที่จริงจังจะต้องการการทดสอบเหล่านี้ก่อนเลือกใช้เจม
การเลือกกรอบการทำงาน
ตัวเลือกยอดนิยมมีสองแบบ ได้แก่ Minitest (มาพร้อม Ruby และมีน้ำหนักเบา) และ RSpec (มี DSL มากความสามารถและใช้งานกันอย่างแพร่หลาย) ทั้งสองแบบใช้ได้ดี ให้เลือกหนึ่งแบบแล้วเพิ่มเป็นสิ่งที่ต้องพึ่งพาสำหรับการพัฒนาในไฟล์ข้อกำหนดเจม
ตัวอย่าง Minitest
การทดสอบของ Minitest คือคลาสธรรมดาที่มีเมธอดตรวจยืนยัน นี่คือตัวอย่างที่ทำงานได้ในตัวเอง โดยเรียกใช้ตรรกะของเจมและตรวจสอบผลลัพธ์
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 หลายเวอร์ชันเพื่อค้นหาปัญหาได้ตั้งแต่เนิ่น ๆ
การกำหนดเวอร์ชันตามความหมายคืออะไร
การกำหนดเวอร์ชันตามความหมาย (เซมเวอร์) ให้ความหมายกับหมายเลขเวอร์ชัน 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เมื่อใดควรเพิ่มแต่ละส่วน
หลักในการตัดสินใจ:
- แก้ไขข้อผิดพลาดโดยไม่เปลี่ยนส่วนติดต่อใช่หรือไม่ ให้เพิ่มส่วนแก้ไข
- เพิ่มความสามารถใหม่โดยโค้ดเดิมยังทำงานได้ใช่หรือไม่ ให้เพิ่มส่วนรองและตั้งค่าส่วนแก้ไขกลับเป็น 0
- ลบหรือเปลี่ยนพฤติกรรมเดิมใช่หรือไม่ ให้เพิ่มส่วนหลักและตั้งค่าส่วนรองกับส่วนแก้ไขกลับเป็น 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")ข้อจำกัดเวอร์ชัน
ผู้ใช้จะกำหนดเวอร์ชันเจมของคุณด้วยตัวดำเนินการในไฟล์ 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ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจของคุณเกี่ยวกับการกำหนดเวอร์ชัน
สรุป: การทดสอบและการกำหนดเวอร์ชัน
คุณได้เรียนรู้วิธีรักษาความน่าเชื่อถือของเจม:
- เขียนการทดสอบด้วย Minitest หรือ RSpec และทำให้เป็นอัตโนมัติด้วย Rake กับการผสานรวมอย่างต่อเนื่อง
- ปฏิบัติตามเซมเวอร์: MAJOR.MINOR.PATCH
- เพิ่มส่วนที่ถูกต้องสำหรับการแก้ไข ความสามารถใหม่ หรือการเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้
- ใช้ข้อจำกัด
~>และดูแลบันทึกการเปลี่ยนแปลง
ถัดไปเราจะเผยแพร่เจมไปยัง RubyGems
คำถามที่พบบ่อย
บทเรียน “การทดสอบและการกำหนดเวอร์ชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทดสอบและการกำหนดเวอร์ชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบและการกำหนดเวอร์ชัน”
คุณภาพและ semver คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การทดสอบและการกำหนดเวอร์ชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้าง Gem
- การเขียนโค้ด
- การทดสอบและการกำหนดเวอร์ชัน
- การเผยแพร่ไปยัง RubyGems