ການທົດສອບຫົວໜ່ວຍ

ການທົດສອບຫົວໜ່ວຍ

ການທົດສອບແບບ Unit Test ແມ່ນວິທີການທົດສອບທີ່ກວດສອບໜ່ວຍທີ່ນ້ອຍທີ່ສຸດຂອງໂປຣແກຣມ ເຊັ່ນ: function ຫຼື method ແຕ່ລະອັນໂດຍສະເພາະ. ໂດຍການແທນທີ່ການເພິ່ງພາພາຍນອກດ້ວຍ mock ເພື່ອໃຫ້ສາມາດກວດສອບສະເພາະ logic ທີ່ຕ້ອງການໄດ້ຢ່າງວ່ອງໄວ.

"ໜ່ວຍ" ໝາຍຄວາມວ່າຫຍັງ

"ໜ່ວຍ" ໃນ unit test ມີລະດັບຄວາມລະອຽດທີ່ແຕກຕ່າງກັນໄປຕາມພາສາແລະ framework. ບາງຄັ້ງໝາຍເຖິງ function ດຽວ, ບາງຄັ້ງໝາຍເຖິງ class ດຽວຫຼືທັງ module. ສິ່ງທີ່ມີຮ່ວມກັນຄືຫຼັກການ "ທົດສອບໃນສະພາບທີ່ຕັດ external I/O (DB, network, file system) ອອກ".

external dependency ຈະຖືກແທນທີ່ດ້ວຍ mock ຫຼື stub. ຕົວຢ່າງເຊັ່ນ: ສົ່ງຄືນຜົນລັບ query ຂອງ Supabase ຜ່ານ mock object, ຫຼືແທນທີ່ API call ດ້ວຍ stub. ດ້ວຍວິທີນີ້, ຄວາມໄວໃນການ execute ຈຶ່ງຢູ່ໃນລະດັບ millisecond, ແລະສາມາດ run ໄດ້ຫຼາຍຮ້ອຍຫາຫຼາຍພັນ test case ໃນທຸກ commit ໃນ CI pipeline.

ຂໍ້ຈຳກັດຂອງ Mock

ເນື່ອງຈາກ mock ສາມາດສົ່ງຄືນ object ທີ່ມີ property ໃດກໍໄດ້, ຈຶ່ງບໍ່ສາມາດກວດຈັບຄວາມບໍ່ສອດຄ່ອງກັບ DB schema ໄດ້. incident ທີ່ວ່າ "test ຜ່ານ GREEN ທັງໝົດ ແຕ່ເກີດ column does not exist ໃນ production" ນັ້ນບໍ່ແມ່ນເລື່ອງແປກ. unit test ມີຄວາມເຂັ້ມແຂງໃນການກວດສອບ business logic, ແຕ່ຄວາມສອດຄ່ອງຂອງ system boundary ຈຳເປັນຕ້ອງໄດ້ເສີມດ້ວຍ functional test ຫຼື E2E test.

ຄວາມສຳພັນກັບ TDD

TDD (Test-Driven Development) ແມ່ນວິທີການພັດທະນາທີ່ນຳໃຊ້ unit test ເປັນ "ເຄື່ອງມືອອກແບບ". ການຂຽນ test ກ່ອນຈະເຮັດໃຫ້ specification ຂອງ input/output ຂອງ function ຖືກກຳນົດໄວ້ກ່ອນການ implement. ເນື່ອງຈາກ unit test ເປັນສິ່ງທີ່ຕ້ອງມີເປັນພື້ນຖານ, ທັງສອງຈຶ່ງມີຄວາມສຳພັນທີ່ໃກ້ຊິດກັນ.