C:
การเขียนการทดสอบ
วิธีการ:
แม้ภาษา C จะไม่มีเฟรมเวิร์กการทดสอบภายในตัวเองเหมือนภาษาอื่น ๆ คุณยังสามารถเขียนการทดสอบได้มีประสิทธิภาพโดยใช้ assert.h สำหรับการยืนยันที่เรียบง่าย หรือรวมเฟรมเวิร์กภายนอกอย่าง CUnit หรือ Unity เพื่อการทดสอบที่มีโครงสร้างมากขึ้น นี่เป็นตัวอย่างพื้นฐานโดยใช้ assert.h เพื่อทดสอบฟังก์ชันที่บวกเลขจำนวนเต็มสองตัว:
#include <assert.h>
#include "my_math.h"
void test_addition() {
assert(add(1, 2) == 3);
assert(add(-1, -2) == -3);
assert(add(0, 0) == 0);
printf("ทุกการทดสอบการบวกผ่าน.\n");
}
int main() {
test_addition();
return 0;
}
ใน my_math.h
คุณอาจมี:
// ฟังก์ชันการบวกแบบง่าย
int add(int a, int b) {
return a + b;
}
การรันฟังก์ชันทดสอบใน main
ฟังก์ชันของคุณจะได้ผลลัพธ์:
ทุกการทดสอบการบวกผ่าน.
สำหรับการตั้งค่าการทดสอบที่ครอบคลุมมากขึ้นโดยใช้เฟรมเวิร์กอย่าง Unity คุณจะรวมเฟรมเวิร์กเข้ากับโครงการของคุณ จากนั้นเขียนกรณีทดสอบในลักษณะเดียวกัน แต่ใช้ API ของเฟรมเวิร์กสำหรับการยืนยันและการรันการทดสอบ
ศึกษาลึก
การทดสอบในภาษา C ในอดีตมักจะเป็นกระบวนการที่ทำด้วยตนเองและค่อนข้างอย่างไม่เป็นทางการ เนื่องจากลักษณะของภาษาที่ระดับต่ำและการขาดเฟรมเวิร์กการทดสอบที่มาตรฐาน วิธีการทดสอบด้วยตนเองนี้บ่อยครั้งทำให้การทดสอบไม่ละเอียดถี่ถ้วนเมื่อเทียบกับภาษาที่มีการสนับสนุนการทดสอบภายในตัว เนื่องด้วยภาษา C มีบทบาทสำคัญในการพัฒนาระบบซอฟต์แวร์พื้นฐาน การขาดเฟรมเวิร์กการทดสอบที่เป็นทางการทำให้ชุมชน C พัฒนาโซลูชันภายนอกเหล่านี้ เช่น CUnit และ Unity
เครื่องมือเหล่านี้ แม้จะอยู่นอกไลบรารีมาตรฐานของ C แต่ก็มีฟังก์ชันการทำงานคล้ายกับเฟรมเวิร์กการทดสอบในภาษาอื่น และมอบวิธีที่มีโครงสร้างในการกำหนด รัน และประเมินการทดสอบ พวกเขาช่วยเชื่อมช่องว่างระหว่างการเข้าถึงระดับระบบของ C และการปฏิบัติการพัฒนาซอฟต์แวร์สมัยใหม่ของการทดสอบอัตโนมัติ น่าสังเกตว่า แม้เครื่องมือเหล่านี้จะช่วยเพิ่มกระบวนการทดสอบใน C ได้อย่างมาก แต่พวกเขาอาจนำมาซึ่งความยากลำบากในการเรียนรู้และเพิ่มความซับซ้อนของการตั้งค่าโครงการเมื่อเปรียบเทียบกับภาษาที่มีการสนับสนุนการทดสอบที่รวมไว้แล้ว ดังนั้นสำหรับโครงการที่ความน่าเชื่อถือและการบำรุงรักษาเป็นสิ่งสำคัญ การลงทุนในการตั้งค่าสภาพแวดล้อมการทดสอบที่เหมาะสมใน C จึงเป็นสิ่งที่คุ้มค่า แม้ว่าจะมีทางเลือกอื่นๆ ก็ตาม