Cucumber กรอบการทำงาน: คืออะไร Cucumber?

⚡ สรุปอย่างชาญฉลาด

Cucumber เป็นเครื่องมือทดสอบที่สนับสนุนการพัฒนาแบบขับเคลื่อนด้วยพฤติกรรม (Behavior Driven Development หรือ BDD) ทำให้ทุกคนสามารถอ่านผลการทดสอบได้โดยไม่จำเป็นต้องมีความรู้ด้านเทคนิค เอกสารนี้อธิบายวิธีการทำงานของ BDD ผ่านขั้นตอน Given-When-Then และข้อดีของการใช้งาน BDD Cucumberและเปรียบเทียบกับ Selenium และ HP ALM

  • 🥒 คำจำกัดความหลัก: Cucumber เป็นเครื่องมือ Behavior Driven Development (BDL) ที่สร้างแบบทดสอบด้วยภาษาที่เข้าใจง่าย ทั้งสำหรับผู้มีส่วนได้ส่วนเสียด้านเทคนิคและไม่ใช่ด้านเทคนิค
  • 🗣️ BDD Foundation: นักวิเคราะห์ธุรกิจและเจ้าของผลิตภัณฑ์จะอธิบายพฤติกรรมของระบบก่อนที่นักพัฒนาจะเขียนโค้ด ซึ่งช่วยให้เกิดความเข้าใจร่วมกันมากขึ้น
  • 📝 Given-When-Then: ทุกๆ Cucumber สถานการณ์จำลองนี้มีโครงสร้างแบบ Given-When-Then ที่อ่านง่าย ซึ่งทำหน้าที่เป็นเอกสารอ้างอิงที่มีชีวิตชีวาไปพร้อมกัน
  • ข้อดีที่สำคัญ: ตั้งค่าได้รวดเร็ว นำโค้ดกลับมาใช้ใหม่ได้ เน้นผู้ใช้งาน และช่วยให้ผู้มีส่วนได้ส่วนเสียทางธุรกิจที่ไม่เชี่ยวชาญด้านการเขียนโค้ดสามารถเข้ามามีส่วนร่วมได้ง่าย
  • 🇧🇷 การเปรียบเทียบเครื่องมือ: Cucumber เป็นซอฟต์แวร์ฟรีและใช้หลักการ BDD ในขณะที่ HP ALM เป็นซอฟต์แวร์แบบเสียค่าใช้จ่าย Selenium มีเป้าหมายเพื่อทดสอบการทำงานและประสิทธิภาพ

Cucumber กรอบ

ความหมายของ Cucumber?

Cucumber เป็นเครื่องมือทดสอบที่สนับสนุนการพัฒนาแบบเน้นพฤติกรรม (Behavior Driven Development หรือ BDD) โดยนำเสนอวิธีการเขียนการทดสอบที่ทุกคนสามารถเข้าใจได้ ไม่ว่าจะมีทักษะทางเทคนิคมากน้อยแค่ไหนก็ตาม ใน BDD ผู้ใช้ (นักวิเคราะห์ธุรกิจ เจ้าของผลิตภัณฑ์) จะเขียนสถานการณ์จำลองหรือการทดสอบการยอมรับที่อธิบายพฤติกรรมของระบบจากมุมมองของลูกค้าก่อน เพื่อให้เจ้าของผลิตภัณฑ์ตรวจสอบและอนุมัติก่อนที่นักพัฒนาจะเขียนโค้ด Cucumber เฟรมเวิร์กใช้ ภาษาโปรแกรม Ruby.

Cucumber กรอบ
Cucumber กรอบ

BDD ทำงานอย่างไร Cucumber ระบบอัตโนมัติ?

สมมติว่าคุณได้รับมอบหมายให้สร้างโมดูลโอนเงินในแอปพลิเคชันธนาคารออนไลน์

มีหลายวิธีในการทดสอบในเรื่องนี้ Cucumber กรอบการทดสอบ:

  1. การโอนเงินควรดำเนินการได้ก็ต่อเมื่อมีเงินคงเหลือในบัญชีต้นทางเพียงพอ
  2. การโอนเงินจะดำเนินการได้หากรายละเอียดบัญชีปลายทางถูกต้อง
  3. การโอนเงินจะดำเนินการได้ก็ต่อเมื่อรหัสผ่านธุรกรรม / รหัส RSA / การตรวจสอบความปลอดภัยสำหรับธุรกรรมที่ผู้ใช้ป้อนนั้นถูกต้อง
  4. การโอนเงินควรดำเนินการต่อไปแม้ว่าจะเป็นวันหยุดธนาคารก็ตาม
  5. การโอนเงินจะดำเนินการในวันที่กำหนดโดยเจ้าของบัญชีในอนาคต

การขอ สถานการณ์ทดสอบ จะมีความซับซ้อนมากขึ้นเมื่อเราพิจารณาคุณสมบัติเพิ่มเติม เช่น การโอนเงินจำนวน X ในช่วงเวลา Y วัน/เดือน การหยุดการโอนตามกำหนดเมื่อยอดรวมถึง Z และอื่นๆ

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

