เมื่อ Test Engineer อย่างฉัน… อยากยกระดับการใช้ Robot Framework

Waristha
KBTG Life
Published in
4 min readDec 2, 2021

ก่อนอื่นเรามาพูดถึงชื่อบทความกันก่อนค่ะ อันดับแรกเลย…

Test Engineer คืออะไร

Test Engineer แปลตรงตัวได้ว่า “วิศวกรทดสอบ” ค่ะ แต่ถ้าเจาะลึกลงไปอีกนิด Test Engineer ที่เรากำลังพูดถึงคือคนที่ทดสอบระบบหรือแอปพลิเคชันด้วยเทคนิคต่าง ๆ ไม่ว่าจะเป็นแบบ Manual หรือ Test Automation เพื่อยืนยันว่าระบบที่ทำการทดสอบเนี่ยสามารถใช้งานได้จริง ทำงานได้ถูกต้อง และมีคุณภาพ

แล้วอะไรคือ Robot Framework

Robot Framework ก็คือ Framework นึงที่นิยมนำมาใช้ในการทำ Test Automation สำหรับใครที่อยากเข้าใจรายละเอียดและการทำงานเบื้องต้นของ Robot Framework เราขอนำเสนอบทความ Robot Framework ฉบับความรู้เริ่มต้น 0% ให้ทุกคนได้ทำความรู้จักกันก่อนค่ะ

รู้จักกับ Robot Framework กันไปคร่าว ๆ แล้ว ไม่ยากเกินความสามารถใช่มั้ยคะ ตอนนี้มาเข้าสู่เนื้อหาของเรากันเลยค่ะ 3 2 1 Go!!

Command Line ใช้ได้ ใช้ดี ใช้แบบมีระดับ

เมื่อเราทำการเขียน Test Automate Script ด้วย Robot Framework เสร็จแล้ว เราจะรู้ได้ยังไงว่าสคริปที่เราเขียนทำงานได้ถูกต้อง นำไปใช้ได้จริง… ใช่ค่ะ ต้องทำการ Execute นั่นเอง

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

เรามาเริ่มกันที่การ Execute แบบบ้าน ๆ ที่สุดกันก่อน รันแบบง่าย ๆ ที่ระบุชื่อไฟล์ไปตรง ๆ ตามนี้เลยค่ะ

robot example.robot

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

robot D:\project\folder\example.robot

เพียงเท่านี้เราก็จะสามารถรันไฟล์ .robot ของเราได้เรียบร้อย

แต่!! แค่การ Execute แบบที่ว่ามาก็ยังไม่รู้สึกสวย ๆ สักเท่าไหร่ เพราะฉะนั้น… เราจะยกระดับการ Execute ขึ้นไปอีกค่ะ

Execute ไฟล์เดียวได้ แต่ถ้ามีหลายไฟล์ จะรันพร้อมกันได้มั้ยนะ

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

คำสั่งก่อนหน้านี้คือการ Execute Test Cases ทั้งหมดในไฟล์เดียวไปเลย แต่ถ้ามีหลาย Test Cases แล้วยังมีหลายไฟล์อีกล่ะ เราต้องรันทีละไฟล์เองเหรอ?

Example of multiple files robot
Example of Multiple Files Robot

ลองดูจากรูปด้านบน จะเห็นว่ามีไฟล์ .robot อยู่ตั้ง 5 ไฟล์ แล้วยังแยกเก็บเป็น 2 โฟลเดอร์อีกต่างหาก งานจริงบอกเลยว่าจะมีเยอะกว่านี้อีกค่ะ แค่คิดว่าต้องมาไล่รันด้วยตัวเองทีละไฟล์จนครบก็เหนื่อยแล้ว งั้นเราขอช่วยผ่อนแรงทุกคนด้วยคำสั่งนี้ค่ะ

robot folder

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

robot D:\Robot\test\1_searchrobot D:\Robot\test\2_loginrobot D:\Robot\test

3 คำสั่งด้านบนจะเป็นการรันไฟล์ .robot ทั้งหมดที่อยู่ในโฟลเดอร์ name 1_search (3 ไฟล์), โฟลเดอร์ name 2_login (2 ไฟล์) และโฟลเดอร์ name test (5 ไฟล์) ตามลำดับ

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

robot example1.robot example2.robot

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

robot search_ex_1.robot search_ex_3.robotrobot D:\Robot\test\1_search\search_ex_1.robot D:\Robot\test\2_login\login_ex_1.robot

