การดำเนินการใน QTP/UFT พร้อมตัวอย่าง

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

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

  • 🧩 ความหมาย: การดำเนินการจะจัดกลุ่มขั้นตอนการทดสอบชุดหนึ่งเข้าไว้ในหน่วยย่อยที่สามารถนำกลับมาใช้ใหม่ได้ภายใน UFT/QTP ต้นฉบับ
  • 🔁 การกระทำที่สามารถนำกลับมาใช้ซ้ำได้: เรียกใช้การกระทำเดียวกันหลายครั้ง ไม่ว่าจะในการทดสอบเดียวกันหรือจากการทดสอบอื่นก็ตาม
  • 🔒 การกระทำที่ไม่สามารถนำกลับมาใช้ซ้ำได้: เรียกใช้เพียงครั้งเดียว และเฉพาะภายในชุดทดสอบที่สร้างไฟล์เหล่านั้นขึ้นมาเท่านั้น
  • 🌐 การกระทำภายนอก: แอ็กชันที่นำกลับมาใช้ซ้ำได้จะกลายเป็นแบบอ่านอย่างเดียวภายนอกเมื่อมีการเรียกใช้การทดสอบอื่น
  • 🇧🇷 แยก: แบ่งการกระทำขนาดใหญ่เป็นการกระทำย่อยอิสระ หรือเป็นคู่การกระทำหลัก-ย่อยที่ซ้อนกัน
  • 📞 การเรียกใช้ฟังก์ชัน: เพิ่มการกระทำใหม่ คัดลอกการกระทำ หรือเรียกใช้การกระทำที่มีอยู่แล้ว
  • 📤 พารามิเตอร์: ส่งผ่านค่าอินพุตและเอาต์พุตระหว่างแอ็กชันโดยใช้คำสั่ง RunAction
  • 🗂️ แผ่นข้อมูล: ใช้ชีต Global สำหรับข้อมูลทั่วทั้งการทดสอบ และใช้ชีต Local ของแต่ละการกระทำสำหรับข้อมูลส่วนตัว

การกระทำใน คืออะไร UFT/QTP?

สถานะ in UFT/QTP แบ่งการทดสอบออกเป็น “หน่วยเชิงตรรกะ” หรือ “กระบวนการทางธุรกิจ” แต่ละการกระทำจะรวมขั้นตอนต่างๆ เข้าด้วยกันเพื่อทำงานที่สามารถระบุได้ชัดเจน เช่น การเข้าสู่ระบบ การค้นหาเที่ยวบิน หรือการจองตั๋ว การกระทำเหล่านี้ช่วยสร้างสคริปต์ที่มีความยืดหยุ่นและมีประสิทธิภาพมากขึ้น

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

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

ตัวอย่างเช่น สคริปต์การจองเที่ยวบินทั่วไปจะแบ่งออกเป็นสามส่วนอย่างเป็นระเบียบ ได้แก่ การเข้าสู่ระบบ การค้นหาเที่ยวบิน และการจองตั๋ว แต่ละส่วนมีขั้นตอนและข้อมูลเฉพาะของตนเอง ดังนั้นผู้ทดสอบที่ต้องการเพียงแค่ตรวจสอบการเข้าสู่ระบบจึงไม่จำเป็นต้องบันทึกหรือดูแลขั้นตอนการจองทั้งหมดเลย

ประเภทของการกระทำใน UFT/QTP: ใช้ซ้ำได้ ใช้ซ้ำไม่ได้ และใช้งานภายนอก

UFT/QTP รองรับการกระทำสามประเภท และประเภทที่คุณเลือกจะกำหนดว่าการกระทำนั้นสามารถแชร์ระหว่างสคริปต์ได้หรือไม่ หรือจะยังคงเป็นส่วนตัวเฉพาะการทดสอบที่สร้างขึ้นเท่านั้น

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

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

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

วิธีการแบ่ง คัดลอก และเรียกใช้แอ็กชันใน UFT

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

  • การแยกแบบอิสระ (ระหว่างพี่น้อง): การกระทำที่เลือกจะแบ่งออกเป็นสองการกระทำแยกกัน ซึ่งจะทำงานต่อเนื่องกัน โดยแต่ละการกระทำจะ...ping ตารางข้อมูลท้องถิ่นของตัวเอง
  • การแบ่งแบบซ้อนกัน (ระหว่างผู้ปกครองและลูก): การกระทำที่เลือกจะแบ่งออกเป็นการกระทำหลัก ซึ่งขั้นตอนสุดท้ายของการกระทำหลักจะเรียกการกระทำย่อยที่สอง โดยรักษาความสัมพันธ์เชิงตรรกะระหว่างทั้งสองไว้

เมื่อมีการกระทำเกิดขึ้นแล้ว UFT เสนอสามวิธีในการนำการกระทำเข้าสู่การทดสอบจาก สิ่งที่ใส่เข้าไป เมนู:

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

ทุกการโทรจะถูกรวบรวมเป็น RunAction คำแถลงในมุมมองของผู้เชี่ยวชาญ:

