หลายคนอาจจะเคยเจอปัญหาว่า Test script มีเยอะมาก จนใช้เวลาในการ Execute นาน ทำให้ได้ผลทดสอบช้า ไม่ทันเวลาในช่วงที่กำลังเร่งรีบ
การที่จะลดเวลาในการ Execute ลงได้นั้น วิธีแรกที่นึกถึงคือ เราจะต้องรัน Test Script แบบ Parallel ค่ะ นั่นคือ Excute หลายๆ Test case พร้อมๆกันนั่นเองค่ะ
โดยการทำในรูปแบบนี้ นอกจากจะลดเวลาในการทดสอบลงแล้ว ยังสามารถคงจำนวน Test case ที่ต้องการจะรันไว้ได้ เพื่อให้การทำทดสอบนั้นครอบคลุมค่ะ
แล้วจะทำยังไงถ้าอยากจะ Execute script แบบ Parallel ล่ะ ?
ส่วนใหญ่แล้ว ทีมจะใช้งาน Tool ที่เรียกว่า CI (Continuous Integrations) ในการทำ Parallel Test ค่ะ แต่หากไม่มี CI ไว้ใช้งานเลย วันนี้พี่พลอยมี Solution นึงมานำเสนอค่า
นั่นก็คือใช้ Pabot
Pabot เป็น Tools สำหรับ Execute Robot framework แบบ Parallel ค่ะ น้องเกิดมาเพื่อการนี้โดยเฉพาะ
** แต่ข้อควรระวังคือ Test Case ของเราจะต้องเป็น อิสระต่อกัน นั่นคือ Test Case แต่ละ Test case สามารถรันได้ โดยที่ไม่ได้ส่งผลกับ Test case ข้ออื่นๆ ค่ะ
การติดตั้ง
ติดตั้งง่ายมากค่ะ แค่ใช้ command
pip install robotframework-pabot
มาดู Test case ที่เตรียมไว้ประกอบการ execute กันก่อนนะ
ใน Project ที่พี่เตรียมมามีทั้งหมด 2 Test suite คือ Cart กับ Profile มี Test Case ทั้งหมด 5 cases ค่ะ
โดยที่ในแต่ละ Test suite นั้นมี Test case ดังนี้
- Cart มี Test case ทั้งหมด 2 ข้อ
- Customer able to add product to cart
-
Customer able to remove product in cart
- Profile มี Test case ทั้งหมด 3 ข้อ
-
Customer able to see profile
-
Customer able to change profile
-
Customer able to upload profile image
-
หากเรารันด้วย Robot ปกติ ก็จะใช้เวลาทั้งหมด 56.68 วินาที ตามภาพ
ลอง รันด้วย Pabot กัน
Pabot มีรูปแบบการรัน อยู่ไม่กี่รูปแบบค่ะ
-
Pabot Suites
รูปแบบนี้ จะกระจาย process parallel ตาม Test suite ค่ะ
เช่น มี 2 test suite ก็กระจายการรันออกเป็น 2 process ค่ะ
จากตัวอย่าง Project ที่พี่เตรียมมา ก็จะกระจายการรันออกเป็นดังนี้
Process 1 : Cart
Process 2 : Profile
Command ที่ใช้ Execute : pabot eCommerce
รูปแบบตอน Execute จะเป็นแบบภาพข้างล่างค่ะ ซึ่งหากรันในรูปแบบนี้ ใช้เวลาทั้งหมด 47.65 วินาที
2. Pabot –testlevelsplit Suites
รูปแบบนี้ จะกระจาย process parallel ตาม Test Case ในทุก suite ค่ะ
เช่น มี 2 test suite ทั้งหมด 5 test case ก็กระจายการรันออกเป็น 5 process ค่ะ
จากตัวอย่าง Project ที่พี่เตรียมมา ก็จะกระจายการรันออกเป็นดังนี้
Process 1 : [Cart] Customer able to add product to cart
Process 2 : [Cart] Customer able to remove product in cart
Process 3 : [Profile] Customer able to see profile
Process 4 : [Profile] Customer able to change profile
Process 5 : [Profile] Customer able to upload profile image
Command ที่ใช้ Execute : pabot –testlevelsplit eCommerce
รูปแบบตอน Execute จะเป็นแบบภาพข้างล่างค่ะ ซึ่งหากรันในรูปแบบนี้ ใช้เวลาทั้งหมด 27.01 วินาที
จะเห็นว่า พอ Execute แบบ parallel ใช้เวลาลดลงอย่างเห็นได้ชัด วิธีง่ายๆ แบบนี้ ลองเอาไปใช้กันดูน้าาาา
Reference : https://pabot.org/
Robot Framework Selenium
Web Automated Test ด้วย
Robot Framework และ Selenium 6