โปรแกรมเมอร์ที่เก่งที่สุดมักทำผิดพลาด ความแตกต่างระหว่างโปรแกรมเมอร์ที่ดีและโปรแกรมเมอร์ที่ไม่ดีคือโปรแกรมเมอร์ที่ดีสามารถค้นหาข้อผิดพลาดได้มากที่สุดเท่าที่จะเป็นไปได้ผ่านการทดสอบ ยิ่งคุณทดสอบจุดบกพร่องได้เร็วเท่าไร คุณก็จะพบจุดบกพร่องได้เร็วยิ่งขึ้นและราคาในการค้นหาและแก้ไขก็ถูกลงด้วย สิ่งนี้อธิบายว่าทำไมการทดสอบซอฟต์แวร์ก่อนที่จะเปิดตัวจึงเป็นปัญหามาก ข้อบกพร่องส่วนใหญ่ไม่เคยพบ และการแก้ไขข้อบกพร่องที่พบนั้นสูงมากจนคุณต้องจัดลำดับความสำคัญในการแก้ไขเฉพาะข้อบกพร่องเหล่านั้น เนื่องจากคุณไม่สามารถแก้ไขทั้งหมดได้
การทดสอบด้วย PHPUnit ไม่ได้แตกต่างไปจากแนวทางที่คุณใช้อย่างสิ้นเชิง พวกเขามีวิธีการที่แตกต่างกัน ความแตกต่างระหว่างทั้งสองคือการตรวจสอบว่าโปรแกรมทำงานอย่างถูกต้องหรือไม่นั้นทำได้ผ่านชุดข้อมูลโค้ดที่สามารถทดสอบได้โดยอัตโนมัติ ข้อมูลโค้ดเหล่านี้เรียกว่าการทดสอบหน่วย ในส่วนนี้ ขั้นแรกเราจะทำการทดสอบอัตโนมัติตามรหัสทดสอบที่พิมพ์ออกมา สมมติว่าเราต้องการทดสอบ Array Array ในตัวของ PHP หนึ่งในการทดสอบที่ต้องทำคือฟังก์ชัน sizeof() ฟังก์ชัน sizeof() ควรส่งคืน 0 สำหรับอาร์เรย์ที่สร้างขึ้นใหม่ เมื่อเราเพิ่มสมาชิกอาร์เรย์ใหม่ sizeof() ควรส่งคืน 1 ตัวอย่างที่ 1 แสดงสิ่งที่เราต้องการทดสอบ
ตัวอย่างที่ 1 ทดสอบอาร์เรย์และขนาดของ ()
<?php
$ฟิกซ์เจอร์ = อาร์เรย์( );
// $fixture ควรว่างเปล่า
$fixture[] = "องค์ประกอบ";
// $fixture ควรมีสมาชิกอาร์เรย์
?>
วิธีทดสอบที่ง่ายที่สุดคือการพิมพ์ผลการทำงานของ sizeof() ก่อนและหลังการเพิ่มสมาชิกอาร์เรย์ หากส่งคืน 0 และ 1 แสดงว่า Array และ sizeof() ทำงานตามปกติ
ตัวอย่างที่ 2 ใช้คำสั่ง print เพื่อทดสอบ Array และ sizeof()
<?php
$ฟิกซ์เจอร์ = อาร์เรย์( );
ขนาดการพิมพ์($fixture) . "n";
$fixture[] = "element";
ขนาดการพิมพ์($fixture) .
?
0
1
ตอนนี้ เราย้ายโปรแกรมทดสอบจากต้องมีการตีความด้วยตนเองไปเป็นการรันโดยอัตโนมัติ ในตัวอย่างที่ 3 เราเปรียบเทียบค่าที่คาดหวังกับค่าจริงและพิมพ์ออกมาหากเท่ากัน หากเราพบว่าผลลัพธ์บางอย่างไม่โอเค เรารู้ว่ามีปัญหา
ตัวอย่างที่ 3 เปรียบเทียบค่าคาดหวังและค่าจริงของ Array และ sizeof()
<?php
$ฟิกซ์เจอร์ = อาร์เรย์( );
ขนาดการพิมพ์($fixture) == 0 ? "okn" : "not okn";
$fixture[] = "element";
ขนาดการพิมพ์($fixture) == 1 ? "okn" : "not okn";
?
ตกลง
ตกลง
ตอนนี้เราแนะนำองค์ประกอบใหม่ หากค่าที่คาดหวังแตกต่างจากค่าจริง เราจะโยนข้อยกเว้น วิธีนี้ทำให้ผลลัพธ์ของเราง่ายขึ้น หากการทดสอบสำเร็จ จะไม่มีอะไรเกิดขึ้น หากมีข้อยกเว้นที่ไม่สามารถจัดการได้ เรารู้ว่ามีบางอย่างผิดปกติ
ตัวอย่างที่ 4 การใช้ฟังก์ชันการยืนยันเพื่อทดสอบ Array และ sizeof()
<?php
$ฟิกซ์เจอร์ = อาร์เรย์( );
assertTrue(sizeof($fixture) = = 0);
$fixture[] = "องค์ประกอบ";
assertTrue(ขนาดของ($fixture) = = 1);
ฟังก์ชั่น assertTrue($เงื่อนไข) {
ถ้า (!$เงื่อนไข) {
โยนข้อยกเว้นใหม่ ("การยืนยันล้มเหลว");
-
-
?>
ตอนนี้การทดสอบเป็นแบบอัตโนมัติเต็มรูปแบบ เวอร์ชันนี้แตกต่างจากเวอร์ชันแรกของเราตรงที่ทำให้การทดสอบเป็นแบบอัตโนมัติทั้งหมด
เป้าหมายของการใช้การทดสอบอัตโนมัติคือทำผิดพลาดให้น้อยที่สุด แม้ว่าโค้ดของคุณยังไม่สมบูรณ์แบบ แต่ด้วยการทดสอบอัตโนมัติที่ดี คุณจะพบว่าข้อผิดพลาดจะลดลงอย่างมาก การทดสอบอัตโนมัติช่วยให้คุณมั่นใจได้ว่าโค้ดของคุณมีความยุติธรรม ด้วยความมั่นใจนี้ คุณสามารถก้าวกระโดดในการออกแบบ ร่วมมือกับทีมของคุณได้ดีขึ้น ปรับปรุงความสัมพันธ์ระหว่างคุณกับลูกค้า และนอนหลับอย่างสงบสุขได้ทุกวัน เพราะคุณสามารถพิสูจน์ได้ว่าระบบดีขึ้นเนื่องจากความพยายามของคุณ