10 เครื่องมือทดสอบ PHP สำหรับปลั๊กอิน WordPress

เผยแพร่แล้ว: 2022-08-05

ไม่มีซอฟต์แวร์ใดปราศจากข้อบกพร่อง นี่เป็นสัจพจน์ที่ใช้กับทุกภาษาการเขียนโปรแกรมและทุกแอปพลิเคชัน

เมื่อบั๊กเหล่านี้ถูกปรับใช้ภายในเว็บไซต์ของคุณในเวอร์ชันที่ใช้งานจริง คุณอาจได้รับผลกระทบจากความรุนแรงที่แตกต่างกัน เหล่านี้คือตัวอย่างบางส่วน ตั้งแต่สร้างความรำคาญไปจนถึงความเสียหายทางเศรษฐกิจ:

  • ไม่รุนแรง: ผู้ใช้ไม่สามารถคลิกลิงก์ที่เสียได้
  • ร้ายแรง: ปุ่ม "ส่ง" ของแบบฟอร์มติดต่อไม่ทำงาน ซึ่งผู้ใช้จะค้นพบหลังจากเขียนข้อความแล้วเท่านั้น
  • รุนแรง: เกตเวย์การชำระเงินไม่ได้รับการกำหนดค่าอย่างเหมาะสม ทำให้ผู้ใช้ไม่สามารถซื้อผลิตภัณฑ์ในร้านค้าอีคอมเมิร์ซของคุณได้ ดังนั้นจึงละทิ้งไซต์

ไม่มีเครื่องมือใดเพียงพอที่จะจัดการกับการทดสอบแอปพลิเคชันทุกด้าน... แต่ด้วยความช่วยเหลือเล็กน้อยจากคู่มือนี้ คุณสามารถสร้างสแต็กสำหรับโปรเจ็กต์ถัดไปได้ คลิกเพื่อทวีต
ไม่มีเครื่องมือใดเพียงพอที่จะจัดการทุกแง่มุมของการทดสอบแอปพลิเคชันจากทุกมุมที่เป็นไปได้ อันที่จริง นอกจากการค้นหาจุดบกพร่องแล้ว ยังต้องดำเนินการทดสอบเพิ่มเติมเพื่อตรวจสอบฟังก์ชันอื่นๆ ของแอปพลิเคชัน เช่น:

  • การเข้าถึงและการใช้งาน
  • ประสิทธิภาพที่ยอมรับได้
  • การจัดการการจราจรและการบรรทุก


ในบทความนี้ เราจะทบทวน 10 เครื่องมือที่สร้างโดยชุมชนโอเพ่นซอร์ส ซึ่งสามารถช่วยสร้างสแต็กสำหรับการทดสอบโค้ด PHP ในปลั๊กอิน WordPress เครื่องมือเหล่านี้บางส่วนได้รับการออกแบบมาโดยเฉพาะสำหรับการทดสอบโค้ด PHP; อื่น ๆ มีไว้สำหรับการทดสอบโค้ด WordPress; และเครื่องมืออื่นๆ อีกสองสามตัวถูกสร้างขึ้นเพื่อจัดการกับฟังก์ชันทั่วไปที่เป็นประโยชน์สำหรับการทดสอบ

1. DevKinsta

รายละเอียดสำหรับไซต์ WordPress ท้องถิ่นใน DevKinsta
รายละเอียดสำหรับไซต์ WordPress ท้องถิ่นใน DevKinsta

DevKinsta เป็นชุดพัฒนาท้องถิ่นสำหรับไซต์ WordPress เพียงแค่ให้รายละเอียดพื้นฐาน อินสแตนซ์ท้องถิ่นของไซต์ WordPress จะถูกติดตั้งทันที และมาพร้อมกับเครื่องมือการพัฒนาที่มีประโยชน์หลายอย่าง เช่น กล่องจดหมายอีเมล ตัวจัดการฐานข้อมูล และการบันทึกเพื่อการแก้ไขปัญหาที่ง่ายขึ้น

นักพัฒนาและนักออกแบบมักใช้ DevKinsta เมื่อสร้างธีมและปลั๊กอิน WordPress แต่ยังสามารถใช้เป็นเว็บเซิร์ฟเวอร์ในเครื่องเพื่อดำเนินการทดสอบการผสานรวมและฟังก์ชันการทำงาน ดำเนินการควบคู่ไปกับเครื่องมือ HTTP ที่ช่วยคุณตรวจสอบเนื้อหาการตอบกลับและส่วนหัวว่าถูกต้อง

