วิธีการใช้งานฟังก์ชันใน QTP/UFT ใน 3 ขั้นตอนง่ายๆ

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

ฟังก์ชั่นใน QTP/UFT ช่วยให้ผู้ทดสอบสามารถบรรจุตรรกะ VBScript ที่นำกลับมาใช้ใหม่ได้ไว้ในไฟล์ไลบรารี ซึ่งการทดสอบใดๆ ก็สามารถเรียกใช้ได้ ช่วยลดการทำงานซ้ำซ้อน ลดความยุ่งยากในการบำรุงรักษา และเร่งการพัฒนาการทำงานอัตโนมัติ UFT และ QTP โครงการ

  • 📚 ความหมาย: ไลบรารีฟังก์ชันคือไฟล์ .qfl หรือ .vbs ที่รวบรวมฟังก์ชัน VBScript ที่สามารถนำกลับมาใช้ซ้ำได้ UFT การทดสอบสามารถเรียกได้
  • 🛠️ การสร้าง: สร้างไลบรารีจากเมนู ไฟล์ > สร้างใหม่ > ไลบรารีฟังก์ชัน แล้วเขียนบล็อกฟังก์ชัน VBScript มาตรฐาน…จบฟังก์ชันไว้ภายใน
  • 🔗 สมาคม: เชื่อมต่อไลบรารีผ่านทาง ไฟล์ > การตั้งค่า > ทรัพยากร > เชื่อมโยงไลบรารีฟังก์ชัน เพื่อให้ฟังก์ชันต่างๆ สามารถนำไปทดสอบได้
  • ▶️ โทรศัพท์: เรียกใช้ฟังก์ชันไลบรารีโดยใช้ typing ชื่อพร้อมอาร์กิวเมนต์ภายในสคริปต์ทดสอบ เหมือนกับฟังก์ชันในตัวทุกประการ UFT คำแถลง
  • 🗂️ รูปแบบไฟล์: เลือก .qfl สำหรับไฟล์ต้นฉบับ UFT ใช้ไฟล์ .editor หรือ .vbs สำหรับไฟล์ข้อความธรรมดาที่สามารถอ่านได้ทุกที่ รวมถึงระบบควบคุมเวอร์ชัน
  • ⚙️ การโหลดขณะรันไทม์: ใช้ LoadFunctionLibrary หรือ ExecuteFile เพื่อแนบไลบรารีโดยใช้โปรแกรม แทนการใช้กล่องโต้ตอบ Resources
  • 🧭 ระเบียบวินัยการตั้งชื่อ: ตั้งชื่อฟังก์ชันทุกฟังก์ชันให้ไม่ซ้ำกันในไลบรารีที่เกี่ยวข้องทั้งหมด เนื่องจาก UFT จะดำเนินการตามคำจำกัดความที่โหลดล่าสุดเมื่อชื่อซ้ำกัน
  • 📊 รายงาน: แทนที่ข้อความBox เรียกใช้ฟังก์ชันด้วย Reporter.ReportEvent เพื่อให้สถานะผ่าน ไม่ผ่าน และคำเตือน ปรากฏขึ้นโดยตรงภายใน UFT แผนผังผลลัพธ์

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

ไลบรารีฟังก์ชันของคุณเองใน Micro Focus UFT สามารถมี วีบีสคริปต์ ฟังก์ชัน รูทีนย่อย โมดูล ฯลฯ

คุณต้องทำตามเพียง 3 ขั้นตอนง่ายๆ เพื่อใช้งานฟังก์ชันจากไลบรารีในการทดสอบของคุณ

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

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

3 ขั้นตอนง่ายๆ ในการใช้ฟังก์ชันจากไลบรารีใน UFT/QTP

ขั้นตอน 1) สร้างไลบรารีฟังก์ชันใหม่ใน UFT or QTP โดยเลือก ไฟล์ > สร้างใหม่ > ไลบรารีฟังก์ชัน มันจะเปิดขึ้นในแท็บใหม่ QTP.

เรามาสร้างฟังก์ชันง่ายๆ ที่แสดงกล่องข้อความกันเถอะ

Function Demo

MsgBox "This is a Test Function"

End Function

ทุกครั้งที่มีการเรียกใช้ฟังก์ชันนี้ กล่องข้อความจะปรากฏขึ้น ไฟล์เดียวสามารถบรรจุฟังก์ชันได้หลายฟังก์ชัน ดังนั้นให้บันทึกไฟล์เพียงครั้งเดียวและนำกลับมาใช้ซ้ำได้ในการทดสอบหลายครั้ง UFT บันทึกไลบรารีฟังก์ชันด้วย .qfl โดยค่าเริ่มต้นจะเป็นส่วนขยาย แม้ว่าจะเป็นแบบธรรมดาก็ตาม .vbs ไฟล์ก็ใช้งานได้เช่นกัน ดังที่ส่วนถัดไปจะอธิบาย

ขั้นตอน 2) เชื่อมโยงไลบรารีกับการทดสอบของคุณ เปิด ไฟล์ > การตั้งค่า > ทรัพยากร > เชื่อมโยงไลบรารีฟังก์ชัน แล้วคลิก เพิ่มเลือกไฟล์ไลบรารีฟังก์ชัน แล้วคลิก OK.

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

' Call the function from the associated library
Demo()

UFT ตั้งอยู่ ทดลอง ในไลบรารีที่เกี่ยวข้องและเรียกใช้งานราวกับว่าเขียนขึ้นในเครื่องทดสอบโดยตรง

หมายเหตุที่สำคัญ

  • การใช้ COM และ DCOM ช่วยให้คุณสามารถสร้างฟังก์ชันขั้นสูงได้อย่างมาก
  • ในความเป็นจริง ฟีเจอร์หลายอย่างที่จัดหาโดย QTP สามารถเขียนโค้ดได้โดยใช้ VBScript
  • เราเคยเห็นวิศวกรระบบอัตโนมัติที่สร้างโปรเจ็กต์ VB มากกว่าโปรเจ็กต์ระบบอัตโนมัติ
  • คำแนะนำของเราคือการมุ่งเน้นไปที่การทำงานอัตโนมัติ 100% แทนที่จะอวดทักษะ VB ของคุณ

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

ประเภทไฟล์ไลบรารีฟังก์ชัน: .qfl เทียบกับ .vbs

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

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

การเลือกนั้นส่วนใหญ่ขึ้นอยู่กับขั้นตอนการทำงานของทีมมากกว่าฟังก์ชันการใช้งาน ไลบรารีเฉพาะกิจที่สร้างขึ้นอย่างรวดเร็วภายใน UFT ใช้งานได้ดี .qflในขณะที่ไลบรารีที่ดูแลรักษาใน Git, SVN หรือระบบควบคุมเวอร์ชันอื่นๆ มักจะถูกเก็บไว้ในรูปแบบไฟล์ต้นฉบับ .vbs ไฟล์ข้อความธรรมดาจะทำให้การเปรียบเทียบความแตกต่างระหว่างโค้ดอ่านง่ายกว่ามากในระหว่างการตรวจสอบโค้ด ทั้งสองรูปแบบรองรับคุณสมบัติ VBScript อย่างครบถ้วน รวมถึงคลาส การจัดการข้อผิดพลาด และการสร้างอ็อบเจ็กต์ COM และทั้งสองรูปแบบเชื่อมโยงกับการทดสอบในลักษณะเดียวกันทุกประการ ดังที่ส่วนถัดไปจะอธิบาย

การเปลี่ยนนามสกุลไฟล์ไม่ได้เปลี่ยนแปลงเนื้อหาภายในไฟล์ ดังนั้นการแปลงไฟล์ที่มีอยู่แล้วจึงไม่เปลี่ยนแปลงเนื้อหาภายใน .qfl ไฟล์ไปที่ .vbsหรือในทางกลับกัน ก็คือการเปลี่ยนชื่อไฟล์แล้วเชื่อมโยงไฟล์ที่เปลี่ยนชื่อแล้วเข้ากับการทดสอบอีกครั้ง

วิธีเชื่อมโยงไลบรารีฟังก์ชันกับการทดสอบ

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

  1. หน้าต่างโต้ตอบไลบรารีฟังก์ชันที่เกี่ยวข้อง (GUI): เปิดไฟล์ > การตั้งค่า > ทรัพยากร > เชื่อมโยงไลบรารีฟังก์ชัน คลิก เพิ่ม และเลือกไฟล์ UFT ระบบจะจัดเก็บการเชื่อมโยงนี้ไว้ภายในตัวทดสอบเอง ดังนั้นไลบรารีจะโหลดโดยอัตโนมัติทุกครั้งที่เปิดการทดสอบ นี่คือวิธีการที่แสดงในขั้นตอนที่ 2 ข้างต้น และใช้งานได้ดีในฐานะตัวเลือกเริ่มต้นสำหรับไลบรารีใด ๆ ที่การทดสอบทุกครั้งในโปรเจ็กต์ต้องการ
  2. คำสั่ง LoadFunctionLibrary: เรียกใช้เมธอด LoadFunctionLibrary “path” จากภายในสคริปต์เพื่อแนบไลบรารีในระหว่างการทำงานโดยไม่ต้องแก้ไขหน้าต่าง Resources UFT โดยจะจัดการกับไลบรารีเหมือนกับการเชื่อมโยงแบบใช้บทสนทนาตลอดการทำงานที่เหลือ ซึ่งสะดวกเมื่อเส้นทางของไลบรารีถูกกำหนดแบบไดนามิก
  3. คำสั่ง ExecuteFile: ExecuteFile “path” จะเรียกใช้ไฟล์สคริปต์และเปิดเผยฟังก์ชันต่างๆ ให้กับการทำงานในปัจจุบัน แต่ UFT ไม่ลงทะเบียนไฟล์เป็น tracเนื่องจากเป็นทรัพยากรที่ถูกปิดใช้งาน จึงไม่ปรากฏในส่วน "ไลบรารีฟังก์ชันที่เกี่ยวข้อง" ในการตั้งค่าการทดสอบ
  4. แบบจำลองวัตถุอัตโนมัติ (AOM): ไฟล์ VBScript ภายนอกสามารถเรียกใช้งานได้ UFTเปิดการทดสอบ และเพิ่มไลบรารีลงใน Test.Settings.Resources.Libraries ด้วยวิธีการเขียนโปรแกรม สคริปต์การสร้างหรือการปรับใช้มักใช้วิธีนี้ในการกำหนดค่าไลบรารีเดียวกันสำหรับการทดสอบหลายสิบรายการในครั้งเดียว