' Calls Action2, which is stored in Test2, running it for one iteration
RunAction "Action2[Test2]", oneIteration

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

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

วิดีโอด้านล่างนี้ต่อยอดจากสคริปต์การเข้าสู่ระบบห้าขั้นตอนที่สร้างไว้ในบทเรียนก่อนหน้านี้ การจองเที่ยวบิน และอธิบายขั้นตอนการสร้าง การแบ่ง และการเรียกใช้แอ็กชันตั้งแต่ต้นจนจบ เป็นวิดีโอที่ยาวที่สุดในชุดนี้ UFT/QTP ชุดบทเรียนดังนั้นการจดบันทึกขณะรับชมจึงเป็นประโยชน์

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

วิธีส่งพารามิเตอร์และจัดเก็บค่าผลลัพธ์ระหว่างการดำเนินการต่างๆ

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

การส่งพารามิเตอร์เข้าและออกจากแอ็กชัน

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

' Passes an input value and captures the action's output into myResult
RunAction "Action1", oneIteration, "testuser", myResult

การจัดเก็บค่าเอาต์พุตของแอ็กชัน

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

  • ตัวแปร: RunAction "Action1", oneIteration, "testuser", myResult บันทึกผลลัพธ์โดยตรงใน myResult.
  • An ตัวแปรสภาพแวดล้อม: สร้างตัวแปรที่ผู้ใช้กำหนดเองภายใต้ ไฟล์ > การตั้งค่า > สภาพแวดล้อมจากนั้นเขียน RunAction "Action1", oneIteration, "testuser", Environment("env_var").
  • คอลัมน์ในตารางข้อมูล: RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet) บันทึกผลลัพธ์ลงในชีตส่วนกลางโดยตรง

เอกสารข้อมูลระดับโลกและระดับท้องถิ่น

การดำเนินการนี้จะอ่านและเขียนข้อมูลทดสอบผ่านแผ่นงานสองประเภท เอกสารข้อมูลผลิตภัณฑ์ทั่วโลก เป็นเอกลักษณ์เฉพาะสำหรับการทดสอบทั้งหมด การกระทำใดๆ ก็สามารถอ่านหรือเขียนข้อมูลลงในตัวแปรนี้ได้ และตัวแปรนี้จะถูกตั้งชื่อว่า “Global” เสมอ เอกสารข้อมูลท้องถิ่น แต่ละการกระทำจะมีเอกลักษณ์เฉพาะตัว ตั้งชื่อตามการกระทำนั้น และมีเพียงการกระทำนั้นๆ เท่านั้นที่สามารถอ่านหรือเขียนข้อมูลได้

การออกจากแอ็กชันและการควบคุมการวนซ้ำ

เมื่อจำเป็นต้องหยุดการกระทำบางอย่างก่อนกำหนด แทนที่จะปล่อยให้ดำเนินการจนเสร็จสมบูรณ์ UFT ประกอบด้วยข้อความสี่ข้อ:

  • ExitAction — หยุดการทำงานปัจจุบันเท่านั้น
  • ExitActionIteration — หยุดการทำงานในรอบปัจจุบันและไปยังรอบถัดไป
  • ExitRun — หยุดการทดสอบทั้งหมดทันที
  • ExitGlobalIteration — หยุดการทดสอบรอบปัจจุบันทั่วโลกและไปยังรอบถัดไป

ขณะดำเนินการก UFT/QTP ต้นฉบับ เมื่อใช้แอ็กชัน โปรดคำนึงถึงการวนซ้ำทั่วโลกและการวนซ้ำเฉพาะที่ เนื่องจากทั้งสองอย่างมีผลต่อจำนวนครั้งที่แอ็กชันทำงานจริง คุณสามารถเปลี่ยนความถี่ในการวนซ้ำของแอ็กชันที่เรียกใช้ได้โดยการเปิด คุณสมบัติการเรียกใช้งาน > เรียกใช้ กดแท็บและตั้งค่าโหมดการวนซ้ำที่นั่น

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

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

การกระทำเป็นสิ่งที่สร้างมาในตัว UFT ฟีเจอร์ที่มีคลังเก็บวัตถุและตารางข้อมูลเป็นของตัวเอง และอาจนำกลับมาใช้ใหม่ได้หรือไม่ก็ได้ ฟังก์ชัน เป็นโค้ด VBScript ธรรมดา สามารถนำกลับมาใช้ซ้ำได้เสมอ และไม่มีทั้ง Object Repository หรือ Data Table เป็นของตัวเอง

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

การดำเนินการต่างๆ จะถูกบันทึกพร้อมกับการทดสอบในรูปแบบโฟลเดอร์การดำเนินการ (.mtr/.mts) แทนที่จะเป็นไฟล์สคริปต์แบบแยกต่างหาก ในทางตรงกันข้าม ไลบรารีฟังก์ชันจะถูกบันทึกเป็นไฟล์ (.vbs หรือ .qfl) แยกต่างหาก ซึ่งการทดสอบใดๆ ก็สามารถเชื่อมโยงและนำกลับมาใช้ใหม่ได้

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

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

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