คุณสมบัติเด่นของ DevKinsta คือ:

  • ง่ายต่อการสร้างสภาพแวดล้อม WordPress ใหม่และลบออกเมื่อไม่ต้องการอีกต่อไป
  • อนุญาตให้ทดสอบกับเวอร์ชันที่รองรับของ PHP และ WordPress และชุดค่าผสมใด ๆ ก็ได้
  • ผสานรวมกับ MyKinsta ได้อย่างราบรื่นซึ่งผู้ใช้สามารถสร้างการสำรองข้อมูลภายนอกของไซต์และข้อมูลของตนได้

2. PHPUnit

โลโก้ PHPUnit
โลโก้ PHPUnit

PHPUnit เป็นเฟรมเวิร์กการทดสอบเชิงโปรแกรมเมอร์สำหรับ PHP เป็นเฟรมเวิร์กที่ได้รับความนิยมมากที่สุดสำหรับการดำเนินการทดสอบหน่วยในโค้ด PHP โดยมีวัตถุประสงค์เพื่อตรวจสอบความถูกต้องของซอร์สโค้ดแต่ละหน่วย

การทดสอบ PHPUnit ช่วยให้นักพัฒนาสามารถค้นหาปัญหาได้โดยเร็วที่สุดภายในวัฏจักรการพัฒนา ช่วยให้มั่นใจว่าไม่มีการถดถอยของโค้ด (เช่น การเปลี่ยนแปลงโค้ดบางส่วนไม่ได้ทำให้เกิดปัญหาที่อื่น)

คุณสมบัติเด่นของ PHPUnit คือ:

  • การทดสอบคุณสมบัติใหม่
  • การตรวจสอบโค้ดที่ปรับโครงสร้างใหม่
  • สามารถดำเนินการอัตโนมัติและดำเนินการได้อย่างสมบูรณ์ภายในกระบวนการบูรณาการแบบต่อเนื่องที่เลือกได้
  • แก้จุดบกพร่อง
  • เอกสารอัตโนมัติเกี่ยวกับการใช้งานที่คาดไว้ผ่านการเรียกใช้ฟังก์ชันและข้อจำกัด
  • อนุญาตให้ใช้แนวทาง Test-Driven Development (TDD) ที่นักพัฒนาสร้างการทดสอบครั้งแรกก่อน จากนั้นจึงใช้ฟังก์ชัน

3. สมองลิง

โลโก้ลิงสมอง
โลโก้ลิงสมอง

Brain Monkey เป็นโปรแกรมทดสอบสำหรับ PHP และ WordPress มันมีเครื่องมือที่ไม่เชื่อเรื่องพระเจ้ากรอบงานที่ให้คุณกำหนดวิธี PHP ใหม่และทดสอบพฤติกรรมของแอปพลิเคชัน PHP ใด ๆ นอกจากนี้ยังมีเครื่องมือเฉพาะสำหรับการทดสอบโค้ด WordPress

คุณสมบัติเด่นของ Brain Monkey คือ:

  • อนุญาตให้การทดสอบหน่วยโต้ตอบกับไลบรารีภายนอกที่ไม่ได้โหลด
  • อนุญาตให้เรียกใช้ฟังก์ชัน WordPress โดยไม่ต้องโหลดสภาพแวดล้อมของ WordPress
  • สามารถยืนยันได้ว่าฟังก์ชัน WordPress (เช่น add_filter หรือ do_action ) เรียกใช้ฟังก์ชันตามที่คาดไว้ได้

4. Brain Faker

Brain Faker บน GitHub
Brain Faker บน GitHub

Brain Faker ใช้ Faker (ไลบรารี PHP ยอดนิยมสำหรับสร้างข้อมูลปลอม) และ Brain Monkey เพื่อให้สร้างอ็อบเจกต์ WordPress ปลอมและฟังก์ชันที่เกี่ยวข้องได้ง่ายสำหรับคุณในการทดสอบ รวมถึง:

  • อินสแตนซ์ WP_Post และฟังก์ชันจำลองที่เกี่ยวข้อง เช่น get_post และ get_post_field
  • อินสแตนซ์ WP_User และฟังก์ชันที่เกี่ยวข้องกับการจำลอง เช่น get_userdata , get_user_by , user_can และอื่นๆ
  • อินสแตนซ์ WP_Term และฟังก์ชันที่เกี่ยวข้องกับการจำลอง เช่น get_term และ get_term_by
  • อินสแตนซ์ WP_Comment
  • อินสแตนซ์ WP_Site และฟังก์ชันที่เกี่ยวข้องกับการจำลอง เช่น get_site
  • อินสแตนซ์ WP_Post_Type และฟังก์ชันที่เกี่ยวข้องกับการจำลอง เช่น get_post_type_object และ post_type_exists
  • อินสแตนซ์ WP_Taxonomy และการจำลองฟังก์ชันที่เกี่ยวข้อง เช่น get_taxonomy และ taxonomy_exists
  • อินสแตนซ์ WP_Error

คุณสมบัติเด่นของ Brain Faker คือ:

  • แทรกข้อมูล WordPress ปลอมแต่เหมือนจริงลงในการทดสอบหน่วย — การเข้าถึงวันที่แก้ไขของโพสต์ปลอมจะเป็นวันที่ (เช่น 2022-04-17T13:06:58+00:00 ) ชื่อผู้ใช้จะเหมาะสม (เช่น "John Smith" ) อินสแตนซ์โพสต์ปลอมถูกสร้างโดยอินสแตนซ์ผู้ใช้ปลอม เป็นต้น
  • ข้อมูลปลอมสามารถจัดเตรียมไว้ล่วงหน้าหรือสร้างแบบสุ่มได้
  • ขยายได้ — นักพัฒนาสามารถจำลองคลาสและฟังก์ชั่นจากปลั๊กอิน WordPress ของตัวเองได้

5. การเยาะเย้ย

การเยาะเย้ยบน GitHub
การเยาะเย้ยบน GitHub

การเยาะเย้ยคือเฟรมเวิร์กวัตถุจำลอง PHP ที่เรียบง่ายแต่ยืดหยุ่นซึ่งมีไว้สำหรับใช้ร่วมกับ PHPUnit, PHPSpec หรือเฟรมเวิร์กการทดสอบหน่วยอื่น ๆ มีกรอบการทดสอบแบบคู่ที่สามารถกำหนดการดำเนินการและการโต้ตอบของวัตถุที่เป็นไปได้ทั้งหมดโดยใช้ภาษาเฉพาะโดเมน (DSL) ที่มนุษย์สามารถอ่านได้

คุณสมบัติเด่นของการเยาะเย้ยคือ:

  • เปิดใช้งานการสร้างวัตถุจำลองและต้นขั้วที่ยืดหยุ่น (ซึ่งให้คำตอบสำเร็จรูปที่กำหนดไว้ล่วงหน้าสำหรับการเรียกเฉพาะที่ทำระหว่างการทดสอบ)
  • ปรับปรุงความสามารถในการแยกการทดสอบของ PHPUnit
  • API ที่ยืดหยุ่นเพื่อแสดงความคาดหวังที่เยาะเย้ย เลียนแบบคำอธิบายภาษาธรรมชาติให้มากที่สุด (เช่น $mock->shouldReceive('myMethod')->once()->andReturn('Hello world!'); )
  • การทดสอบหน่วยโดยใช้อ็อบเจ็กต์จำลองในหน่วยความจำเพื่อหลีกเลี่ยงความจำเป็นในการเข้าถึงระบบที่ช้ากว่า (เช่น ฐานข้อมูล ระบบไฟล์ หรือบริการภายนอก)
  • สามารถล้อเลียนได้ทั้งพฤติกรรมที่กำหนดและไม่กำหนดขึ้น

6. WordPress Native Export Tool

เครื่องมือส่งออก WordPress
เครื่องมือส่งออก WordPress