เพื่อเอาชนะปัญหานี้ Cucumber BDD (การพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม) จึงถูกคิดค้นขึ้นมา มันทำให้กระบวนการทดสอบทั้งหมดง่ายขึ้นสำหรับนักพัฒนา

In Cucumber BDD สิ่งที่คุณเขียนจะต้องเข้าไป ให้-เมื่อ-แล้ว ขั้นตอนต่างๆ ลองพิจารณาตัวอย่างเดียวกันข้างต้นในรูปแบบ BDD:

Given that a fund transfer module in net banking application has been developed
And I am accessing it with proper authentication
When I shall transfer with enough balance in my source account
Or I shall transfer on a Bank Holiday
Or I shall transfer on a future date
And destination a/c details are correct
And transaction password/RSA code/security authentication for the transaction is correct
And press or click send button
Then amount must be transferred
And the event will be logged in log file

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

ข้อดีของการ Cucumber ซอฟต์แวร์

  1. การมีส่วนร่วมของผู้มีส่วนได้ส่วนเสียทางธุรกิจที่ไม่สามารถอ่านโค้ดได้ง่ายนั้นเป็นสิ่งที่มีประโยชน์
  2. การขอ Cucumber เครื่องมือทดสอบ มุ่งเน้นที่ประสบการณ์ของผู้ใช้ปลายทาง
  3. รูปแบบการเขียนโค้ดทดสอบนี้ช่วยให้สามารถนำโค้ดกลับมาใช้ซ้ำในการทดสอบได้ง่ายขึ้น
  4. ติดตั้งและใช้งานได้ง่ายและรวดเร็ว
  5. การขอ Cucumber เครื่องมือทดสอบเป็นเครื่องมือที่มีประสิทธิภาพสำหรับ การทดสอบ.

Cucumber vs Selenium เทียบกับ ALM

ในส่วนนี้เราจะมาศึกษาความแตกต่างระหว่าง Cucumber, Seleniumและ ALM

Cucumber เอชพี เอแอลเอ็ม (QTP) Selenium
Cucumber ซอฟต์แวร์นี้ฟรี QTP มีราคาแพง ว่าง.
Cucumber ซอฟต์แวร์เป็นเครื่องมือพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม เป็นเครื่องมืออัตโนมัติเชิงฟังก์ชัน เป็นฟังก์ชันการทำงานและประสิทธิภาพ (Selenium เครื่องมือทดสอบ (ตาราง)
ปลั๊กอินใน Cucumber เครื่องมือทดสอบทำงานได้เร็วขึ้น ปลั๊กอินทำงานช้ากว่าเมื่อเทียบกับ Cucumber และ Selenium. ปลั๊กอินทำงานช้ากว่า Cucumber.
Cucumber เฟรมเวิร์กนี้รองรับภาษาอื่นๆ นอกเหนือจาก Ruby ด้วย เช่น Java, สกาล่า, Groovyฯลฯ QTP รองรับเฉพาะ VB Script เท่านั้น Selenium สนับสนุน Javaรวมถึง .Net และภาษาอื่นๆ อีกมากมาย
การเขียนขั้นตอนการทำงานอัตโนมัติเป็นความร่วมมือระหว่างผู้ทดสอบและนักพัฒนา In QTPมีเพียงผู้ทดสอบเท่านั้นที่เขียนขั้นตอนการทำงานอัตโนมัติ Like Cucumberการเขียนขั้นตอนการทำงานอัตโนมัติเป็นความร่วมมือระหว่างผู้ทดสอบและนักพัฒนา
การขอ Cucumber เครื่องมือทดสอบรองรับเฉพาะสภาพแวดล้อมเว็บเท่านั้น รองรับเว็บ เดสก์ท็อป และแอปพลิเคชันไคลเอ็นต์เซิร์ฟเวอร์ทุกประเภท รองรับเฉพาะสภาพแวดล้อมบนเว็บเท่านั้น

ตรวจสอบด้วย: - UFT vs Selenium: ความแตกต่างระหว่าง Selenium และ HP UFT

คำถามที่พบบ่อย

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

ไม่เลย AI ช่วยเร่งความเร็วในการเขียนสถานการณ์จำลองและการสร้างขั้นตอน แต่ผู้ทดสอบที่เป็นมนุษย์ยังคงกำหนดพฤติกรรมที่คาดหวัง ตรวจสอบความถูกต้องของตรรกะทางธุรกิจ และรักษาความร่วมมือกับผู้มีส่วนได้ส่วนเสีย ซึ่งยังคงเป็นหัวใจสำคัญของการพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม (Behavior Driven Development)

Gherkin คือภาษาข้อความธรรมดา Cucumber ใช้สำหรับเขียนสถานการณ์ทดสอบ โดยใช้โครงสร้าง Given-When-Then ทำให้การทดสอบอ่านง่ายทั้งสำหรับผู้มีส่วนได้ส่วนเสียทางธุรกิจและนักพัฒนา ในขณะเดียวกันก็สามารถนำไปใช้งานได้จริง

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

สรุปโพสต์นี้ด้วย: