QTP - คู่มือฉบับย่อ

QTP ย่อมาจาก QuickTest Professional ผลิตภัณฑ์ของ HEwlett Pแอคการ์ด (HP). เครื่องมือนี้ช่วยให้ผู้ทดสอบทำการทดสอบการทำงานอัตโนมัติได้อย่างราบรื่นโดยไม่ต้องมีการตรวจสอบเมื่อการพัฒนาสคริปต์เสร็จสมบูรณ์

HP QTP ใช้ Visual Basic Scripting (VBScript)สำหรับการทำงานอัตโนมัติ ไม่จำเป็นต้องติดตั้ง Scripting Engine โดยเฉพาะเนื่องจากเป็นส่วนหนึ่งของ Windows OS VBScript เวอร์ชันปัจจุบันคือ 5.8 ซึ่งพร้อมใช้งานเป็นส่วนหนึ่งของ Win 7 VBScript ไม่ใช่ภาษาเชิงวัตถุ แต่เป็นภาษาที่ใช้วัตถุ

เครื่องมือทดสอบ

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

การจำแนกประเภทของเครื่องมือ

เครื่องมือสามารถจำแนกตามพารามิเตอร์ต่างๆ ประกอบด้วย -

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

ประเภทของเครื่องมือ

ซีเนียร์ ประเภทเครื่องมือ ใช้สำหรับ ใช้โดย
1 เครื่องมือจัดการทดสอบ ทดสอบการจัดการการตั้งเวลาการบันทึกข้อบกพร่องการติดตามและการวิเคราะห์ ผู้ทดสอบ
2 เครื่องมือจัดการการกำหนดค่า สำหรับการนำไปใช้ดำเนินการติดตามการเปลี่ยนแปลง สมาชิกในทีมทั้งหมด
3 เครื่องมือวิเคราะห์แบบคงที่ การทดสอบแบบคงที่ นักพัฒนา
4 ทดสอบข้อมูล Preperation Tools การวิเคราะห์และออกแบบทดสอบการสร้างข้อมูล ผู้ทดสอบ
5 ทดสอบ Execution Tools การใช้งานการดำเนินการ ผู้ทดสอบ
6 เครื่องเปรียบเทียบการทดสอบ การเปรียบเทียบผลลัพธ์ที่คาดหวังและผลลัพธ์จริง สมาชิกในทีมทั้งหมด
7 เครื่องมือวัดความครอบคลุม ให้ความครอบคลุมโครงสร้าง นักพัฒนา
8 เครื่องมือทดสอบประสิทธิภาพ การตรวจสอบประสิทธิภาพเวลาตอบสนอง ผู้ทดสอบ
9 เครื่องมือวางแผนและติดตามโครงการ สำหรับการวางแผน ผู้จัดการโครงการ
10 เครื่องมือจัดการเหตุการณ์ สำหรับการจัดการการทดสอบ ผู้ทดสอบ

QTP ตรงไหน?

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

QTP - ประวัติศาสตร์และวิวัฒนาการ

HP Quick Test Professional เป็นของ Mercury Interactive และ HP ได้รับ ชื่อเดิมคือ Astra Quick Test และต่อมาได้รับการขนานนามว่า Quick Test Professional แต่เวอร์ชันล่าสุดเรียกว่า Unified Functional Tester (UFT)

ประวัติเวอร์ชัน

ตอนนี้ให้เราดูประวัติเวอร์ชันของ QTP

เวอร์ชัน ไทม์ไลน์
Astra Quick Test v1.0 ถึง v5.5 - Mercury Interactive พ.ค. 2541 ถึง ส.ค. 2544
QuickTest Professional v6.5 ถึง v9.0 - Mercury Interactive ก.ย. 2546 ถึง เม.ย. 2549
Hp-QuickTest Professional v9.1 ถึง v11.0 - ได้มาและเผยแพร่โดย HP ก.พ. 2550 ถึง ก.ย. 2553
Hp-Unified Functional Testing v11.5 ถึง v11.53 2555 ถึง พ.ย. 2556

ข้อดี

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

  • ใช้งานง่ายสะดวกในการนำทางตรวจสอบผลลัพธ์และการสร้างรายงาน

  • พร้อมใช้งานร่วมกับ Test Management Tool (Hp-Quality Center) ซึ่งช่วยให้สามารถตั้งเวลาและตรวจสอบได้ง่าย

  • ยังสามารถใช้สำหรับการทดสอบแอปพลิเคชันมือถือ

  • เนื่องจากเป็นผลิตภัณฑ์ของ HP HP จึงให้การสนับสนุนอย่างเต็มที่และตามฟอรัมสำหรับการแก้ไขปัญหาทางเทคนิค

ข้อเสีย

  • ซึ่งแตกต่างจากซีลีเนียม QTP ทำงานในระบบปฏิบัติการ Windows เท่านั้น

  • ไม่รองรับเบราว์เซอร์ทุกเวอร์ชันและผู้ทดสอบจำเป็นต้องรอให้แพตช์ออกสำหรับเวอร์ชันหลักแต่ละเวอร์ชัน

  • ต้องบอกว่ามันเป็นเครื่องมือทางการค้าต้นทุนการออกใบอนุญาตสูงมาก

  • แม้ว่าเวลาในการเขียนสคริปต์จะน้อยลง แต่เวลาในการดำเนินการก็ค่อนข้างสูงกว่าเนื่องจากโหลดบน CPU และ RAM

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

  • Test Automation Feasibility Analysis- ขั้นตอนแรกคือตรวจสอบว่าแอปพลิเคชันสามารถทำงานอัตโนมัติได้หรือไม่ บางแอปพลิเคชันไม่สามารถทำงานอัตโนมัติได้เนื่องจากข้อ จำกัด

  • Appropriate Tool Selection- ขั้นตอนต่อไปที่สำคัญที่สุดคือการเลือกเครื่องมือ ขึ้นอยู่กับเทคโนโลยีที่สร้างแอปพลิเคชันคุณสมบัติและการใช้งาน

  • Evaluate the suitable framework- เมื่อเลือกเครื่องมือแล้วกิจกรรมต่อไปคือการเลือกกรอบงานที่เหมาะสม มีกรอบหลายประเภทและแต่ละกรอบมีความสำคัญของตัวเอง เราจะจัดการกับเฟรมเวิร์กโดยละเอียดในบทช่วยสอนนี้

  • Build Proof of Concept- Proof of Concept (POC) ได้รับการพัฒนาด้วยสถานการณ์แบบ end-to-end เพื่อประเมินว่าเครื่องมือสามารถรองรับการทำงานอัตโนมัติของแอปพลิเคชันได้หรือไม่ ดำเนินการโดยใช้สถานการณ์แบบ end-to-end ซึ่งช่วยให้มั่นใจได้ว่าฟังก์ชันหลัก ๆ สามารถทำงานได้โดยอัตโนมัติ

  • Develop Automation Framework- หลังจากสร้าง POC แล้วจะมีการพัฒนากรอบงานซึ่งเป็นขั้นตอนสำคัญสำหรับความสำเร็จของโครงการทดสอบอัตโนมัติ ควรสร้างกรอบงานหลังจากการวิเคราะห์เทคโนโลยีที่ใช้โดยแอปพลิเคชันอย่างขยันขันแข็งและคุณสมบัติหลัก ๆ

  • Develop Test Script, Execute, and Analyze- เมื่อการพัฒนาสคริปต์เสร็จสมบูรณ์สคริปต์จะถูกดำเนินการวิเคราะห์ผลลัพธ์และบันทึกข้อบกพร่องหากมี สคริปต์ทดสอบมักจะควบคุมเวอร์ชัน

QTP เป็นเครื่องมือทางการค้าและสามารถดาวน์โหลดเวอร์ชันทดลองใช้งานได้จากไซต์ของ HP โดยตรง เฉพาะเวอร์ชันปัจจุบันซึ่งเป็น Unified functional testing (11.5x) เท่านั้นที่สามารถดาวน์โหลดได้ ต่อไปนี้เป็น URL ที่สามารถดาวน์โหลดเวอร์ชันทดลองใช้งานได้

URL ดาวน์โหลด - QTP

ขั้นตอนการติดตั้ง

Step 1 - คลิกลิงค์ "Trials and Demos" แล้วเลือก "HP Unified Functional Testing 11.50 CC English SW E-Media Evaluation" ตามที่แสดงด้านล่าง -

Step 2- หลังจากเลือก "HP Unified Functional Testing 11.50" ตัวช่วยดาวน์โหลดจะเปิดขึ้น กรอกรายละเอียดส่วนบุคคลแล้วคลิกถัดไป

Step 3 - อ่าน "เงื่อนไขการใช้งาน" แล้วคลิก "ถัดไป"

Step 4- หน้าต่างดาวน์โหลดจะเปิดขึ้น ตอนนี้คลิกปุ่ม "ดาวน์โหลด"

Step 5- ไฟล์ที่ดาวน์โหลดจะอยู่ในรูปแบบ. RAR ตอนนี้คุณต้องคลายซิปไฟล์เก็บถาวรและเนื้อหาของโฟลเดอร์จะเป็นดังที่แสดงด้านล่างและดำเนินการ Setup.exe

Step 6 - เมื่อดำเนินการไฟล์ติดตั้งเพื่อทำการติดตั้งให้เลือก "Unified Functional Testing Set up" จากรายการดังที่แสดงด้านล่าง -

Step 7 - จากนั้นคลิกถัดไปเพื่อดำเนินการต่อ

Step 8- ในหน้าต่างการตั้งค่าแบบกำหนดเองให้เลือกปลั๊กอินที่จำเป็นสำหรับระบบอัตโนมัติของคุณเช่นคุณควรเลือกปลั๊กอินตามเทคโนโลยีของแอปพลิเคชันของคุณที่กำลังทดสอบ ตัวอย่างเช่นหากแอปพลิเคชันของคุณใช้. NET คุณควรตรวจสอบให้แน่ใจว่าคุณเลือก. NET

Step 9- หลังจากเลือกปลั๊กอินที่ต้องการสำหรับการติดตั้งแล้วให้คลิกถัดไป หลังจากเสร็จสิ้นการติดตั้งคุณจะพบหน้าต่างปุ่ม Finish

Step 10- เมื่อคุณติดตั้งเสร็จแล้วกล่องโต้ตอบ "ข้อกำหนดในการติดตั้งเพิ่มเติม" จะเปิดขึ้น เลือกทุกอย่างในรายการนอกเหนือจาก "Run License Installation Wizard" แล้วคลิก "RUN" เราไม่จำเป็นต้องเลือก "เรียกใช้ตัวช่วยสร้างการติดตั้งใบอนุญาต" เนื่องจากเรากำลังติดตั้งเวอร์ชันทดลองซึ่งโดยค่าเริ่มต้นจะให้ใบอนุญาตเป็นเวลา 30 วัน