เครื่องมือส่งออกดั้งเดิมของ WordPress จะดาวน์โหลดข้อมูล WordPress ของไซต์ไปยังอุปกรณ์ของคุณเป็นไฟล์ XML รวมถึงโพสต์ หน้า ประเภทโพสต์ที่กำหนดเอง ความคิดเห็น ฟิลด์ที่กำหนดเอง หมวดหมู่ แท็ก การจัดหมวดหมู่แบบกำหนดเอง ผู้ใช้ และสื่อ ไฟล์ XML มีรูปแบบที่กำหนดเอง (เรียกว่าไฟล์ WordPress eXtended RSS หรือ WXR) ที่นำเข้าไปยังไซต์ WordPress ใดก็ได้

เครื่องมือนี้ไม่ได้ออกแบบมาสำหรับการทดสอบโดยเฉพาะ อย่างไรก็ตาม ประโยชน์ของมันมาจากการสร้างสแน็ปช็อตของฐานข้อมูล WordPress ที่มีชุดข้อมูลที่เหมาะสม ซึ่งสามารถนำไปใช้ในการทดสอบได้ ซึ่งหมายความว่าไซต์ WordPress ที่ใช้งานจริงซึ่งมีข้อมูลจริงสามารถส่งออกและนำเข้าไปยังอินสแตนซ์การพัฒนาหรือการทดสอบเพื่อทดสอบการทำงานใหม่ได้

คุณสมบัติเด่นของเครื่องมือส่งออกของ WordPress คือ:

  • การสร้างข้อมูลการทดสอบโดยใช้ไซต์ WordPress จริง
  • ไฟล์ส่งออกที่แชร์ได้ของฐานข้อมูลทั้งหมด
  • มีประโยชน์ทั้งสำหรับการผสานรวมและการทดสอบหน่วย

7. Guzzle

โลโก้ Guzzle
โลโก้ Guzzle

Guzzle เป็นไคลเอนต์ PHP HTTP ที่ทำให้ง่ายต่อการส่งคำขอ HTTP และรวมเข้ากับบริการเว็บ

Guzzle เป็นเครื่องมือทั่วไป ดังนั้นการทดสอบเป็นเพียงหนึ่งในกรณีการใช้งานที่เป็นไปได้ ร่วมกับเว็บเซิร์ฟเวอร์ในพื้นที่ เช่น DevKinsta Guzzle ทำให้สามารถทำการทดสอบการรวมได้: คุณสามารถใช้ Guzzle เพื่อส่งคำขอ HTTP กับเว็บเซิร์ฟเวอร์การพัฒนา จากนั้นส่งการตอบสนองต่อการทดสอบหน่วยใน PHPUnit ที่ตรวจสอบเนื้อหาและส่วนหัว เป็นไปตามคาด

คุณสมบัติเด่นของ Guzzle คือ:

  • เป็นไปตามคำแนะนำมาตรฐาน PHP “PSR-7” (สำหรับส่วนต่อประสานข้อความ HTTP) ไม่รวมการล็อคอินของผู้ขาย
  • ง่ายและรวดเร็ว
  • การทดสอบดำเนินการกับไซต์ WordPress จริง เพิ่มความน่าเชื่อถือ
  • สามารถดำเนินการได้จากภายใน PHPUnit เพื่อความสะดวกและรวดเร็ว
  • การทดสอบการรวมสามารถเป็นไปโดยอัตโนมัติและเพิ่มไปยังกระบวนการบูรณาการอย่างต่อเนื่อง

8. WP-CLI

โลโก้ WP-CLI
โลโก้ WP-CLI

WP-CLI เป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับ WordPress ด้วยวิธีนี้ คุณสามารถอัปเดตปลั๊กอิน กำหนดค่าการติดตั้งหลายไซต์ และอีกมากมาย โดยไม่ต้องใช้เว็บเบราว์เซอร์

WP-CLI ไม่ใช่เครื่องมือทดสอบโดยเฉพาะ แต่การทดสอบเป็นหนึ่งในกรณีการใช้งานจำนวนมาก ตัวอย่างเช่น หลังจากเปิดเว็บเซิร์ฟเวอร์การพัฒนาใหม่ คุณสามารถรันสคริปต์ทุบตีที่มีคำสั่ง WP-CLI เพื่อนำเข้าข้อมูลการทดสอบไปยังไซต์ WordPress สร้างผู้ใช้ที่มีบทบาทและความสามารถที่เหมาะสม ติดตั้งปลั๊กอินของบุคคลที่สามที่จำเป็น และ งานดังกล่าวอื่น ๆ

เนื่องจากสคริปต์ที่มีคำสั่ง WP-CLI สามารถจัดเก็บในที่เก็บ Git ของคุณ กระบวนการในการดำเนินการทดสอบการผสานรวมจึงเป็นแบบอัตโนมัติและผสานรวมภายในกระบวนการการรวมอย่างต่อเนื่องของคุณ:

  1. ใช้เครื่องมือส่งออกของ WordPress เพื่อสร้างข้อมูลการทดสอบจริง และจัดเก็บไว้ในที่เก็บ Git
  2. ใช้ DevKinsta เพื่อเปิดใช้เว็บเซิร์ฟเวอร์ด้วยอินสแตนซ์ WordPress ใหม่
  3. ใช้ WP-CLI เพื่อนำเข้าข้อมูลการทดสอบไปยังไซต์ WordPress (DevKinsta สามารถใช้งานได้ผ่าน WP-CLI)
  4. สร้างการทดสอบหน่วยใน PHPUnit โดยให้ Guzzle ดำเนินการตามคำขอ HTTP กับเว็บเซิร์ฟเวอร์เพื่อตรวจสอบเนื้อหาการตอบกลับและส่วนหัวของคุณ

คุณสมบัติเด่นของ WP-CLI คือ:

  • อนุญาตให้เรียกใช้คำสั่งจากระยะไกลกับอินสแตนซ์ WordPress ผ่านอินเทอร์เฟซบรรทัดคำสั่ง
  • ขยายได้ด้วยเครื่องมืออื่นๆ
  • ปรับปรุงความสามารถของกองทดสอบ
  • ช่วยให้กระบวนการอัตโนมัติเต็มรูปแบบ

9. XDebug

โลโก้ XDebug
โลโก้ XDebug

XDebug เป็นส่วนขยายสำหรับ PHP ที่มีฟีเจอร์มากมายเพื่อปรับปรุงประสบการณ์การพัฒนา PHP รวมถึงการดีบัก การปรับปรุงการรายงานข้อผิดพลาดของ PHP การติดตาม การทำโปรไฟล์ และการวิเคราะห์ความครอบคลุมของโค้ด

XDebug จะไม่ช่วยคุณทดสอบโค้ดของคุณ แต่จะช่วยค้นหาว่าจุดบกพร่องอยู่ที่ไหน การรวม XDebug เข้ากับ PHPUnit นั้นมีประสิทธิภาพเป็นพิเศษ: หากการทดสอบล้มเหลวและคุณไม่พบที่มาของปัญหา คุณสามารถใช้ XDebug เพื่อเพิ่มเบรกพอยต์ในโค้ดการทดสอบหน่วย เมื่อเรียกใช้การทดสอบหน่วยอีกครั้ง สคริปต์ PHP จะหยุดชั่วคราวที่จุดสั่งหยุดแต่ละจุด ช่วยให้คุณตรวจสอบสถานะปัจจุบันของการดำเนินการได้ (สแต็กการโทร ค่าคุณสมบัติและค่าออบเจ็กต์ ฯลฯ) และพยายามค้นหาว่ามีอะไรผิดปกติ

คุณสมบัติเด่นของ XDebug คือ:

  • การผสานรวมคุณสมบัติสำหรับโปรแกรมแก้ไข PHP ยอดนิยม รวมถึง VS Code, PHPStorm และ Sublime
  • โปรไฟล์ใช้เวลาเท่าใดในการเรียกใช้ฟังก์ชันทุกครั้งและหน่วยความจำที่ใช้ไป
  • มีประสิทธิภาพมากกว่าการใช้ var_dump เพื่อดีบักโค้ด
  • อนุญาตให้แก้ไขค่าตัวแปรได้ทันทีเมื่อหยุดที่เบรกพอยต์

10. PHPStan

โลโก้ PHPStan
โลโก้ PHPStan

PHPStan เป็นเครื่องมือวิเคราะห์แบบคงที่สำหรับ PHP ออกแบบมาเพื่อค้นหาจุดบกพร่องในโค้ดก่อนที่จะเขียนการทดสอบ

เป้าหมายของ PHPStan คือการลดจำนวนการทดสอบที่นักพัฒนาซอฟต์แวร์ต้องเขียน เครื่องมือนี้เป็นเครื่องมือแรกที่ดำเนินการในกลุ่มทดสอบ โดยจะดักจับจุดบกพร่องให้ได้มากที่สุด เฉพาะจุดบกพร่องที่ไม่สามารถอนุมานได้จากการวิเคราะห์แบบสถิต (เช่น ข้อผิดพลาดที่มีตรรกะ) จะต้องได้รับการตรวจสอบผ่านการทดสอบหน่วย

PHPStan ทำงานโดยการสแกนฐานโค้ดทั้งหมดและมองหาสิ่งที่ไม่ตรงกัน ตัวอย่างเช่น ไม่สามารถกำหนดค่าการตอบสนองจากฟังก์ชันที่ส่งกลับค่าทศนิยมให้กับพารามิเตอร์ฟังก์ชันของชนิดจำนวนเต็ม เมื่อใดก็ตามที่โค้ดมีเหตุการณ์ดังกล่าว นั่นเป็นข้อบกพร่องที่อาจเกิดขึ้น และ PHPStan จะแจ้งเตือนคุณในระหว่างขั้นตอนการพัฒนา ทันทีที่คุณกำลังเขียนโค้ดแอปพลิเคชัน

คุณสมบัติเด่นของ PHPStan คือ:

  • ระบบอัตโนมัติและการรวมภายในกระบวนการบูรณาการอย่างต่อเนื่องที่มีอยู่ของคุณ
  • ค้นหาจุดบกพร่องที่ยุ่งยากมากมาย เช่น ประเภทไม่ตรงกัน
  • สแกนโค้ดเบสทั้งหมด หาจุดบกพร่องในส่วนของโค้ดที่ไม่ค่อยได้ใช้งาน
  • จัดในระดับความซับซ้อนที่เพิ่มขึ้นเพื่อให้สามารถบูรณาการอย่างค่อยเป็นค่อยไป
  • ส่วนขยายคุณสมบัติสำหรับเฟรมเวิร์ก PHP และ CMS ที่ได้รับความนิยมสูงสุด รวมถึง Symfony, Laravel, Doctrine, Nette และ WordPress

สรุป

ค่าใช้จ่ายในการมีข้อบกพร่องโดยไม่มีใครสังเกตเห็นในแอปพลิเคชันของคุณในการผลิตอาจสร้างความเสียหายต่อชื่อเสียงและรายได้ของคุณ ดังนั้นคุณต้องพยายามกำจัดมันก่อนที่จะส่งผลกระทบต่อผู้ใช้ของคุณ
ลองดูเครื่องมือที่มีประโยชน์ 10 อย่างเหล่านี้ที่จะช่วยคุณสร้างสแต็กอันทรงพลังสำหรับทดสอบโค้ด PHP ในปลั๊กอิน WordPress คลิกเพื่อทวีต
ในการใช้งานที่ซับซ้อน แทบจะเป็นไปไม่ได้เลยที่จะมั่นใจได้ 100% ว่าจะไม่มีข้อบกพร่อง ด้วยเหตุนี้ คุณต้องตั้งค่ากระบวนการเพื่อค้นหาและลบจุดบกพร่องให้ได้มากที่สุดในระหว่างรอบการพัฒนาเริ่มต้น

ด้วยชุดเครื่องมือทดสอบที่ออกแบบมาอย่างดี คุณสามารถลดโอกาสที่แอปพลิเคชันของคุณจะทำงานในลักษณะที่ไม่คาดคิดได้อย่างมาก ชุมชนโอเพ่นซอร์สได้สร้างและจัดเตรียมเครื่องมือมากมายเพื่อทดสอบแง่มุมต่างๆ ของแอปพลิเคชัน ซึ่งคุณทำได้และควรทำ! — ใช้ประโยชน์จากเพื่อสร้างกองทดสอบที่ครอบคลุม

ในบทความนี้ เราได้ตรวจสอบ 10 เครื่องมือที่จะช่วยให้คุณบรรลุเป้าหมายในการทดสอบโค้ด PHP ในปลั๊กอิน WordPress

คุณใช้เครื่องมือใดต่อไปนี้สำหรับโครงการล่าสุดของคุณ แจ้งให้เราทราบว่าคุณสร้างอะไรในส่วนความคิดเห็นด้านล่าง!