นอกจากการรันแบบระบุไฟล์หรือระบุโฟลเดอร์ คราวนี้ลองดูอีกแบบกันค่ะ

ไม่อยากรันทุก Test Cases อยากจะรันแค่บาง Test Cases

เรามีการรันแบบกลุ่มใหญ่ทั้งที่เป็นไฟล์กับโฟลเดอร์กันไปแล้ว คราวนี้เราไม่อยากรันทั้งกลุ่มแล้ว อยากรันแค่ส่วนเล็ก ๆ ข้างในแทน จะทำยังไงดีนะ

Example of Multiple Test Cases

ไม่ยากเลยค่ะ เริ่มจากเลือกชื่อ Test Cases ที่ต้องการรันและใช้รูปแบบคำสั่งที่ยกระดับขึ้นอีกนิด ด้วยการใส่ -t แล้วตามด้วยชื่อ Test Cases เข้าไปตามนี้เลย

robot -t Testcase_name_1 -t Testcase_name_2 example.robotrobot -t Testcase_name_1 -t Testcase_name_2 folder

ถ้าอ้างอิงจากรูปด้านบนจะได้ตัวอย่างตามนี้ค่ะ

robot -t SEARCH_001 D:\Robot\test\1_search\search_ex_1.robotrobot -t SEARCH_001 -t SEARCH_003 D:\Robot\test\1_search

จาก 2 คำสั่งด้านบน คำสั่งแรกจะรันเฉพาะ Test Cases ชื่อ SEARCH_001 ส่วนคำสั่งที่ 2 จะรัน Test Cases ชื่อ SEARCH_001 และ SEARCH_003 เพียงเท่านี้เราก็สามารถเจาะจงชื่อ Test Cases ที่เราอยากรันได้แล้ว

เพิ่ม Tags เข้าไปให้การรันมีสีสัน

Tags คืออะไร? เอามาใช้ในการ Execute ด้วยเหรอ? จริง ๆ แล้วถ้าย้อนกลับไปดูด้านบน ก็จะเห็นว่า Tags อยู่กับเรามาตั้งแต่ตอนนั้นแล้วค่ะ

Surprise!!

Tags อยู่ตรงที่ลูกศรชี้อยู่นั่นเองค่ะ โดยเราจะเป็นคนกำหนด Tags ให้แต่ละ Test Cases เอง เหมือนกับที่เราตั้งชื่อให้ Test Cases ค่ะ ในเมื่อเราเป็นคนกำหนดชื่อ Test Case กับ Tag ขึ้นเองได้ แล้ว Tags จะต่างกับ Test Cases ยังไง?

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

พอจะเห็นภาพกันแล้ว ทีนี้เรามายกระดับด้วยการใช้ Tags และรูปแบบคำสั่งกันค่ะ เริ่มด้วยการใส่ -i แล้วตามด้วย Tags ที่ต้องการเข้าไปในคำสั่งตามนี้เลย

robot -i tag example.robot

ถ้าอ้างอิงจากภาพด้านบนก็จะได้ตัวอย่างตามนี้

robot -i food D:\Robot\test\1_search \search_ex_1.robotrobot -i food -i image D:\Robot\test\1_search

มีคำสั่งเลือกเฉพาะ Test Cases ที่มี Tags ที่ต้องการแล้ว… ยัง ๆๆ ยังไม่หมดค่ะ คราวนี้เรามายกระดับด้วยวิธีรันทั้งหมด ยกเว้น Test Cases ที่มี Tags ที่ระบุไว้ ด้วยการใส่ -e แล้วตามด้วย Tags ที่ไม่อยากรันแบบนี้ค่ะ

robot -e tag example.robot

จะได้เป็นคำสั่งประมาณนี้

robot -e animal D:\Robot\test\1_search

เท่านี้เราก็สามารถนำการใช้ Tags มาช่วยในการ Execute ได้แล้วค่ะ

ใช้ Command Line มาช่วยดูผล

อ่านมาจนถึงตรงนี้ เรามีวิธีช่วยในการ Execute เพิ่มขึ้นมาหลายวิธี แน่นอนค่ะว่า Execute ออกมาแล้วก็ต้องดูผลสิเนอะ เจ้า Robot Framework จะทำการ Generate ไฟล์มาให้ 2 ไฟล์ที่เราสามารถเข้าไปดูผลลัพธ์ได้ คือ report.html และ log.html

Result Files

ดูจากภาพด้านบน จะเห็นว่าไฟล์ที่ได้มาถูกเก็บไว้ไม่เป็นที่เป็นทางเอาเสียเลย เพราะงั้นเราจะเริ่มกันด้วยการใส่ -d แล้วตามด้วยชื่อโฟลเดอร์ที่ต้องการเก็บผลการ Execute ตามนี้ค่ะ

robot -d folder_result example.robot

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

robot -d result D:\Robot\test\1_search\search_ex_1.robot
-d Result

ตอนนี้ไฟล์ที่ได้จากการ Execute จะถูกเก็บไว้ในโฟลเดอร์ที่เราใส่ไว้ในคำสั่งเรียบร้อยสวยงาม

แต่… เอ๊ะ?

ลอง รันอีกที… อีกที… และอีกที

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

robot -T example.robot
-T Result

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

เพราะฉะนั้นเราจะทำการใช้คำสั่งเพื่อตั้งชื่อ Log ใหม่ตามที่เราต้องการ โดยใส่ -l แล้วตามด้วยชื่อ Log ที่ตั้งขึ้น กับอีกคำสั่งสำหรับตั้งชื่อ Report ใหม่ตามที่ต้องการ โดยใส่ -r แล้วตามด้วยชื่อ Report ที่ตั้งขึ้นมา ดังนี้

robot -l log_name example.robotrobot -r report_name example.robot

เท่านี้เราก็สามารถตั้งชื่อไฟล์ log.html กับ report.html ขึ้นมาใหม่สำหรับการรันในครั้งนั้นได้แล้ว ยกตัวอย่างก็จะเป็นประมาณนี้

robot -l newlog -r newreport D:\Robot\test\1_search\ search_ex_1.robot
Rename log.html and report.html

เปลี่ยนชื่อไฟล์ที่ได้จากการ Execute เรียบร้อย ทีนี้ลองแกล้ง ๆ เปิดดูไฟล์สักนิดซิ

Log and Report Title

เอ๊ะ! Title ของ Log กับ Report ยังใช้ชื่อตามไฟล์หรือโฟลเดอร์ที่รันอยู่เลยนี่ อย่างภาพด้านบนก็มาจากการรันไฟล์ search_ex_1.robot พอเปิด report.html ได้ Title เป็น Search Ex 1 Report หรือพอเปิด log.html ได้ Title เป็น Search Ex 1 Log ถึงจะตั้งชื่อไฟล์ต่างกันแล้ว แต่ถ้าเปิดพร้อมกันหลาย ๆ ไฟล์ก็ตาลายหมดน่ะสิว่าอันไหนเป็นอันไหน

ดังนั้นเรามาทำการยกระดับคำสั่ง ด้วยการใส่ — reporttitle ตามด้วย Title ใหม่ เพื่อเปลี่ยน Title ของ Report และใส่ — logtitle ตามด้วย Title ใหม่ เพื่อเปลี่ยน Title ของ Log ค่ะ

robot --reporttitle new_title example.robotrobot --logtitle new_title example.robot

ทีนี้ Report กับ Log ของเราก็จะมี Title ใหม่ตามที่เราเขียนไว้เลยค่ะ คำสั่งกับผลลัพธ์จะมีหน้าตาประมาณนี้

robot --reporttitle This_is_new_report --logtitle “This is new log” D:\Robot\test\1_search\ search_ex_1.robot
Rename Log and Report Title

Note: จากคำสั่งด้านบน สังเกตมั้ยคะว่าตอนใช้คำสั่งเปลี่ยน Log Title เราได้ใช้ฟันหนู (“”) ตรง Title ใหม่ของ Log เป็น “This is new log” จริง ๆ แล้วเราสามารถใช้ฟันหนูได้ทั้งชื่อ Test Cases ชื่อไฟล์ ชื่อโฟลเดอร์ Path และชื่ออื่น ๆ ที่มีเว้นวรรคค่ะ ยกตัวอย่างเช่น

robot -d “result folder” -r “new report file” “D:\Robot\test\new folder\example.robot”

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

สำหรับชาวเทคคนไหนที่สนใจเรื่องราวดีๆแบบนี้ หรืออยากเรียนรู้เกี่ยวกับ Product ใหม่ๆ ของ KBTG สามารถติดตามรายละเอียดกันได้ที่เว็บไซต์ www.kbtg.tech

--

--