Step 11- หลังจากเสร็จสิ้นข้อกำหนดการติดตั้งเพิ่มเติมเครื่องหมายถูกจะปรากฏขึ้นซึ่งจะเป็นการระบุว่าส่วนประกอบได้รับการติดตั้งสำเร็จ ตอนนี้คลิกปิด

เปิดหน้า UFT และ Add ins

Step 1 - หลังการติดตั้งสามารถเปิดแอปพลิเคชั่นได้จาก Start Menu ดังแสดงในรูป

Step 2- หน้าใบอนุญาตจะปรากฏขึ้น คุณสามารถคลิกดำเนินการต่อเมื่อเราได้ติดตั้งใบอนุญาตทดลองใช้

Step 3 - กล่องโต้ตอบ Add-in จะเปิดขึ้นเพื่อให้ผู้ใช้เลือก Add-in ที่ต้องการ

Note - อย่าโหลด Add-in ทั้งหมด แต่ต้องใช้ Add-in ที่จำเป็นเท่านั้นแล้วคลิก OK

Step 4 - หลังจากโหลด Add-in ที่ต้องการเครื่องมือ UFT 11.5 จะเปิดขึ้นสำหรับผู้ใช้และแวบแรกของรูปลักษณ์ UFT ดังที่แสดงด้านล่าง -

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

ขั้นตอนในการบันทึกและเล่นมีดังนี้ -

Step 1 - คลิกการทดสอบ "ใหม่" จากหน้าเริ่มต้นดังที่แสดงด้านล่าง -

Step 2- คลิกลิงก์ "ใหม่" หน้าต่างทดสอบใหม่จะเปิดขึ้นและผู้ใช้ต้องเลือกประเภทการทดสอบ เลือก "การทดสอบ GUI" ตั้งชื่อสำหรับการทดสอบและตำแหน่งที่จะต้องบันทึก

Step 3- เมื่อสร้างการทดสอบใหม่แล้วหน้าจอทดสอบใหม่จะเปิดขึ้นตามที่แสดงด้านล่าง ตอนนี้คลิกแท็บ "Action1" ซึ่งสร้างขึ้นด้วย 1 การกระทำตามค่าเริ่มต้น

Step 4 - คลิกเมนู "บันทึก" และเลือก "บันทึกและเรียกใช้การตั้งค่า" ดังที่แสดงด้านล่าง -

Step 5- กล่องโต้ตอบบันทึกและเรียกใช้การตั้งค่าจะเปิดขึ้นและขึ้นอยู่กับประเภทของแอปพลิเคชันหนึ่งสามารถเลือกแอปพลิเคชันเว็บ Java หรือ Windows ตัวอย่างเช่นที่นี่เราจะบันทึก Web Based Application (http://easycalculation.com/)

Step 6- คลิกบันทึก Internet Explorer จะเปิดขึ้นโดยอัตโนมัติพร้อมกับที่อยู่เว็บhttps://www.easycalculation.com/ตามการตั้งค่า คลิกลิงก์ "Numbers" ใต้ "พีชคณิต" แล้วป้อนตัวเลขแล้วกด "คำนวณ" หลังจากเสร็จสิ้นการดำเนินการคลิกปุ่ม "หยุด" ในแผงบันทึก คุณจะสังเกตเห็นว่าสคริปต์ถูกสร้างขึ้นตามที่แสดงด้านล่าง -

Step 7- ตอนนี้เล่นสคริปต์โดยคลิกปุ่มเล่น สคริปต์เล่นซ้ำและผลลัพธ์จะปรากฏขึ้น

Step 8 - หน้าต่างผลลัพธ์จะเปิดขึ้นโดยค่าเริ่มต้นซึ่งจะแสดงการประทับเวลาของการดำเนินการผ่านและขั้นตอนที่ล้มเหลว

ความสำคัญของการบันทึกและการเล่น

  • ใช้เป็นวิธีการตรวจสอบเบื้องต้นเพื่อตรวจสอบว่า UFT สามารถรองรับเทคโนโลยี / แอปพลิเคชันได้หรือไม่

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

  • สามารถใช้สำหรับบันทึกทั้งการเคลื่อนไหวของเมาส์และอินพุตคีย์บอร์ด

โหมดการบันทึก

  • Normal Recording - นี่คือโหมดการบันทึกเริ่มต้นที่บันทึกวัตถุและการดำเนินการบนแอปพลิเคชันที่อยู่ระหว่างการทดสอบ

  • Analog Recording - บันทึกไม่เพียง แต่การทำงานของแป้นพิมพ์เท่านั้น แต่ยังบันทึกการเคลื่อนไหวของเมาส์ที่สัมพันธ์กับหน้าจอหรือหน้าต่างแอปพลิเคชัน

  • Low-Level Recording- บันทึกการกำหนดพิกัดที่แน่นอนของวัตถุโดยไม่ขึ้นอยู่กับข้อเท็จจริงว่า UFT รับรู้วัตถุหรือไม่ เพียงบันทึกพิกัดจึงไม่บันทึกการเคลื่อนไหวของเมาส์

  • Insight Recording - UFT บันทึกการดำเนินงานโดยพิจารณาจากลักษณะที่ปรากฏและไม่อิงตามคุณสมบัติดั้งเดิม

วิธีเลือกโหมดการบันทึก

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

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

  • เปิด IE - https://www.easycalculation.com/
  • คลิก "ตัวเลข" ใต้ "พีชคณิต"
  • คลิกลิงก์ "Square Root"
  • ป้อนค่าเพื่อคำนวณรากที่สอง ให้เราพูดว่า 10
  • ตีคำนวณ

สคริปต์ที่บันทึกภายใต้โหมดการบันทึกค่าเริ่มต้นอนาล็อกและระดับต่ำจะได้รับด้านล่าง -

' DEFAULT RECORDING MODE 
Browser("Free Online Math Calculator").Page("Free Online Math 
Calculator").Link("Numbers").Click 

Browser("Free Online Math Calculator").Page("Numbers Calculator - 
Math").Link("Square Root").Click 

Browser("Free Online Math Calculator").Page("Square Root 
Calculator").WebEdit("n").Set "10" 

Browser("Free Online Math Calculator").Page("Square Root 
Calculator").WebButton("calculate").Click 

' ANALOG RECORDING MODE 
Desktop.RunAnalog "Track1" 

' LOW LEVEL RECORDING MODE 
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
235,395 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
509,391 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
780,631 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Type 
"10" 

Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 
757,666

การบันทึกโดยใช้โหมดการบันทึกข้อมูลเชิงลึกจะเป็นดังที่แสดงด้านล่าง -

ที่เก็บวัตถุ

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

คลิกที่หัวข้อต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Object Repository และคุณลักษณะที่เกี่ยวข้อง

ซีเนียร์ หัวข้อและคำอธิบาย
1 Object Spy และคุณสมบัติต่างๆ

เพื่อทำความเข้าใจการใช้งานของ object spy และฟังก์ชันที่เกี่ยวข้อง

2 การทำงานกับ Object Repository

การเพิ่มแก้ไขลบอ็อบเจ็กต์จาก Object Repository และฟังก์ชันที่เกี่ยวข้อง

3 ประเภทของที่เก็บออบเจ็กต์

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

4 วัตถุที่ผู้ใช้กำหนดเอง

เกี่ยวข้องกับสถานการณ์ในการใช้วัตถุที่ผู้ใช้กำหนด

5 ที่เก็บออบเจ็กต์ใน XML

เกี่ยวข้องกับการแปลง OR เป็น XML และใช้ Object Repository เป็น XML

6 การเปรียบเทียบและการรวมหรือ

การดำเนินการเช่น Compare OR ', Merge OR เพื่อทำงานกับ Object Repository อย่างมีประสิทธิภาพ

7 ตัวระบุลำดับ

สถานการณ์ที่ใช้ตัวระบุลำดับและข้อดีของมัน

8 วัตถุลูก

การใช้ Child Objects เพื่อการเขียนสคริปต์ที่มีประสิทธิภาพ

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

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

คุณสมบัติของแอ็คชันสามารถเข้าถึงได้โดยคลิกขวาที่หน้าต่าง Script Editor และเลือก "Properties"

คุณสมบัติการดำเนินการประกอบด้วยข้อมูลต่อไปนี้ -

  • ชื่อการดำเนินการ
  • Location
  • ธงที่ใช้ซ้ำได้
  • พารามิเตอร์อินพุต
  • พารามิเตอร์เอาต์พุต

ประเภทของการดำเนินการ

การกระทำมีสามประเภท -

  • Non-reusable action - การดำเนินการที่สามารถเรียกได้เฉพาะในการทดสอบเฉพาะที่ได้รับการออกแบบและสามารถเรียกใช้ได้เพียงครั้งเดียว

  • Reusable action - การกระทำที่สามารถเรียกได้หลายครั้งการทดสอบใด ๆ ที่อยู่และยังสามารถใช้โดยการทดสอบอื่น ๆ

  • External Reusable action- เป็นการดำเนินการซ้ำที่เก็บไว้ในการทดสอบอื่น การดำเนินการภายนอกเป็นแบบอ่านอย่างเดียวในการทดสอบการโทร แต่สามารถใช้ภายในเครื่องกับสำเนาข้อมูลตารางข้อมูลที่แก้ไขได้สำหรับการดำเนินการภายนอก

การทำงานกับการดำเนินการ

มีสามตัวเลือกในการแทรกการกระทำ คลิกที่แต่ละรายการเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทของการกระทำที่เลือก

ซีเนียร์ ประเภทการดำเนินการและคำอธิบาย
1 แทรกคำกระตุ้นการตัดสินใจใหม่

แทรกการดำเนินการใหม่จากการดำเนินการที่มีอยู่

2 แทรกคำเรียกเพื่อคัดลอกการดำเนินการ

แทรกสำเนาของการดำเนินการที่มีอยู่

3 แทรกการเรียกร้องให้ดำเนินการที่มีอยู่

แทรกการเรียกร้องให้มีการดำเนินการที่ใช้ซ้ำได้ที่มีอยู่

DataTable คล้ายกับ Microsoft Excel ช่วยให้ผู้ทดสอบสร้างกรณีทดสอบที่ขับเคลื่อนด้วยข้อมูลซึ่งสามารถใช้เพื่อเรียกใช้การดำเนินการได้หลายครั้ง Datatables มีสองประเภท -

  • Local DataTable - แต่ละการกระทำมีข้อมูลส่วนตัวของตัวเองหรือที่เรียกว่า local datatable ซึ่งสามารถเข้าถึงได้จากการกระทำต่างๆ

  • Global DataTable - การทดสอบแต่ละครั้งมีแผ่นข้อมูลส่วนกลางหนึ่งแผ่นที่สามารถเข้าถึงได้จากการดำเนินการต่างๆ

สามารถเข้าถึงแผ่นข้อมูลได้จากแท็บ "ข้อมูล" ของ QTP ดังที่แสดงด้านล่าง -

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

ตัวอย่าง

ตัวอย่างเช่นหากผู้ใช้ต้องการกำหนดพารามิเตอร์ "ดอกเบี้ยทบต้น" ของ http://easycalculation.com/ ที่สามารถเข้าถึงได้โดยใช้ http://easycalculation.com/compound-interest.php. สามารถสร้างพารามิเตอร์ได้ดังที่แสดงด้านล่าง ฟังก์ชันส่วนใหญ่ของ Excel สามารถใช้ในตารางข้อมูลได้เช่นกัน

การดำเนินการ DataTable

มีวัตถุสามประเภทในการเข้าถึง DataTable การดำเนินการ DataTable สามารถเข้าใจได้ดีโดยการข้ามผ่านสิ่งต่อไปนี้ -

ซีเนียร์ ประเภทวัตถุและคำอธิบาย
1 วิธีการตารางข้อมูล

ให้ข้อมูลโดยละเอียดเกี่ยวกับวิธีการของตารางข้อมูล

2 DTParameter Object Methods

ให้ข้อมูลโดยละเอียดเกี่ยวกับวิธีการ DTParameter

3 วิธีวัตถุ DTSheet

ให้ข้อมูลโดยละเอียดเกี่ยวกับวิธีการ DTSheet

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

ประเภทของจุดตรวจ

ซีเนียร์ ประเภทและคำอธิบาย
1

Standard Checkpoint

ตรวจสอบค่าคุณสมบัติของอ็อบเจ็กต์ในแอ็พพลิเคชันภายใต้การทดสอบและสนับสนุนโดยสภาพแวดล้อม Add-in ทั้งหมด

2

Bitmap Checkpoint

ตรวจสอบพื้นที่ของแอปพลิเคชันของคุณเป็นบิตแมป

3

File Content Checkpoint

ตรวจสอบข้อความในไฟล์ที่สร้างหรือเข้าถึงแบบไดนามิกเช่น. txt, .pdf

4

Table Checkpoint

ตรวจสอบข้อมูลภายในตาราง ไม่รองรับทุกสภาพแวดล้อม

5

Text Checkpoint

ตรวจสอบว่าข้อความที่แสดงภายในพื้นที่ที่กำหนดในแอปพลิเคชันที่ใช้ Windows ตามเกณฑ์ที่ระบุ

6

Text Area Checkpoint

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

7

Accessibility Checkpoint

ตรวจสอบเพจและรายงานพื้นที่ของเว็บไซต์ที่อาจไม่เป็นไปตามแนวทางการเข้าถึงเนื้อหาเว็บของ World Wide Web Consortium (W3C)

8

Page Checkpoint

ตรวจสอบลักษณะของเว็บเพจ นอกจากนี้ยังสามารถตรวจสอบลิงก์ที่ใช้งานไม่ได้

9

Database Checkpoint

ตรวจสอบเนื้อหาของฐานข้อมูลที่เข้าถึงโดยแอปพลิเคชันภายใต้การทดสอบ

10

XML Checkpoint

ตรวจสอบเนื้อหาของเอกสาร. xml หรือเอกสาร. xml ในเว็บเพจและเฟรม

การแทรก CheckPoint

เมื่อผู้ใช้ต้องการแทรกจุดตรวจต้องแน่ใจว่าด่านส่วนใหญ่ได้รับการสนับสนุนในช่วงการบันทึกเท่านั้น เมื่อผู้ใช้หยุดบันทึกจุดตรวจจะไม่เปิดใช้งาน

ด้านล่างเป็นเมนูจุดตรวจเมื่อผู้ใช้ไม่ได้อยู่ในโหมดบันทึก

ด้านล่างเป็นเมนูจุดตรวจเมื่อผู้ใช้อยู่ในโหมดบันทึก

ตัวอย่าง

มีการเพิ่มจุดตรวจสำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ - "http://easycalculation.com/"

' 1. Inserted Standard Checkpoint
Status = Browser("Math Calculator").Page("Math 
   Calculator").Link("Numbers").Check CheckPoint("Numbers")

If Status Then
   print "Checkpoint Passed"
Else
   Print "Checkpoint Failed"
End if

' 2. Inserted BitMap Checkpoint
imgchkpoint = Browser("Math Calculator").Page("Math 
   Calculator").Image("French").Check CheckPoint("French")

If imgchkpoint Then
   print "Checkpoint Passed"
Else
   Print "Checkpoint Failed"
End if

การดูคุณสมบัติของจุดตรวจ

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

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

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

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

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

วิธีแทรกจุดซิงค์

  • WaitProperty
  • Exist
  • Wait
  • ซิงค์ (สำหรับแอปบนเว็บเท่านั้น)
  • การแทรกจุดซิงโครไนซ์ QTP Inbuilt

สมมติว่าเราต้องแทรกจุดซิงค์ระหว่างการคลิกลิงก์ "ตัวเลข" และคลิกที่เครื่องคิดเลข "ดอกเบี้ยแบบง่าย" ใน " www.easycalculation.com " ตอนนี้เราจะดูวิธีทั้งห้าในการแทรกจุดซิงค์สำหรับสถานการณ์ข้างต้น

Method 1 − WaitProperty

WaitProperty is a method that takes the property name, Value and Timeout value as input to perform the sync. It is a dynamic wait and hence, this option is encouraged.

' Method 1 - WaitProperty with 25 seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

obj.Link("Simple Interest").WaitProperty "text", "Simple Interest",25000
obj.Link("Simple Interest").Click

Method 2 − Exist

Exist is a method that takes the Timeout value as input to perform the sync. Again, it is a dynamic wait and hence this option is encouraged.

' Method 2 : Exist Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

If obj.Link("Simple Interest").Exist(30) Then
   obj.Link("Simple Interest").Click

Else
   Print "Link NOT Available"
End IF

Method 3 − Wait

Wait is a hardcoded sync point, which waits independent of the event happened or NOT. Hence, usage of Wait is discouraged and can be used for shorter wait time such as 1 or 2 seconds.

' Method 3 : Wait Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
wait(30)
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

Method 4 − Sync Method

Sync Method can be used only for web applications where there is always a lag between page loads.

' Method 4 : 
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

Browser("Math Calculator").Sync
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

Method 5 − Inserting QTP Inbuilt Synchronization points

Step 1 − Get into Recording Mode. This option would be disabled if the user is NOT in Recording Mode.

Step 2 − Go to "Design" → "Synchronization Point".

Step 3 − We need to select the object, which we want to be the Sync Point. After selecting the object, object window opens as shown below −

Step 4 − Click OK; the "Add Synchronization Window" opens. Select the Property, Value and Time out value and click OK as shown below −

Step 5 − The script would be generated as shown below, which is the same as that of the WaitProperty(Method 1) that we had already discussed −

Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Click

Browser("Math Calculator").Page("Math Calculator").Link("Simple 
   Interest").WaitProperty "text", "Simple Interest", 10000

Default Synchronization

When the user has not used any of the above sync methods, still QTP has an in-built Object synchronization timeout which can be adjusted by the user.

Navigate to "File" >> "Settings" >> Run Tab >> Object Synchronization Time out as shown below.

Sometimes, QTP is unable to find any object that matches the recognized object description or it may find more than one object that fits the description, then QTP ignores the recognized description and uses the Smart Identification mechanism to recognize the object.

QTP's Smart Identification uses two types of properties −

  • Base Filter Properties − The basic properties of a particular test object class whose values cannot be changed without changing the essence of the original object.

  • Optional Filter Properties − Other properties also assist in identifying the objects of a particular class whose properties are unlikely to change often but can be ignored if they are no longer applicable.

Enabling Smart Identification for an Object

Step 1 − Navigate to "Tools" → "Object Identification". Object Identification dialog opens.

Step 2 − Choose the Environment, Object Class and Turn ON "Enable Smart Identification" as shown below −

Step 3 − Click Configure and choose the base and Optional Filter Properties.

Step 4 − Add Properties in Base Properties apart from the default one and also add/remove Optional Filter Properties. Please note that same properties cannot be a part of both Mandatory and Assistive Properties and click "OK".

Step 5 − Verify if the Smart Identification is enabled after adding object of that type in the Object Repository. Smart Identification is set to TRUE. We can also make it False in case we do not want to enable Smart Identification.

Step 6 − We can even disable a test Level by applying at test script level under "Settings" of "File" Menu as shown below −

Step 7 − If the Smart Identification is disabled as per Step# 6 then it will not apply smart identification for any object during the script execution.

Step 8 − In case the objects are added with Smart Identification as Off, QTP will not use Smart Identification for recognizing in future, even though we have enabled it later.

Debugging, in automation testing context, is a systematic process of spotting and fixing the coding issues in the automation script so that the script will be more robust and can spot the defects in the application.

There are various ways to perform debugging using break points in QTP. Break points can be inserted just by pressing "F9" or by using the Menu option "Run" → "Inserting/Removing Break Point".

After Inserting the Break point, the "Red Colored" Dot and the line will be highlighted in RED as shown below −

Method ShortCut Description
Step Into F11 Used to execute each and every Step. Steps into the Function/Action and executes line by line. It pauses on each line after execution.
Step Over F10 Used to Step over the Function. Step Over runs only the current step in the active document.
Step Out Shift+F11 After Step Into the function, you can use the Step Out command. Step Out continues the run to the end of the function and then pauses the run session at the next line.

Options in Break Point

Various Options in Break Point can be accessed by Navigating through the 'Run' Menu.

Sr.No. ShortCut & Description
1

F9

Insert/Remove BreakPoint

2

Ctrl+F9

Enable/Disable BreakPoint

3

Ctrl+Shift+F9

Clear All BreakPoint

4

Use Only Menu

Enable/Disable All BreakPoints

Debugging Pane

The following are the panes in the debugging window −

  • Output − This Tab displays all the Output of the Print Statements.

  • Watch − This Tab displays the Boolean output of the Given Expression.

  • LocalVariables − This Tab displays the Output of the Local Variables.

Example

The Watch Pane shows the output expression as shown below −

The Local Variables Pane shows the values held by the local variables as shown below −

There are various ways of handling errors in QTP. There are three possible types of errors, one would encounter, while working with QTP. They are −

  • Syntax Errors
  • Logical Errors
  • Run Time Errors

Error Types

Syntax Errors

Syntax errors are the typos or a piece of the code that does not confirm with the VBscripting language grammar. Syntax errors occur at the time of compilation of code and cannot be executed until the errors are fixed.

To verify the syntax, use the keyboard shortcut Ctrl+F7 and the result is displayed as shown below. If the window is not displayed one can navigate to "View" → "Errors".

Logical Errors

If the script is syntactically correct but it produces unexpected results, then it is known as a Logical error. Logical error usually does not interrupt the execution but produces incorrect results. Logical errors could occur due to variety of reasons, viz- wrong assumptions or misunderstandings of the requirement and sometimes incorrect program logics (using do-while instead of do-Until) or Infinite Loops.

One of the ways to detect a logical error is to perform peer reviews and also verify the QTP output file/result file to ensure that the tool has performed the way it was supposed to do.

RunTime Errors

As the name states, this kind of error happens during Run Time. The reason for such kind of errors is that the script trying to perform something is unable to do so and the script usually stops, as it is unable to continue with the execution. Classic examples for Run Time Errors are −

  • File NOT found but the script trying to read the file
  • Object NOT found but the script is trying to act on that particular object
  • Dividing a number by Zero
  • Array Index out of bounds while accessing array elements

Handling Run-Time Errors

There are various ways to handle errors in the code.

1. Using Test Settings − Error handling can be defined the Test Settings by Navigating to "File" >> "Settings" >> "Run" Tab as shown below. We can select any of the specified settings and click "OK".

2. Using On Error Statement − The ‘On Error’ statement is used to notify the VBScript engine of intentions to handle the run-time errors by a tester, rather than allowing the VBScript engine to display error messages that are not user-friendly.

  • On Error Resume Next − On Error Resume Next informs the VBScript engine to process executing the next line of code when an error is encountered.

  • On error Goto 0 − This helps the testers to turn off the error handling.

3. Using Err Object − Error object is an in-built object within VBScript that captures the run-time error number and error description with which we are able to debug the code easily.

  • Err.Number − The Number property returns or sets a numeric value specifying an error. If Err.Number value is 0 then No error has occurred.

  • Err.Description − The Description property returns or sets a brief description about an error.

  • Err.Clear − The Clear method resets the Err object and clears all the previous values associated with it.

Example

'Call  the function to Add two Numbers Call Addition(num1,num2) 

Function Addition(a,b)  
   On error resume next  
      If NOT IsNumeric(a) or IsNumeric(b) Then 
         Print "Error number is  " &  err.number & " and description is : 
            " &  err.description 
         Err.Clear 
         Exit Function 
      End If 
   Addition = a+b 

   'disables error handling  
   On Error Goto 0 
End function

4. Using Exit Statement − Exit Statements can be used along with Err object to exit from a test or action or iteration based on the Err.Number value. Let us see each one of those Exit statements in detail.

  • ExitTest − Exits from the entire QTP test, no matter what the run-time iteration settings are.

  • ExitAction − Exits the current action.

  • ExitActionIteration − Exits the current iteration of the action.

  • ExitTestIteration − Exits the current iteration of the QTP test and proceeds to the next iteration.

5. Recovery Scenarios − Upon encountering an error, recovery scenarios are triggered based on certain conditions and it is dealt in detail in a separate chapter.

6. Reporter Object − Reporter Object helps us to report an event to the run results. It helps us to identify if the concerned action/step is pass/fail.

'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, 
[ImageFilePath] 

'Example 
Reporter.ReportEvent micFail, "Login", "User is unable to Login."

Recovery Scenarios

While executing the QTP scripts, we might get some unexpected errors. In order to recover the tests and continue executing the rest of the script from these unexpected errors, Recovery Scenarios are used. The Recovery Scenario Manager can be accessed by Navigating to "Resources" → Recovery Scenario Manager as shown below −

Steps to Create Recovery Scenario

Step 1 − Click "New" Recovery Scenario button; the Recovery Scenario Wizard opens as shown below −

Step 2 − Choose the Trigger Event. It corresponds to event, which can arise in any of the following four events −

  • Pop-Up Window
  • Object State
  • Test Run Error
  • Application Crash

Step 3 − The Recovery Operations Window opens. Recovery Operation can perform any of the following Operation as shown in the screenshot below −

Step 4 − After specifying the appropriate Recovery Operation, we need to specify the Post Recovery Operation as well, as shown below −

Step 5 − After specifying the Post Recovery Operation, the recovery scenario should be named and added to the Test so that it can be activated.

Step 6 − The Recovery Scenario creation is complete and needs to be mapped to the current Test by checking the option "Add Scenario to the current Test" and click "Finish".

Step 7 − The Added Recovery Scenario will be as shown below and click the "Close" Button to continue.

Step 8 − After clicking the Close button, QTP would prompt the user to save the created Recovery scenario. It will be saved with the extension .qrs and the wizard would close.

Verification

The Created Recovery Scenario should be a part of the test now and can be verified by navigating to "File" → "Settings" → "Recovery" Tab.

QTP environment variables are special types of variables that can be accessed by all actions, function libraries, and recovery scenarios. There are in-built environment variables for Windows that are available to all the applications running on that particular system, but QTP environment variables are only available to that particular test script during run-time.

Types of Environment Variables

Built-in Environment Variables − provides a range of environment parameters that can provide information such as test name, action name, the test path, local host name, the operating system name, type and its version. The Environment Variable names can be accessed by navigating to "File" → "Test Settings" → "Environment" Tab.

User defined Internal − User defined variables can be saved by selecting "User Defined" in the Environment Tab Window. The "+" button is clicked to enter Parameter Name and Value as shown below −

User Defined External − User Defined Variables can be stored in an external file as a .xml file and can be loaded into the test as shown in the figure given below. It can also be loaded dynamically during run-time as explained below in one of the examples.

Environment Variables – Supported Methods

1. ExternalFileName Property − Returns the name of the loaded external environment variable file specified in the Environment tab of the Test Settings dialog box. If no external environment variable file is loaded, this property returns an empty string.

x = Environment.ExternalFileName 
print x

2. LoadFromFile Method − Loads the specified environment variable file (.xml) dynamically during run time. When using this method, the environment variables need not be added manually into the Environment Tab.

Environment.LoadFromFile "D:\config.xml"
b = Environment.Value("Browser")
print b

3. Value Property − Retrieves the value of environment variables. We can also set the value of user-defined internal environment variables using this property.

' Get the Value of the InBuilt Environment Variables
a = Environment.Value("OS")
print a
b = Environment.Value("ActionName")
print b
  
'Loaded from External File
Environment.LoadFromFile "D:\config.xml"
c = Environment.Value("Browser")
print c

In order to modularize the script, library files are added to the QTP Script. It contains variable declaration, Functions, Classes etc. They enable reusability that can be shared across test scripts. They are saved with an extenstion .vbs or .qfl

A new Library file can be created by navigating to "File" >> "Function Library".

Associating Function Libraries

Method 1 − By using "File" > "Settings" > Resources > Associate Function Library option. Click the "+" button to add Function Library file and add it using the actual path or relative path as shown below −

Method 2 − Using ExecuteFile method.

'Syntax : ExecuteFile(Filepath)
ExecuteFile "C:\lib1.vbs" 
ExecuteFile "C:\lib2.vbs"

Method 3 − Using LoadFunctionLibrary Method.

'Syntax : LoadFunctionLibrary(Filepath)
LoadFunctionLibrary "C:\lib1.vbs" 
LoadFunctionLibrary "C:\lib2.vbs"

Method 4 − Automation Object Model(AOM) - It is a mechanism, using which, we can control various QTP operations outside QTP. Using AOM, we can launch QTP, Open the Test, Associate Function Libraries etc. The following VbScript should be saved with Extension .vbs and upon executing the same, QTP will be launched and test would start executing. AOM will be discussed in detail in the later chapters.

'Launch QTP
Set objQTP = CreateObject("QuickTest.Application")
objQTP.Launch
objQTP.Visible = True
  
'Open the test
objQTP.Open "D:\GUITest2", False, False
Set objLib = objQTP.Test.Settings.Resources.Libraries
  
'Associate Function Library if NOT associated already.
If objLib.Find("C:\lib1.vbs") = -1 Then 
  objLib.Add "C:\lib1.vbs", 1 
End

Test Results

The Test Results Window gives us sufficient information to show the steps passed, failed etc. Results window opens automatically after the execution of the test (as per default settings). The following information is displayed −

  • Steps Passed
  • Steps Failed
  • Environment Parameters
  • Graphical Statistics

Operations performed in Test Results

Converting Results to HTML

In the Results Viewer window, navigate to "File" → "Export to File". Export Run Results dialog box opens as shown below −

We can choose what type of report is to be exported. It can be short results, detailed results or even, we can select nodes. After selecting the File Name and exporting it, the file is saved as .HTML File

Filtering the Results

Results can be filtered based on Status, Node Type, and Iterations. It can be accessed by using the Filter button in the "Test Results Window".

Raising Defects

Defects can be logged into QC directly from the Test Results Window pane by accessing "Tools" → "Add Defect" which open's the connection to ALM as shown below −

Test Results

The Automatic Test Results Window can be configured under "Tools" → "Options" → "Run Sessions" Tab. We can turn it OFF, if required, and also, we can switch ON "Automatically Export Results when session Ends".

The screenshot or the movie can be recorded based on the settings. The same can be configured under "Tools" → "Options" → "Screen Capture" Tab. We can save the screenshot or movies based on the following three conditions −

  • For Errors
  • Always
  • For Errors and Warnings

There are various GUI objects, with which QTP interacts, during the script execution. Hence, it is important to know the basic methods for the key GUI objects using which we will be able to work on it effectively.

Working with Text Box

Following are the methods using which we access text box during Run Time −

  • Set − Helps the tester to Set Values into the Text Box

  • Click − Clicks on the Text Box

  • SetSecure − Used to set the text in the password boxes securely

  • WaitProperty − Waits Till the Property value becomes true

  • Exist − Checks for the existence of the Text Box

  • GetROProperty("text") − Gets the Value of the Text Box

  • GetROProperty("Visible") − Returns a Boolean value if visible

Example

Browser("Math Calculator").Sync
Set Obj = Browser("Math Calculator").Page("SQR Calc").WebEdit("n")

'Clicks on the Text Box
Obj.Click

'Verify if the Object Exist - Returns Boolean value
a = obj.Exist
print a

'Set the value
obj.Set "10000" : wait(2)

'Get the Runtime Object Property - Value of the Text Box
val = obj.GetROProperty("value")
print val

'Get the Run Time Object Property - Visiblility - Returns Boolean Value
x = Obj.GetROProperty("visible")
print x

การทำงานกับกล่องกาเครื่องหมาย

ต่อไปนี้เป็นวิธีการสำคัญบางส่วนที่สามารถใช้กับ Check Box ได้ -

  • Set - ช่วยให้ผู้ทดสอบสามารถตั้งค่าช่องทำเครื่องหมาย "เปิด" หรือ "ปิด"

  • Click- คลิกที่กล่องกาเครื่องหมาย แม้กระทั่งตรวจสอบเปิดหรือปิด แต่ผู้ใช้จะไม่แน่ใจเกี่ยวกับสถานะ

  • WaitProperty - รอจนกว่ามูลค่าทรัพย์สินจะกลายเป็นจริง

  • Exist - ตรวจสอบการมีอยู่ของกล่องกาเครื่องหมาย

  • GetROProperty("name") - รับชื่อของกล่องกาเครื่องหมาย

  • GetROProperty("Visible") - ส่งคืนค่าบูลีนหากมองเห็นได้

ตัวอย่าง

'To Check the Check Box
Set Obj = Browser("Calculator").Page("Gmail").WebCheckBox("PersistentCookie")
Obj.Set "ON"

'To UnCheck the Check Box
Obj.Set "OFF"

'Verifies the Existance of the Check box and returns Boolean Value
val = Obj.Exist
print val

'Fetches the Name of the CheckBox
a = Obj.GetROProperty("name")
print a

'Verifies the visible property and returns the boolean value.
x = Obj.GetROProperty("visible")
print x

การทำงานกับปุ่มตัวเลือก

ต่อไปนี้เป็นวิธีการสำคัญบางอย่างที่สามารถใช้กับปุ่มตัวเลือก -

  • Select(RadioButtonName) - ช่วยให้ผู้ทดสอบตั้งค่ากล่องวิทยุ "เปิด"

  • Click- คลิกที่ปุ่มตัวเลือก แม้แต่ปุ่มตัวเลือกเปิดหรือปิด แต่ผู้ทดสอบไม่สามารถรับสถานะได้

  • WaitProperty - รอจนกว่ามูลค่าทรัพย์สินจะกลายเป็นจริง

  • Exist - ตรวจสอบการมีอยู่ของปุ่มตัวเลือก

  • GetROProperty("name") - รับชื่อของปุ่มตัวเลือก

  • GetROProperty("Visible") - ส่งคืนค่าบูลีนหากมองเห็นได้

ตัวอย่าง

'Select the Radio Button by name "YES"
Set Obj = Browser("Calculator").Page("Forms").WebRadioGroup("group1")
Obj.Select("Yes")

'Verifies the Existance of the Radio Button and returns Boolean Value
val = Obj.Exist
print val

'Returns the Outerhtml of the Radio Button
txt = Obj.GetROProperty("outerhtml")
print text

'Returns the boolean value if Radio button is Visible.
vis = Obj.GetROProperty("visible")
print vis

การทำงานกับ Combo Box

ต่อไปนี้เป็นวิธีการสำคัญบางส่วนที่สามารถใช้กับ Combo Box ได้ -

  • Select(Value) - ช่วยให้ผู้ทดสอบเลือกค่าจาก ComboBox

  • Click - คลิกที่วัตถุ

  • WaitProperty - รอจนกว่ามูลค่าทรัพย์สินจะกลายเป็นจริง

  • Exist - ตรวจสอบการมีอยู่ของ Combo Box

  • GetROProperty("Text") - รับค่าที่เลือกของ Combo Box

  • GetROProperty("all items") - ส่งคืนรายการทั้งหมดในกล่องคำสั่งผสม

  • GetROProperty("items count") - ส่งคืนจำนวนรายการในกล่องคำสั่งผสม

ตัวอย่าง

'Get the List of all the Items from the ComboBox
Set ObjList = Browser("Math Calculator").Page("Statistics").WebList("class")
x = ObjList.GetROProperty("all items")
print x

'Get the Number of Items from the Combo Box
y = ObjList.GetROProperty("items count")
print y

'Get the text value of the Selected Item
z = ObjList.GetROProperty("text")
print z

การทำงานกับปุ่มต่างๆ

ต่อไปนี้เป็นวิธีการสำคัญบางส่วนที่สามารถใช้กับปุ่มได้ -

  • Click - คลิกที่ปุ่ม

  • WaitProperty - รอจนกว่ามูลค่าทรัพย์สินจะกลายเป็นจริง

  • Exist - ตรวจสอบการมีอยู่ของปุ่ม

  • GetROProperty("Name") - รับชื่อของปุ่ม

  • GetROProperty("Disabled") - ส่งคืนค่าบูลีนหากเปิดใช้งาน / ปิดใช้งาน

ตัวอย่าง

'To Perform a Click on the Button
Set obj_Button = Browser("Math Calculator").Page("SQR").WebButton("Calc")
obj_Button.Click

'To Perform a Middle Click on the Button
obj_Button.MiddleClick

'To check if the button is enabled or disabled.Returns Boolean Value
x = obj_Button.GetROProperty("disabled")
print x

'To fetch the Name of the Button
y = obj_Button.GetROProperty("name")
print y

การทำงานกับ webTables

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

ซีเนียร์ คำชี้แจงและคำอธิบาย
1

if statement

อัน if คำสั่งประกอบด้วยนิพจน์บูลีนตามด้วยหนึ่งคำสั่งหรือมากกว่า

2

if...else statement

อัน if elseคำสั่งประกอบด้วยนิพจน์บูลีนตามด้วยหนึ่งคำสั่งหรือมากกว่า ถ้าเงื่อนไขเป็น True. งบภายใต้ifคำสั่งถูกดำเนินการ หากเงื่อนไขเป็นเท็จElse ส่วนหนึ่งของสคริปต์ถูกเรียกใช้งาน

3

if..elseif...else statement

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

4

nested if statements

ถ้าหรือ elseif คำสั่งภายในอื่น if หรือ elseif คำสั่ง (s)

5

switch statement

switch คำสั่งอนุญาตให้ทดสอบตัวแปรสำหรับรายการค่า aganist เท่า ๆ กัน

  • html id - หากตารางมีแท็ก id ควรใช้ประโยชน์จากคุณสมบัตินี้

  • innerText - ส่วนหัวของตาราง

  • sourceIndex - ดึงดัชนีแหล่งที่มาของตาราง

  • ChildItemCount - รับจำนวน ChildItems ที่มีอยู่ในแถวที่ระบุ

  • RowCount - รับจำนวนแถวในตาราง

  • ColumnCount - รับจำนวนคอลัมน์ในตาราง

  • GetcellData - รับค่าของเซลล์ตามคอลัมน์และดัชนีแถว

ตัวอย่าง

Browser("Tutorials Point").Sync
' WebTable 
Obj = Browser("Tutorials Point").Page("VBScript Decisions").WebTable("Statement")
' Fetch RowCount
x = Obj.RowCount
print x

' Fetch ColumnCount
y = Obj.ColumnCount(1)
print y

' Print the Cell Data of the Table
For i = 1 To x Step 1
   
   For j = 1 To y Step 1
      z = Obj.GetCellData(i,j)
      print "Row ID : " & i & " Column ID : " & j & " Value : " & z
   Next
Next

'Fetch the Child Item count of Type Link in a particular Cell
z = Obj.ChildItemCount(2,1,"Link")
print z

วัตถุเสมือนคืออะไร?

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

ตัวอย่าง

สมมติว่าเรากำลังสร้างสถานการณ์โดยอัตโนมัติใน Microsoft Word ฉันเปิดใช้งานแอปพลิเคชัน MS word และคลิกที่ไอคอนใดก็ได้ในริบบิ้น ตัวอย่างเช่นบน Ribbon แท็บแทรกจะถูกคลิกแล้วผู้ใช้คลิกปุ่ม "รูปภาพ" ปุ่มได้รับการยอมรับว่าเป็น WinObject; ดังนั้นความสำคัญของวัตถุเสมือนจึงเด่นชัด

Window("Microsoft Word").WinObject("Ribbon").Click 145,45
Window("Microsoft Word").WinObject("Ribbon").WinObject("Picture...").Click 
170,104

การสร้างวัตถุเสมือน

Step 1 - ในสถานการณ์เช่นนี้ Virtual Objects จะถูกสร้างขึ้นโดยใช้ Virtual Object Manager หรือ Virtual Object ใหม่จาก "Tools" >> "Virtual Object" >> "New Virtual Object" แล้วคลิกปุ่ม "Next"

Step 2 - แมปวัตถุกับประเภทคลาสแล้วคลิก "ถัดไป"

Step 3- คลิกปุ่ม "ทำเครื่องหมายวัตถุ" เคอร์เซอร์กากบาทจะปรากฏขึ้นและทำเครื่องหมายวัตถุที่คุณต้องการแมปและคลิก "ถัดไป"

Step 4 - เลือกพาเรนต์ของวัตถุเสมือนและคลิก "ถัดไป"

Step 5 - ตั้งชื่อคอลเลกชันที่คุณต้องการจัดเก็บวัตถุเสมือนและคลิก "เสร็จสิ้น"

ตัวจัดการวัตถุเสมือน

Virtual Object Manager จัดการคอลเลกชันของวัตถุเสมือน ผู้ทดสอบสามารถเพิ่มหรือลบ Virtual Objects จาก Virtual Object manager

การนำทางไปยัง Virtual object Manager: "Tools" >> "Virtual Object Manager" ดังที่แสดงด้านล่าง -

การใช้ Virtual Objects

หลังจากสร้าง Virtual Objects แล้วสามารถใช้ Object ที่สร้างขึ้นได้ดังที่แสดงด้านล่าง -

Window("Microsoft Word").WinObject("Ribbon").VirtualButton("button").Click

ข้อ จำกัด ของวัตถุเสมือน

  • QTP ไม่สนับสนุนวัตถุเสมือนสำหรับการบันทึกแบบอะนาล็อกหรือระดับต่ำ

  • ไม่สามารถเพิ่มจุดตรวจบนวัตถุเสมือน

  • วัตถุเสมือนไม่ได้ถูกควบคุมโดย Object Repository

  • แม้ว่าเราจะแม็พอ็อบเจกต์กับคลาสเฉพาะ (ปุ่มหรือรายการ) เมธอดทั้งหมดของอ็อบเจ็กต์ดั้งเดิมไม่ได้รับการสนับสนุนโดยอ็อบเจ็กต์เสมือน

  • ไม่สามารถใช้ Object Spy บน Virtual Object ได้

  • การดำเนินการทดสอบจะล้มเหลวหากความละเอียดของหน้าจอเปลี่ยนไปเมื่อพิกัดเปลี่ยนไป

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

ด้วยเหตุนี้ QTP จึงไม่มีการสนับสนุนในตัวเพื่อเชื่อมต่อกับฐานข้อมูลอย่างไรก็ตามการใช้ผู้ทดสอบ VBScript จะสามารถเชื่อมต่อและโต้ตอบกับฐานข้อมูลโดยใช้วัตถุ ADODB

ADODB มีคุณสมบัติหรือวิธีการ 4 อย่างที่เราจะสามารถทำงานกับฐานข้อมูลได้ พวกเขาคือ -

  • ADODB.Connection - ใช้เพื่อสร้างการเชื่อมต่อกับฐานข้อมูล

  • ADODB.Command - ใช้เพื่อดำเนินการคำสั่ง SQL (Queries หรือ Stored Procedures)

  • ADODB.Fields - ใช้เพื่อดึงคอลัมน์เฉพาะจากชุดระเบียนหลังจากดำเนินการค้นหา / จัดเก็บ proc

  • ADODB.Recordset - ใช้เพื่อดึงข้อมูลจากฐานข้อมูล

จะเชื่อมต่อกับฐานข้อมูลได้อย่างไร?

ฐานข้อมูลสามารถเชื่อมต่อโดยใช้สตริงการเชื่อมต่อ แต่ละฐานข้อมูลแตกต่างกันไปตามวิธีที่เราเชื่อมต่อ อย่างไรก็ตามสามารถสร้างสตริงการเชื่อมต่อได้ด้วยความช่วยเหลือของwww.connectionstrings.com

ให้เราดูวิธีการเชื่อมต่อกับฐานข้อมูลด้วยพารามิเตอร์ต่อไปนี้ -

  • Database Type - เซิร์ฟเวอร์ MSSQL

  • Server Name - SQLEXPRESS

  • Database Name - ทดลองใช้

  • User Id - ส

  • password - รหัสผ่าน 123

ผลลัพธ์ของแบบสอบถามจะแสดงใน SQL Server Management Studio ดังนี้ -

Dim objConnection 
'Set Adodb Connection Object
Set objConnection = CreateObject("ADODB.Connection")     
Dim objRecordSet 
 
'Create RecordSet Object
Set objRecordSet = CreateObject("ADODB.Recordset")     
 
Dim DBQuery 'Query to be Executed
DBQuery = "Select NAME from dbo.EMPLOYEE where AGE = 29"
 
'Connecting using SQL OLEDB Driver
objConnection.Open "Provider = sqloledb.1;Server =.\SQLEXPRESS;
User Id = sa;Password=Password123;Database = Trial"
 
'Execute the Query
objRecordSet.Open DBQuery,objConnection
 
'Return the Result Set
Value = objRecordSet.fields.item(0)				
msgbox Value
 
' Release the Resources
objRecordSet.Close        
objConnection.Close		
 
Set objConnection = Nothing
Set objRecordSet = Nothing

ผลลัพธ์

ในการเรียกใช้สคริปต์ข้างต้นผลลัพธ์จะปรากฏในกล่องข้อความดังที่แสดงด้านล่าง -

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

ตัวอย่าง XML และองค์ประกอบหลักแสดงอยู่ด้านล่าง -

การเข้าถึง XML

Const XMLDataFile = "C:\TestData.xml"
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = False
xmlDoc.Load(XMLDataFile)

' Getting the number of Nodes (books)
Set nodes = xmlDoc.SelectNodes("/bookstore/book")
Print "Total books: " & nodes.Length    ' Displays 2

' get all titles
Set nodes = xmlDoc.SelectNodes("/Booklib/book/value/text()")

' get their values
For i = 0 To (nodes.Length - 1)
   Title = nodes(i).NodeValue
   Print "Title is" & (i + 1) & ": " & Title
Next

การเปรียบเทียบ XML

เราสามารถเปรียบเทียบ XML สองรายการที่กำหนด -

Dim xmlDoc1
Dim xmlDoc2

' Load the XML Files
Set xmlDoc1 = XMLUtil.CreateXMLFromFile ("C:\File1.xml")
Set xmlDoc2 = XMLUtil.CreateXMLFromFile ("C:\File2.xml")

'Use the compare method of the XML to check if they are equivalent
Comp = xmlDoc1.Compare (xmlDoc1, xmlDoc2)

'Returns 1 if the two files are the same
If Comp = 1 Then
   Msgbox "XML Files are the Same"
Else
   Msgbox "XML Files are Different"
End if

สคริปต์ QTP สามารถดำเนินการได้ก็ต่อเมื่อมีออบเจ็กต์อยู่ใน Object Repository คำอธิบายของวัตถุถูกสร้างขึ้นโดยใช้การเขียนโปรแกรมเชิงพรรณนา -

  • เมื่อผู้ทดสอบต้องการดำเนินการกับอ็อบเจ็กต์ที่ไม่มีอยู่ในที่เก็บอ็อบเจ็กต์

  • เมื่อวัตถุในแอปพลิเคชันมีลักษณะไดนามิกมาก

  • เมื่อ Object Repository ขยายใหญ่ขึ้นจะส่งผลให้ประสิทธิภาพต่ำลงเมื่อขนาดของ Object Repository เพิ่มขึ้น

  • เมื่อเฟรมเวิร์กถูกสร้างขึ้นดังนั้นจึงมีการตัดสินใจที่จะไม่ใช้ Object Repository เลย

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

ไวยากรณ์

มีสองวิธีในการเขียนสคริปต์โดยใช้เทคนิคการเขียนโปรแกรมเชิงพรรณนา พวกเขาคือ -

  • คำอธิบายวัตถุ
  • คำอธิบายสตริง

คำอธิบายวัตถุ

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

'Creating a description object
Set btncalc = Description.Create()

'Add descriptions and properties
btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"

' Use the same to script it
Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click

คำอธิบายสตริง

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

Browser("Math Calc").Page("Num Calculator").WebButton("html 
tag:=INPUT","type:=Button","name:=calculate").Click

วัตถุลูก

QTP จัดเตรียมเมธอด ChildObjects ซึ่งช่วยให้เราสามารถสร้างคอลเล็กชันของอ็อบเจ็กต์ อ็อบเจ็กต์พาเรนต์นำหน้า ChildObjects

Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Find all the Links
Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)

Dim i
'obj.Count value has the number of links in the page

For i = 0 to obj.Count - 1	 
   'get the name of all the links in the page			
   x = obj(i).GetROProperty("innerhtml") 
   print x 
Next

ตัวระบุลำดับ

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

' Using Location
Dim Obj
Set Obj = Browser("title:=.*google.*").Page("micclass:=Page")
Obj.WebEdit("name:=Test","location:=0").Set "ABC"
Obj.WebEdit("name:=Test","location:=1").Set "123"
 
' Index
Obj.WebEdit("name:=Test","index:=0").Set "1123"
Obj.WebEdit("name:=Test","index:=1").Set "2222"
 
' Creation Time
Browser("creationtime:=0").Sync
Browser("creationtime:=1").Sync
Browser("creationtime:=2").Sync

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

  • โหลด Add-in ที่จำเป็นทั้งหมดสำหรับการทดสอบ
  • ทำให้ QTP มองเห็นได้ในขณะดำเนินการ
  • เปิดการทดสอบโดยใช้ตำแหน่งที่ระบุ
  • ห้องสมุดฟังก์ชัน Associates
  • ระบุ Common Object Sync Time out
  • เริ่มต้นและสิ้นสุดการทำซ้ำ
  • เปิด / ปิดการใช้งาน Smart Identification
  • ในการตั้งค่าข้อผิดพลาด
  • เส้นทางตารางข้อมูล
  • การตั้งค่าสถานการณ์การกู้คืน
  • การตั้งค่าการติดตามบันทึก

QTP 11.5x มีเอกสารเฉพาะเกี่ยวกับโมเดล Automation Object ที่สามารถอ้างอิงได้โดยไปที่ "Start" >> "All Programs" >> "HP Software" >> "HP Unified Functional Testing" >> "Documentation" >> "Unified การอ้างอิงการทดสอบอัตโนมัติตามหน้าที่ "

สร้างสคริปต์ AOM

ผู้ทดสอบสามารถสร้างสคริปต์ AOM จาก QTP ได้โดยใช้ตัวเลือก "สร้างสคริปต์" ไปที่ "Run" >> "Settings" >> "Properties" Tab >> "Generate Script" ดังที่แสดงด้านล่าง -

ตัวอย่าง

' A Sample Script to Demostrate AOM
Dim App 'As Application
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = True

App.Test.Settings.Launchers("Web").Active = False
App.Test.Settings.Launchers("Web").Browser = "IE"
App.Test.Settings.Launchers("Web").Address = "http://easycalculation.com/"
App.Test.Settings.Launchers("Web").CloseOnExit = True

App.Test.Settings.Launchers("Windows Applications").Active = False
App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll
App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True
App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = False
App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True

App.Test.Settings.Run.IterationMode = "rngAll"
App.Test.Settings.Run.StartIteration = 1
App.Test.Settings.Run.EndIteration = 1
App.Test.Settings.Run.ObjectSyncTimeOut = 20000
App.Test.Settings.Run.DisableSmartIdentification = False
App.Test.Settings.Run.OnError = "Dialog"

App.Test.Settings.Resources.DataTablePath = "<Default>"
App.Test.Settings.Resources.Libraries.RemoveAll

App.Test.Settings.Web.BrowserNavigationTimeout = 60000
App.Test.Settings.Web.ActiveScreenAccess.UserName = ""
App.Test.Settings.Web.ActiveScreenAccess.Password = ""

App.Test.Settings.Recovery.Enabled = True
App.Test.Settings.Recovery.SetActivationMode "OnError"
App.Test.Settings.Recovery.Add "D:\GUITest2\recover_app_crash.qrs", 
   "Recover_Application_Crash", 1
App.Test.Settings.Recovery.Item(1).Enabled = True 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' System Local Monitoring settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
App.Test.Settings.LocalSystemMonitor.Enable = false
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Log Tracking settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With App.Test.Settings.LogTracking
   .IncludeInResults = False
   .Port = 18081 
   .IP = "127.0.0.1"
   .MinTriggerLevel = "ERROR"
   .EnableAutoConfig = False
   .RecoverConfigAfterRun = False
   .ConfigFile = ""
   .MinConfigLevel = "WARN" 
End With

กรอบงานกำหนดแนวทาง / แนวทางปฏิบัติที่ดีที่สุดที่บังคับใช้ชุดของมาตรฐานซึ่งทำให้ผู้ใช้ปลายทางสามารถใช้งานได้ง่าย เฟรมเวิร์กระบบอัตโนมัติมีหลายประเภทและเฟรมเวิร์กที่พบมากที่สุดมีดังต่อไปนี้ -

  • Keyword-Driven Framework
  • กรอบข้อมูลที่ขับเคลื่อนด้วย
  • กรอบงานไฮบริด

Keyword-Driven Framework

การทดสอบด้วยคีย์เวิร์ดคือกรอบการทดสอบการทำงานอัตโนมัติประเภทหนึ่งซึ่งเรียกอีกอย่างว่าการทดสอบตามตารางหรือการทดสอบตามคำที่ใช้การดำเนินการ

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

ข้อดี

  • เหมาะที่สุดสำหรับมือใหม่หรือผู้ทดสอบที่ไม่ใช้เทคนิค

  • เปิดใช้งานการทดสอบการเขียนในลักษณะที่เป็นนามธรรมมากขึ้นโดยใช้แนวทางนี้

  • การทดสอบด้วยคีย์เวิร์ดช่วยให้สามารถเริ่มการทำงานอัตโนมัติใน SDLC ได้ก่อนหน้านี้ก่อนที่จะมีการส่งบิลด์ที่เสถียรสำหรับการทดสอบ

  • มีความสามารถในการนำกลับมาใช้ใหม่ได้ในระดับสูง

ข้อเสีย

  • การลงทุนครั้งแรกในการพัฒนาคำหลักและฟังก์ชันที่เกี่ยวข้องอาจใช้เวลานานขึ้น

  • อาจทำหน้าที่เป็นข้อ จำกัด สำหรับผู้ทดสอบที่มีความสามารถทางเทคนิค

กรอบการขับเคลื่อนข้อมูล

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

  • datapools
  • ไฟล์ Excel
  • วัตถุ ADO
  • ไฟล์ CSV
  • แหล่งที่มาของ ODBC

แผนภาพการไหล

การทดสอบการขับเคลื่อนด้วยข้อมูลสามารถเข้าใจได้ดีที่สุดจากแผนภาพต่อไปนี้ -

ข้อดี

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

ข้อเสีย

  • แต่ละสคริปต์ต้องแตกต่างกันเพื่อให้เข้าใจชุดข้อมูลที่แตกต่างกัน

กรอบงานไฮบริด

Hybrid Framework คือการผสมผสานระหว่าง Keyword ที่ขับเคลื่อนด้วยและกรอบงานที่ขับเคลื่อนด้วยข้อมูลซึ่งสามารถอธิบายได้ดีที่สุดโดยใช้แผนภาพกระแสต่อไปนี้

ปัจจัยที่มีผลต่อ

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

  • ไฟล์ Framework ควรรองรับการกำหนดเวอร์ชันซอฟต์แวร์ควบคุมเช่น SVN, CVS, MS Source Control

  • Framework ควรสนับสนุนการเรียกใช้สคริปต์ในสภาพแวดล้อมที่แตกต่างกันเช่น QA, SAT, DEV

  • เมื่อวัตถุมีการเปลี่ยนแปลงสคริปต์ควรดำเนินการโดยมีการเปลี่ยนแปลงน้อยที่สุด

  • Framework ควรกำหนดค่าเองและดูแลข้อกำหนดเบื้องต้นเช่นการสร้างโฟลเดอร์ / ฐานข้อมูล

  • Framework ควรมีโครงสร้างการรายงานที่แข็งแกร่งเพื่อให้สามารถตรวจพบปัญหาในสคริปต์ / แอปพลิเคชันได้ง่าย

  • Framework ควรมีความยืดหยุ่นมากขึ้นเพื่อให้ใช้งานได้ง่าย

  • Framework ควรเป็นไปตามมาตรฐานการเข้ารหัสเพื่อให้ไฟล์ฟังก์ชันและประวัติการเปลี่ยนแปลงได้รับการดูแลอย่างถูกต้อง

ในบทต่อไปเราจะเรียนรู้วิธีการออกแบบกรอบอย่างง่าย

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

แอปพลิเคชันตัวอย่างที่อยู่ระหว่างการทดสอบคือ "Calculator"แอปพลิเคชันเริ่มต้นที่พร้อมใช้งานเป็นส่วนหนึ่งของ Windows ตอนนี้ให้เราสร้างส่วนประกอบต่างๆของกรอบงาน ที่นี่เราจะพัฒนาเฟรมเวิร์กแบบไฮบริดและใช้ Object Repository เนื่องจากเป็นแอปพลิเคชันที่ค่อนข้างง่าย อย่างไรก็ตามกรอบนี้สามารถปรับขนาดเพื่อรองรับแอปพลิเคชันที่ซับซ้อนได้เช่นกัน

โครงสร้างโฟลเดอร์ของ Framework ดังแสดงด้านล่าง -

คำอธิบายโครงสร้างโฟลเดอร์ -

  • Master Driver Script- สคริปต์ที่ขับเคลื่อนการดำเนินการทั้งหมด ดำเนินการตั้งค่าข้อกำหนดเบื้องต้นและเบื้องต้นที่จำเป็นสำหรับการดำเนินการ

  • Library Files - ฟังก์ชันที่เกี่ยวข้องที่สร้างไลบรารีฟังก์ชัน

  • Data Table - ข้อมูลการทดสอบที่จำเป็นสำหรับการดำเนินการ

  • Object Repository - วัตถุและคุณสมบัติของมันที่ทำให้ QTP สามารถจดจำวัตถุได้อย่างราบรื่น

  • Execution Logs - โฟลเดอร์มีไฟล์บันทึกการดำเนินการพร้อมฟังก์ชันของผู้ใช้และประวัติการเรียกใช้ฟังก์ชัน

สคริปต์ไดรเวอร์หลัก

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
' MASTER DRIVER SCRIPT NAME    : Calculator 
' DESCRIPTION                  : Drivers Script to Execute Automated Test for 
   the Calculator  
' AUTHOR                       : Tutorials Point 
' DATE CREATED                 : 30-Dec-2013 
' OBJECT REPOSITORY ASSOCIATED : Calc.tsr 
' LIBRARY FILES ASSOCIATED     : calculator.qfl, Common.qfl 
' MODIFICATION LOG

' ---------------------------------------------------- 
' First Version       Tutorials point 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
Option Explicit  

Public ExecDrive  

' Get the Root folder of the Test  so that we can make use of relative paths. 
Dim x : x = Instr(Environment.Value("TestDir"),"Driver")-2 
ExecDrive = mid(Environment.Value("TestDir"),1,x)  

' Get the path of Libraries using relative to the current Drive 
Dim LibPath : LibPath = ExecDrive+"\Libraries\"  

' Dynamically Load the Function Libraries 
LoadFunctionLibrary LibPath + "Calculator.qfl", LibPath + "common_utils.qfl"   

' Capturing the Start Time 
' clscommon is the class object created in common.qfl library file 
clscommon.StartTime = Time()  

' Launching the Application 
SystemUtil.Run "C:\Windows\System32\Calc.exe" : wait (2)  

' Initialize the Data Table Path  
Dim FileName : FileName  = ExecDrive+"\TestData\Calculator.xls" 
Dim SheetSource : SheetSource  = "Calc_test" 
Dim SheetDest : SheetDest = "Global"  

' Import the DataTable into the QTP Script 
DataTable.ImportSheet  FileName , SheetSource , SheetDest   

' Object Repository Path 
Dim RepPath : RepPath = ExecDrive+"\Object_Repository\Calc.tsr" 
RepositoriesCollection.RemoveAll()  
RepositoriesCollection.Add(RepPath)   

' To Keep a Count on iteration 
Dim InttestIteration                   
Dim InttestRows : InttestRows = datatable.GetRowCount   

'  Fetching Date-TimeStamp which will be unique for Naming the Execution Log File 
clscommon.StrDateFormatted = day(date()) & "_" &  MonthName(Month(date()),true) &  
 "_" & YEAR(date())& "_"&hour(now)&"_"&minute(now)  

 ' Name the LogFile  
clscommon.StrLogFile = ExecDrive & "\Execution Logs\" &  
clscommon.StrDateFormatted & ".txt"   

' Create the Execution LogFile which captures the result 
clscommon.Fn_FileCreate(clscommon.StrLogFile)  

' Iniitialize the Parameters and all the relevant Test Details 
Call Fn_InitializeLogFile()  

' Kill all the previous calculator process  
Call fn_Kill_Process("calc.exe")  

For InttestIteration = 1 to InttestRows 
   datatable.SetCurrentRow InttestIteration  
   Dim StrExecute : StrExecute = Ucase(Trim(datatable.Value("Run","Global"))) 
   If StrExecute = "Y" Then  
      clscommon.Number1 = Trim(datatable.Value("Number_1","Global"))  
      clscommon.Number2 = Trim(datatable.Value("Number_2","Global"))  
      clscommon.Number3 = Trim(datatable.Value("Number_3","Global"))  
   
      clscommon.Number4 = Trim(datatable.Value("Number_4","Global"))  
      clscommon.Number5 = Trim(datatable.Value("Number_5","Global"))  
      clscommon.Number6 = Trim(datatable.Value("Number_6","Global"))  
   
      clscommon.Test_Case_ID  = 
         Trim(datatable.Value("Test_Case_ID","Global"))' 
            : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
      clscommon.tcScenario = 
         Trim(datatable.Value("Scenario","Global"))' 
            : clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
      Dim  Expected_Val :  Expected_Val = 
         Trim(datatable.Value("Expected_Val","Global"))'                        
            :  clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath 
   
      Select case clscommon.tcScenario  
         Case "Add" 
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("+",Expected_Val) 
    
         Case "Subtract"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("-",Expected_Val) 
    
         Case "Multiply"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("*",Expected_Val) 
    
         Case "Divide"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("/",Expected_Val) 
    
         Case "Sqrt"   
            clscommon.LogWrite "=== Inside the Test Set :: " & 
               clscommon.tcScenario & " ===" 
                  Call fnCalculate("sqt",Expected_Val) 
      End Select 
   End If  
Next  

' Calling the End Test to Add the result Footer in exec log file. 
Call fn_End_test()  

'  =====================  End of Master Driver Script =====================

ไฟล์ไลบรารี

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

'  Calculator. Qfl File :: Associated Function Library for Calculator Master Driver  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : Fn_InitializeLogFile 
' DESCRIPTION       : Function to Write the Initial Values in the Log File 
' INPUT PARAMETERS  : varExecDrive,StrDB,StrUId,Strpwd,StrNewDB 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : Pass or Fail message 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
Public Function Fn_InitializeLogFile() 
   clscommon.LogWrite "********************************************" 
   clscommon.LogWrite "Calc Automation Started" 
End Function 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : fnCalculate 
' DESCRIPTION       : Function to perform Arithmetic Calculations 
' INPUT PARAMETERS  : operator,Expected_Val 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : Pass or Fail message 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =    
Function fnCalculate(operator,Expected_Val) 
   clscommon.LogWrite "Executing the Function 'fnCalculate' " 

   Window("Calculator").Activate 
    
   If Trim(clscommon.Number1) <> ""  Then
      Window("Calculator").WinButton(clscommon.Number1).Click 
   If Trim(clscommon.Number2) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number2).Click 
   If Trim(clscommon.Number3) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number3).Click 

   Window("Calculator").WinButton(operator).Click 
   If Trim(clscommon.Number4) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number4).Click 
   If Trim(clscommon.Number5) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number5).Click 
   If Trim(clscommon.Number6) <> ""  Then 
      Window("Calculator").WinButton(clscommon.Number6).Click 

   Window("Calculator").WinButton("=").Click 
   Dim ActualVal : ActualVal  = 
      Window("Calculator").WinEdit("Edit").GetROProperty("text") 
   clscommon.LogWrite "The Actual Value after the Math Operation is "& ActualVal 
  
   If Trim(ActualVal) = Trim(Expected_Val) Then 
      clscommon.WriteResult "Pass",  clscommon.Test_Case_ID , 
         clscommon.tcScenario , " Expected Value matches with Actual Value :: " 
            & ActualVal 
    
   Else 
      clscommon.WriteResult "Fail",  clscommon.Test_Case_ID , 
         clscommon.tcScenario , " Expected Value - " & Expected_Val & " Does NOT matches 
            with Actual Value :: " & ActualVal 
   End If 
    
   Window("Calculator").WinButton("C").Click 
    
   If Err.Number <> 0  Then 
      clscommon.LogWrite  "Execution Error : The Error Number is ::  " & 
         Err.Number & " The Error Description is " & Err.Description 
      Err.Clear 
   End If 
    
   clscommon.LogWrite "Exiting the Function 'fnCalculate' " 
End Function  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = 
' FUNCTION NAME     : fn_Kill_Process 
' DESCRIPTION       : Function to Kill the process by name 
' INPUT PARAMETERS  : Application name to be killed 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : NIL 
' DATE CREATED      : 30-Dec-2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = =  
Function fn_Kill_Process(process) 
   Dim strComputer ,  strProcessToKill , objWMIService , colProcessstrComputer = "." 
   strProcessToKill = process 
    
   Set objWMIService = GetObject("winmgmts:" _& 
      "{impersonationLevel=impersonate}!\\" _& strComputer & "\root\cimv2") 
    
   Set colProcess = objWMIService.ExecQuery _("Select * from Win32_Process 
      Where Name = '" & strProcessToKill & "'") 
    
   count = 0 
   For Each objProcess in colProcess 
      objProcess.Terminate() 
      count = count + 1 
   Next 
End Function  

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  
' FUNCTION NAME     : fn_End_test 
' DESCRIPTION       : Function to finish the test Execution process 
' INPUT PARAMETERS  : Application name to be killed 
' OUTPUT PARAMETERS : NIL 
' RETURN VALUE      : NIL 
' DATE CREATED      : 20/Dec/2013 
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Function fn_End_test() 
   clscommon.LogWrite "Status Message - Executing the Function 'fn_End_test' " 
    
   Window("Calculator").Close 
   On Error Resume Next 
    
   clscommon.StopTime = Time() 
   clscommon.ElapsedTime = DateDiff("n",clscommon.StartTime,clscommon.StopTime) 
   Dim Totaltests  
   Totaltests = clscommon.gintPassCount+ clscommon.gintFailCount
   clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
   clscommon.LogWrite "##  The Execution Start Time  ::  " & clscommon.StartTime 
   clscommon.LogWrite "##  The Execution End Time   ::  " & clscommon.StopTime 
   clscommon.LogWrite "##  The Time Elapsed ::   " & clscommon.ElapsedTime & " Minutes " 
   clscommon.LogWrite "##  The OS ::  " & Environment.Value("OS") 
   clscommon.LogWrite "##  The Total No of Test Cases Executed  ::  " & Totaltests 
   clscommon.LogWrite "##  The No. of Test Case Passed ::  " & clscommon.gintPassCount 
   clscommon.LogWrite "##  The No. of Test Case Failed ::  " & clscommon.gintFailCount 
   clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
   SystemUtil.CloseDescendentProcesses 
End Function  
'  ===============   End of Calculator. Qfl   ============================= '

ไฟล์ไลบรารีอื่นซึ่งเป็น 'common_utils.qfl' ที่มีฟังก์ชันซึ่งช่วยให้เราสามารถเขียนผลลัพธ์ไปยังไฟล์ข้อความได้

Set clscommon = New OS_clsUtils  

'Creating a class file to handle global variables. 
Class OS_clsUtils 
   Dim StrLogFile 
   Dim StrDateFormatted 
   Dim Result 
    
   Dim  Number1, Number2 , Number3  
   Dim  Number4, Number5 , Number6  
   Dim Test_Case_ID , tcScenario 
   Dim StartTime, StopTime, ElapsedTime 
   
   Dim gintPassCount , gintFailCount , gintWarningCount ,  gintdoneCount,  
      gintinfoCount 
    
   Function Fn_FileCreate(strFileName) 
      Dim objFSO:  Set objFSO = CreateObject("Scripting.FileSystemObject") 
      On Error Resume Next 
      
      Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strFileName) 
      objTextFile.Close 
       
      Set objTextFile = Nothing 
      Set objFSO = Nothing 
   End Function 
    
   Function LogWrite(sMsg) 
      Const ForAppending = 8 
       
      Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") 
      
      Dim objTextFile : Set objTextFile = objFSO.OpenTextFile 
         (clscommon.StrLogFile, ForAppending, True) 
       
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & sMsg 
      objTextFile.Close 
       
      Set objTextFile = Nothing 
      Set objFSO = Nothing 
   End Function 
    
   Function WriteResult(strStatus,functionName,functionDescription,Result) 
      Const ForAppending = 8 
      Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject") 
      Dim objTextFile : Set objTextFile = objFSO.OpenTextFile 
         (clscommon.StrLogFile, ForAppending, True) 
       
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & "  
            * * * * * * Test Case Exec Details  * * * * * " 
      
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test staus :: " & strStatus 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Tese ID ::  " & functionName 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test Description :: " 
            & functionDescription 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & " Test Result Details :: " & Result 
      objTextFile.WriteLine day(date()) & "/" &  MonthName(Month(date()),true) 
         &  "/" & YEAR(date()) & " " & time & ": " & "  
            * * * * * * * * * * * * * * * * * * * * * * * *  * * * * * * * * * * * " 
      objTextFile.Close 
       
      Set objTextFile = Nothing  
      Set objFSO = Nothing 
       
      Select Case Lcase(strStatus) 
         Case "pass" 
            gintPassCount = gintPassCount + 1 
          
         Case "fail" 
            gintFailCount = gintFailCount+1 
      End Select 
   End Function 
End Class 
'   =====================   End of common_Utils.qfl =====================

ที่เก็บวัตถุ

Object Repository มีอ็อบเจ็กต์ทั้งหมดที่ผู้ใช้จะดำเนินการ ภาพด้านล่างแสดงรายการวัตถุทั้งหมดที่เพิ่มลงในที่เก็บด้วยชื่อ calc.tsr

ตารางข้อมูล

DataTable มีคีย์เวิร์ดซึ่งขับเคลื่อนการทดสอบและทดสอบข้อมูลด้วยซึ่ง QTP จะดำเนินการกับอ็อบเจ็กต์

บันทึกการดำเนินการ

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

8/Jan/2014 5:09:16 PM: ************************************************* 
8/Jan/2014 5:09:16 PM: Calc Automation Started 
8/Jan/2014 5:09:16 PM: === Inside the Test Set  ::   Add  === 
8/Jan/2014 5:09:16 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 949.  
8/Jan/2014 5:09:17 PM:  * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:17 PM: Test staus :: Pass 
8/Jan/2014 5:09:17 PM: Tese ID ::  TC_001 
8/Jan/2014 5:09:17 PM: Test Description :: Add 
8/Jan/2014 5:09:17 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 949.  
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * 
* * * * * * * * * 
  
8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: === Inside the Test Set  ::   Subtract  === 
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 415.  
8/Jan/2014 5:09:17 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:17 PM: Test staus :: Pass 
8/Jan/2014 5:09:17 PM: Tese ID ::  TC_002 
8/Jan/2014 5:09:17 PM: Test Description :: Subtract 
8/Jan/2014 5:09:17 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 415.  
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * *

8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:17 PM: === Inside the Test Set  ::   Multiply  === 
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:18 PM: The Actual Value after the Math Operation is 278883.  
8/Jan/2014 5:09:18 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:18 PM: Test staus :: Pass 
8/Jan/2014 5:09:18 PM: Tese ID ::  TC_003 
8/Jan/2014 5:09:18 PM: Test Description :: Multiply 
8/Jan/2014 5:09:18 PM:  Test Result Details ::  Expected Value matches with 
   Actual Value :: 278883.  
8/Jan/2014 5:09:18 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * *   

8/Jan/2014 5:09:18 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:18 PM: === Inside the Test Set  ::   Divide  === 
8/Jan/2014 5:09:18 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:19 PM: The Actual Value after the Math Operation is 3.  
8/Jan/2014 5:09:19 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:19 PM: Test staus :: Pass 
8/Jan/2014 5:09:19 PM: Tese ID ::  TC_004 
8/Jan/2014 5:09:19 PM: Test Description :: Divide 
8/Jan/2014 5:09:19 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 3.  
8/Jan/2014 5:09:19 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * 
* * * * * * * * 
  
8/Jan/2014 5:09:19 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:19 PM: === Inside the Test Set  ::   Sqrt  === 
8/Jan/2014 5:09:19 PM: Executing the Function 'fnCalculate'  
8/Jan/2014 5:09:20 PM: The Actual Value after the Math Operation is 10.  
8/Jan/2014 5:09:20 PM: * * * * * * Test Case Exec Details  * * * * *  
8/Jan/2014 5:09:20 PM: Test staus :: Pass 
8/Jan/2014 5:09:20 PM: Tese ID ::  TC_005 
8/Jan/2014 5:09:20 PM: Test Description :: Sqrt 
8/Jan/2014 5:09:20 PM: Test Result Details ::  Expected Value matches with Actual 
   Value :: 10.  
8/Jan/2014 5:09:20 PM: * * * * * * * * * * * * * * * * * * * * * * * *  * * * * 
* * * * * * * 

8/Jan/2014 5:09:20 PM: Exiting the Function 'fnCalculate'  
8/Jan/2014 5:09:20 PM: Status Message - Executing the Function 'fn_Finish_test'  
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # # 
# # # # # #  
8/Jan/2014 5:09:20 PM: ##  The Execution Start Time  ::  5:09:14 PM 
8/Jan/2014 5:09:20 PM: ##  The Execution End Time   ::  5:09:20 PM 
8/Jan/2014 5:09:20 PM: ##  The Time Elapsed ::   0 Minutes  
8/Jan/2014 5:09:20 PM: ##  The OS ::  Microsoft Windows Vista Server 
8/Jan/2014 5:09:20 PM: ##  The Total No of Test Cases Executed  ::  25 
8/Jan/2014 5:09:20 PM: ##  The No. of Test Case Passed ::  25 
8/Jan/2014 5:09:20 PM: ##  The No. of Test Case Failed ::   
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # # 
# # # # # #