' Load a library at run time from inside a script
LoadFunctionLibrary "C:\Automation\CommonFunctions.qfl"

' ExecuteFile works the same way, but UFT does not
' track the file as an associated resource
ExecuteFile "C:\Automation\CommonFunctions.qfl"

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

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

แนวปฏิบัติที่ดีที่สุดสำหรับการเขียน UFT/QTP ไลบรารีฟังก์ชัน

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

  • ใช้ Option Explicit: เพิ่มบรรทัดนี้เป็นบรรทัดแรกของทุกไลบรารี ดังนั้น UFT แจ้งเตือนเมื่อพบตัวแปรที่สะกดผิด แทนที่จะสร้างตัวแปรใหม่โดยไม่แจ้งให้ทราบล่วงหน้า
  • ควรตั้งชื่อฟังก์ชันให้ไม่ซ้ำกัน: หากไลบรารีที่เกี่ยวข้องสองไลบรารี กำหนดฟังก์ชันที่มีชื่อเดียวกัน UFT ระบบจะเรียกใช้ตัวที่โหลดล่าสุด ดังนั้นชื่อซ้ำกันจะทำให้เกิดการทำงานที่เงียบและยากต่อการตรวจจับtracและแมลง
  • ส่งคืนค่าแทนการกำหนดค่าตายตัว: รับพารามิเตอร์และส่งคืนผลลัพธ์ ดังตัวอย่างด้านล่าง เพื่อให้ฟังก์ชันเดียวกันสามารถใช้กับการทดสอบหลายครั้งแทนที่จะเป็นเพียงครั้งเดียว
  • หลีกเลี่ยงข้อความBox ในสคริปต์การผลิต: กล่องข้อความจะหยุดการทำงานชั่วคราว จนกว่าจะมีคนคลิกตกลง ใช้งาน Reporter.ReportEvent แต่สถานะผ่าน ไม่ผ่าน และคำเตือน จะถูกบันทึกเข้าไปในโครงสร้างผลลัพธ์โดยตรงโดยไม่ต้องหยุดping การวิ่ง
  • จัดกลุ่มตามโดเมน ไม่ใช่ตามความสะดวก: ควรแยกฟังก์ชันการล็อกอิน ฟังก์ชันฐานข้อมูล และฟังก์ชันช่วยการใช้งาน UI ไว้ในไฟล์ที่ต่างกัน เพื่อให้การทดสอบแต่ละครั้งสามารถเชื่อมโยงเฉพาะสิ่งที่จำเป็นจริงๆ เท่านั้น
  • ควรควบคุมเวอร์ชันของไลบรารีต่างๆ: จัดเก็บไฟล์ไลบรารีฟังก์ชันไว้ในที่เก็บเดียวกันกับส่วนที่เหลือของโปรเจ็กต์การทำงานอัตโนมัติ เพื่อให้การย้อนกลับของโปรเจ็กต์จะคืนค่าฟังก์ชันที่ใช้ร่วมกันทั้งหมดด้วย
Function AddNumbers(ByVal num1, ByVal num2)
    AddNumbers = num1 + num2
End Function

Dim result
result = AddNumbers(10, 20)
Reporter.ReportEvent micPass, "Sum Calculation", "The result is " & result

การปลูกฝังนิสัยเหล่านี้ตั้งแต่เนิ่นๆ มีค่าใช้จ่ายน้อย แต่การปรับใช้พฤติกรรมเหล่านี้กับห้องสมุดขนาดใหญ่ที่ไม่มีการจัดการในภายหลังนั้นมีค่าใช้จ่ายสูงกว่ามาก

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

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

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

ใช่แล้ว เมื่อทั้งสองไลบรารีเชื่อมโยงกับการทดสอบเดียวกันแล้ว UFT ระบบจะโหลดฟังก์ชันทั้งหมดลงในเนมสเปซที่ใช้ร่วมกันเพียงแห่งเดียว ดังนั้นฟังก์ชันใดๆ ในไลบรารีหนึ่งจึงสามารถเรียกใช้ฟังก์ชันที่กำหนดไว้ในอีกไลบรารีหนึ่งได้

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

เครื่องมือ AI สามารถแปลงตรรกะ VBScript ไปเป็นภาษาต่างๆ ได้ เช่น Python or Java เป็นเพียงร่างเบื้องต้น แต่วิศวกร QA ต้องตรวจสอบการระบุวัตถุและตรรกะทางธุรกิจอีกครั้ง เนื่องจากระบบการแปลอัตโนมัติมักไม่สามารถรักษาทั้งสองอย่างได้อย่างสมบูรณ์แบบ

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