การทดสอบหน่วยคืออะไร
การทดสอบหน่วยเป็นการทดสอบซอฟต์แวร์ประเภทหนึ่งที่มีการทดสอบแต่ละองค์ประกอบของระบบ การทดสอบหน่วยถือเป็นแนวทางปฏิบัติที่สำคัญสำหรับนักพัฒนา ช่วยให้มั่นใจได้ว่าทุกองค์ประกอบของซอฟต์แวร์ทำงานอย่างเหมาะสมตามที่คาดไว้ การทดสอบหน่วยดำเนินการโดยนักพัฒนาเป็นหลักในระหว่างขั้นตอนการเข้ารหัสของการพัฒนาซอฟต์แวร์
การทดสอบหน่วยช่วยให้แก้ไขปัญหาได้ง่าย เนื่องจากนักพัฒนาทราบว่าคอมโพเนนต์ใดของระบบหรือซอฟต์แวร์ที่มีปัญหา และนักพัฒนาสามารถแก้ไขหน่วยนั้นได้
การทดสอบหน่วย Python
หลามมีแพ็คเกจในตัวที่เรียกว่า unittest ซึ่งใช้ในการทดสอบหน่วย การทดสอบหน่วยทำให้รหัสสามารถพิสูจน์ได้ในอนาคต เนื่องจากนักพัฒนาคาดการณ์ถึงกรณีที่เป็นไปได้ที่โค้ดอาจล้มเหลวและโค้ดได้รับการทดสอบกับกรณีเหล่านั้น แม้ว่าเราอาจพลาดในบางกรณี แต่กรณีส่วนใหญ่จะยังคงได้รับการแก้ไขและโค้ดจะ ได้รับการทดสอบกับกรณีเหล่านั้น
สามารถใช้โมดูล unittest ได้โดยการนำเข้าโมดูลนี้ในโปรแกรม python ดังต่อไปนี้
import unittest
ตัวอย่าง
สมมติว่า เรามีฟังก์ชันง่าย ๆ ซึ่งคำนวณพื้นที่ของสี่เหลี่ยมจัตุรัส ให้ไฟล์นี้ถูกบันทึกด้วยชื่อ 'area.py'
def area(a): return (a+a)
ตอนนี้ มาเขียนโค้ดทดสอบหน่วยสำหรับฟังก์ชันด้านบนกัน ซึ่งจะแจ้งให้เราทราบว่าฟังก์ชันของเราให้ผลลัพธ์ที่คาดไว้หรือไม่ ให้บันทึกไฟล์รหัสการทดสอบหน่วยโดยใช้ชื่อ “unit_test.py”
unit_test.py &mnu;
from area import * import unittest class Testarea(unittest.TestCase): def test_area(self): self.assertAlmostEqual(area(5),25) self.assertAlmostEqual(area(3),9) self.assertAlmostEqual(area(4),16)
ที่นี่ ไฟล์ที่มีรหัสที่จะทดสอบจะถูกนำเข้า เมธอด unittest assertAlmostEqual() ถูกนำมาใช้. สิ่งนี้เรียกฟังก์ชันพื้นที่ด้วยอินพุตบางส่วน และพารามิเตอร์ที่สองมีเอาต์พุตที่คาดว่าจะส่งคืนโดยฟังก์ชัน หากผลลัพธ์ที่ส่งคืนโดยพื้นที่ () เท่ากับผลลัพธ์ที่คาดไว้ การทดสอบจะผ่าน ไม่เช่นนั้นจะล้มเหลว
ตอนนี้ ให้เรียกใช้ unit_test.py จากพรอมต์คำสั่งเพื่อตรวจสอบว่าโค้ดพื้นที่ () ของเราผ่านการทดสอบหรือไม่
ดำเนินการคำสั่งต่อไปนี้จากพรอมต์คำสั่งเพื่อเรียกใช้ไฟล์ unit_test
python -m unittest unit_test.py
ผลลัพธ์
C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py F ====================================================================== FAIL: test_area (unit_test.Testarea) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Users\Inderjit Singh\Desktop\unit_test.py", line 7, in test_area self.assertAlmostEqual(area(5),25) AssertionError: 10 != 25 within 7 places (15 difference) ---------------------------------------------------------------------- Ran 1 test in 0.001s FAILED (failures=1)
รหัสของเราล้มเหลวในการทดสอบหน่วย สาเหตุจะได้รับในการติดตามกลับ ฟังก์ชันแรก self.assertAlmostEqual(area(5),25) ทำให้โค้ดของเราล้มเหลว เนื่องจากฟังก์ชันส่งคืน 10 แต่ผลลัพธ์ที่คาดไว้คือ 25
เนื่องจากเป็นฟังก์ชันที่ใช้งานง่าย เราจึงทราบวิธีแก้ปัญหานี้ รหัสพื้นที่ () ของเราไม่ถูกต้อง มันควรจะส่งคืน (a*a) แทนที่จะเป็น (a+a)
มาแก้ไขรหัสพื้นที่ () และทำการทดสอบหน่วยใหม่อีกครั้ง
def area(a): return (a*a)
เรียกใช้ unit_test.py อีกครั้ง
C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
ตอนนี้ เนื่องจากเราได้แก้ไขโค้ดในพื้นที่ () แล้ว มันจึงทำงานสำเร็จโดยมีสถานะตกลง เพื่อให้แน่ใจว่าโค้ดของเราทำงานได้อย่างสมบูรณ์กับทุกกรณีที่ระบุไว้ในไฟล์ unit_test.py
นี่เป็นแนวคิดง่ายๆ ในการให้แนวคิดเกี่ยวกับการทดสอบหน่วย มีฟังก์ชันอื่นๆ มากมายในโมดูล unittest ซึ่งใช้ในการทดสอบหน่วยในกระบวนการพัฒนา