[TH] Test Level Parallel Executor with Pabot

Mild Atta
Arcadia Software Development
2 min readSep 13, 2019
A parallel executor for Robot Framework tests. Pabot can split one execution into multiple and save your test execution time.

สำหรับ Pabot นั้นเป็น library ที่ใช้สำหรับการทำ parallel ของตัว Robot Framework เพื่อรันหลายๆ test case พร้อมกัน โดยมีจุดประสงค์ที่จะช่วยลดระยะเวลาในการทดสอบ

โดยปกติแล้วการรัน test case นั้นจะมีการ execute แบบ sequential หากมี test case เป็นจำนวนมาก ก็ย่อมหมายความว่าเวลาที่จะใช้ในการทดสอบ test case ทั้งหมดก็มากขึ้นตามไปด้วย ซึ่งการนำเอา pabot parallel executor มาใช้ในการรันการทดสอบ จะช่วยร่นระยะเวลาให้น้อยลงเมื่อเทียบกับการรันแบบ sequential ปกติ

สำหรับค่า default ของ pabot เมื่อเราต้องการรันการทดสอบแบบ parallel นั้น จะเป็นการรันที่ระดับ Test Suite แล้วถ้าหากต้องการรันการทดสอบที่ระดับ test case ก็เพียงแค่ใช้คำสั่ง

--testlevelsplit

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

โดยจะใช้ 2 test suite โดยแต่ละ test suite จะมีจำนวน 3 และ 2 test case ตามลำดับดังภาพ

Test Suite & Test Case Datails

เริ่มกันการรันการทดสอบแบบ sequential ตามปกติ โดยใช้คำสั่ง

robot --variable LANG:en -d nonParallel TestSearch
ระยะเวลาที่ใช้ในการรันการทดสอบแบบ sequential

จากการรันการทดสอบแบบ sequential จะใช้เวลาอยู่ที่ประมาณ 1 นาที 45 วินาที

ถ้าหากเป็นการรันการทดสอบแบบ parallel ที่ระดับ Test Suite จะใช้คำสั่ง

pabot --variable LANG:en -d parallelTestSuite TestSearch
ระยะเวลาที่ใช้ในการรันการทดสอบแบบ parallel ที่ระดับ test suite

จะเห็นได้ว่าระยะเวลาที่ใช้ในการรันการทดสอบทดสอบนั้นลดลงเหลือเพียง 1 นาที 3 วินาทีเพียงเท่านั้น

สุดท้ายถ้าหากเป็นการรันการทดสอบแบบ parallel ที่ระดับ Test Level โดยใช้คำสั่ง

pabot --testlevelsplit --variable LANG:en -d parallelTestLevel TestSearch
ระยะเวลาที่ใช้ในการรันการทดสอบแบบ parallel ที่ระดับ test level

ซึ่งระยะเวลาที่ใช้ในการรันการทดสอบอยู่ที่ 1 นาที 12 วินาที

จากการลองรันการทดสอบทั้ง 3 แบบนั้น สรุปเวลาที่ใช้ได้ ดังนี้

  • Sequential: 1 นาที 45 วินาที
  • Parallel ที่ระดับ Test Suite: 1 นาที 3 วินาที
  • Parallel ที่ระดับ Test Level: 1 นาที 12 วินาที

จะเห็นได้ว่าการรันแบบ parallel ทั้ง 2 แบบนั้นใช้ระยะเวลาที่น้อยกว่าการรันแบบ sequential พอสมควร ดังนั้นในกรณีที่มีจำนวน test case เยอะ การรันแบบ parallel ก็จะช่วยลดเวลาในการรันการทดสอบทั้งหมดได้

--

--