Robot Framework ฉบับความรู้เริ่มต้น 0%

Kanittee Rodpuek
KBTG Life
Published in
6 min readAug 17, 2021

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

หนึ่งใน Framework ที่เป็นที่นิยมในการนำมาทำ Test Automation คงหนีไม่พ้นเจ้าสิ่งที่เรียกว่า Robot Framework นั่นเองครับ (ไอต้าว Framework น่ารัก…) ในบทความนี้เราจะเรียนรู้การติดตั้งบน Windows รวมถึงพื้นฐานและการนำไปใช้งาน เพื่อให้สถานะความรู้ 0% นั้นไม่เป็นเลขศูนย์อีกต่อไป

Robot Framework

ต้องบอกก่อนว่า Robot Framework ไม่ใช่เครื่องมือหรือ Tools นะครับ เพราะจริงๆ แล้ว Robot Framework เป็นตัวรวม Libraries, Function, Test Data และ Module ต่างๆ ที่จำเป็นในการทำ Automation ให้เราได้ใช้ครับ และมี Syntax ที่เข้าใจง่าย ตรงตัว ไม่ต้องเขียนอะไรให้มากความ ดังเช่นตัวอย่างนี้

Open Browser  www.google.com  chrome

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

INSTALL PYTHON เพื่อเธอต้าว Robot Framework

อย่างแรกเราต้องดาวน์โหลดตัวติดตั้ง Python โดยคลิกที่ Download Python 3.9.6 (เป็นเวอร์ชัน ณ ตอนเขียนบทความนี้)

Download Python

จะได้ไฟล์นี้ออกมาครับ

Python Installation File

ไฟล์ติดตั้งจะปรากฏขึ้น ติ๊กถูกที่ช่อง Add Python 3.9 to Path

Python First Install

จากนั้นรอให้ Python ทำการติดตั้ง

Python Install Progress

พอติดตั้งเสร็จแล้ว ให้กดปุ่ม Close ได้เลย

Python Install Finish

หลังจากนั้นเปิดตัว cmd ขึ้นมาครับผม โดยเข้าไปที่ Search ใน Windows ของเรา

Search Command Prompt

ทำการคลิกเข้าไปที่ Command Prompt จะได้หน้าต่างแบบนี้

Command Prompt

จากนั้นให้พิมพ์คำสั่ง

pip install --upgrade robotframework-seleniumlibrary
Input command pip install

กด Enter และรอการติดตั้ง จนขึ้น Successfully ถือเป็นอันเสร็จครับ

After installing robotframework

BASIC เห็นพื้นฐานแล้วใจหวั่นไหว

หลังจากผ่านการติดตั้งมาแล้ว ถึงเวลาของพื้นฐานแล้วครับ ใน Robot Framework ไฟล์ Robot 1 จะไม่มีอะไรมาก ถ้าในการเขียนโปรแกรมเขียนสคริปภาษาอื่นๆ อาจมี Class อาจมี Main หรืออาจมี Function ซึ่งเจ้า Robot Framework เนี่ยตัวไฟล์ Robot จะมีสิ่งที่เรียกว่า Data Sections

Data Sections

ซึ่ง Data Sections จะแบ่งออกเป็น 4 ส่วน คือ Setting, Variables, Keywords, Test Cases

*** Settings ***

ตามชื่อเลยครับ เป็นส่วนของการตั้งค่าให้กับไฟล์ Robot ของเรา ไม่ว่าจะเป็นการ Import Library, Resource หรือแม้กระทั่ง Setup คำสั่งต่างๆ ก่อนเริ่มทดสอบ ดังภาพ

*** Setting ***
Library SeleniumLibrary
Library BuiltIn
Resource common_keyword.resource
Test Setup Open URL and Login
Test Teardown Close All Browser

*** Variables ***

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

  • ${name} เป็นการประกาศตัวแปรที่เป็นรูปแบบของ String
  • @{name} เป็นการประกาศตัวแปรที่เป็นรูปแบบของ List
  • &{name} เป็นการประกาศตัวแปรที่เป็นรูปแบบของ Dictionary
*** Variables ***
${string} Stringเองจ้า
@{list} listหมายเลข1 listหมายเลข2
&{dict} key1=value key2=value

*** Keywords ***

จะเป็นส่วนของการสร้าง Keywords เรียกง่ายๆ ก็คือ Method หรือ Function ให้เราได้ใช้งานนั่นแหละครับ ซึ่งค่อนข้างมีประโยชน์มากในกรณีที่คำสั่งหรือ Keyword จาก Library ที่เรานำมาไม่มีหรือไม่ได้ใจวัยรุ่นเลย เราสามารถลงมือสร้างขึ้นมาแล้วนำไปใช้งานได้เองเลยครับ

*** Keywords ***
keyword 1 -----> ชื่อ Keyword
[Arguments] ${arg1} ${arg2} -----> param ที่ต้องรับเข้าเวลาใช้ Keyword
///To do something...
keyword 2
///To do something... -----> ไม่มี param รับเข้าก็สามารถทำได้น้า

ตัวอย่าง

*** Keywords ***
Compare String With Arguments
[Arguments] ${string1} ${string2}
Should Be Equal As Strings ${string1} ${string2}
Compare String
Should Be Equal As Strings ${STRING1} ${STRING2}

*** Test Cases ***

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

*** Test Cases ***
testcasename
///To do something...

ตัวอย่าง

*** Test Cases ***
testcase1: เทียบ String
Compare String With Arguments ดีจ้า ดีจ้า
Compare String

เจ้าตัว Robot Framework จะใช้การเคาะเว้นวรรค 2 ครั้งขึ้นไปเพื่อแยกส่วนระหว่าง Keyword กับ Arguments ที่ใช้ครับ

*** Variables ***
${string}---Stringเองจ้า (-)มองเป็นการเคาะเว้นวรรค
*** Test Cases ***
testcase1: เทียบ String
Compare String With Arguments--ดีจ้า---ดีจ้า (-)มองเป็นการเคาะเว้นวรรค

หลังจากรู้เรื่อง Data Sections ซึ่งเท่ากับไฟล์ .robot 1 ไฟล์ และการอ่านไฟล์ report/log ที่แสนจะง่ายแล้ว เราคงไม่พ้นเรื่องของการ Execute ไฟล์ Robot ครับ

การ Run/Execute

Command ที่ใช้ในการ Execute ใส่ลงใน Terminal หรือ Command Line โดยปกติเลยคือ…

robot <ชื่อไฟล์ robot ของเรา>

ตัวอย่าง

robot example.robot

แต่ในกรณีที่เราไม่ได้สร้างไฟล์ใน Root เดียวกันกับที่เราอยู่ เราสามารถ Execute โดยใช้ Path อ้างอิงได้ครับ

ตัวอย่าง

robot path/to/my_tests/
robot c:\user\cool_boy\desktops\example.robot

Report/log

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

report.html

ในไฟล์ report.html จะมี 3 หัวข้อหลักๆ คือ

  • Summary Information
    - Status — สถานะของการเทสว่าผ่านทั้งหมดหรือเกิด Fail กี่ Test
    - Start Time — วันที่และเวลาที่เริ่มเทส
    - End Time — วันที่และเวลาที่เทสเสร็จสิ้น
    - Elapsed Time — เวลาทั้งหมดที่ใช้
    - Log File — ชื่อของไฟล์ Log
  • Test Statistics ตารางแสดงผลของจำนวนเทสทั้งหมดว่า Pass หรือ Fail จำนวนกี่ Test Cases
  • Test Details ตารางของชื่อ Test Cases ที่เราเทส บอก Status พร้อมทั้งเวลาในแต่ละ Test Cases

ในกรณีที่เทสผ่านทั้งหมด จะมีพื้นหลังสีเขียวที่บ่งบอกว่าผ่านหมดน้าา

Report.html Pass

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

Report.html Fail

log.html

ในไฟล์ log.html ผลจะเหมือนกับไฟล์ report.html แต่!!! จะบอกรายละเอียดที่ละเอียดกว่าไฟล์ report.html โดยจะมีการแตกแขนงในแต่ละ Test Case ว่า Fail ในส่วนของ Keyword ไหน ไล่ลงลึกในแต่ละ Keyword ที่ใช้ได้ พร้อมทั้งบอกเวลาที่ใช้ใน Keyword นั้นๆ แต่ log.html ไม่มี Summary Information กับพื้นหลังนะครับ :(

log.html

สำหรับหรับใครที่อยากศึกษา Robot Framework เพิ่มเติม สามารถกดเข้าไปดูที่ Robot Framework User Guide ได้เลยครับ

TEST พอเริ่มทำ ใจก็เริ่มรัก

my_robot.robot

พอเรียนรู้พื้นฐานข้างต้นมาแล้ว ทีนี้จะลองสร้างจริงดูนะครับ ผมจะลองทำให้ Robot Framework ทำ Automated เปิดเว็บไซต์ของ KBTG ขึ้นมา โดย Data Sections ของผมจะมีดังนี้ครับ “ในที่นี้ผมใช้ Visual Studio Code นะครับ”

ในส่วนของ Settings ผมจะทำการเรียกใช้ SeleniumLibrary เพื่อจะทำ Automated กับบราวเซอร์นะครับ (Keyword มาตรฐานส่วนมากที่ใช้กับ UI บราวเซอร์จะอยู่ใน Libs ส่วนใหญ่ครับ)

Settings
สำหรับการใช้ SeleniumLibrary จะต้องติดตั้งเพิ่มเติมโดยใช้คำสั่ง
pip install --upgrade robotframework-seleniumlibrary

ในส่วนของ Variables ผมจะให้มีตัวแปร ${URL} เก็บลิงก์ URL ที่จะใช้เปิดเว็บไซต์และ ${BROWSER} เก็บไว้ว่าจะใช้บราวเซอร์ไหนครับ

Variables

ในส่วนของ Keywords ผมจะสร้าง Keyword ชื่อว่า Open the Best Website ที่รับ Arguments ชื่อ ${url} และ ${browser} ไปใช้กับ Open Browser เพื่อเปิดบราวเซอร์ไปที่ URL นั้นตอนเรียกใช้

Keywords

ในส่วนของ Test Cases ผมจะสร้าง Test Case ชื่อ TS_01 : เปิดหน้าเว็บ KBTG ใน Test Case นั้นจะเรียกใช้ Keyword ที่ได้สร้างไว้ ส่ง Arguments เป็น ${URL} และ ${BROWSER} ที่ได้กำหนดไว้ใน Variables เพื่อใช้งาน Keyword และเรียกใช้ Maximize Browser Window เพื่อให้บราวเซอร์ที่เปิดขึ้นมาเป็นหน้าต่าง Maximize ครับ

Test Cases

จากนั้นทำการเปิด Terminal ใน Visual Studio Code ขึ้นมาเพื่อทำการรัน โดยสามารถกดคีย์ลัด Ctrl+Shift+` หรือกดที่ Terminal ด้านบนของโปรแกรม แล้วเลือก New Terminal ตามรูปครับ

การเปิด Terminal ใน Visual Studio Code

เราก็จะได้หน้าต่าง Terminal ขึ้นมาด่านล่างโปรแกรมตามนี้

หน้าต่าง Terminal

เอาล่ะ ทีนี้มาลองใส่ Command เพื่อเริ่มไฟล์ Robot กันครับ โดยชื่อไฟล์ที่ผมตั้งไว้คือ my_robot.robot ดังนั้น Command ที่ใช้ Execute คือ robot my_robot.robot แล้วกด Enter โลด

Command Robot

ถ้า Robot Framework ทำงานปกติตามที่เราได้ทำไว้ ก็จะขึ้นหน้าเว็บสวยๆ ตาม URL ที่เราให้เปิดแบบนี้ครับ

เปิดหน้าเว็บโดย Robot

ข้อสังเกต ตัวบราวเซอร์จะบอกด้วยว่าบราวเซอร์นี้ถูกควบคุมโดย Automated Test Software สามารถสังเกตได้ที่มุมซ้ายบน ใต้ URL Bar ครับ

Controlled by Automated Test Software

จากนั้นลองกลับมาดูผลลัพธ์ที่ Terminal ของเรากันครับ ถ้าเทสเรา Pass โดยไม่มีปัญหาอะไร ก็จะขึ้น Pass สีเขียวแบบนี้ครับ และตัว Terminal จะบอก Path ที่อยู่ของไฟล์ Output, Log และ Report ให้เราได้เข้าไปอ่านเป็นข้อมูลปรับปรุงในอนาคตกันด้วยครับ

Terminal Result

Normal Standard Libraries

ในส่วนนี้ผมจะมาแนะนำ Libraries ที่ใช้เป็นมาตรฐานใน Robot Framework ให้ได้นำไปศึกษา ซึ่งค่อนข้างเป็นประโยชน์มากครับ

  • BuiltIn เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับตรวจสอบและเปรียบเทียบค่าต่างๆ
  • Collections เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับตรวจสอบและเปรียบเทียบค่าในลักษณะพจนานุกรมหรือ Dictionary ซึ่งบางทีเราอาจจะต้องรับส่งข้อมูลในรูปแบบของ JSON จึงต้องใช้ Dictionary เข้ามาช่วย
  • DateTime เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับรองรับ แปลงค่า และคำนวนวันที่และเวลา
  • Dialogs เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับรับข้อมูลจากผู้ใช้กรณีที่มีกล่องโต้ตอบผู้ใช้
  • OperatingSystem เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับทำงานต่างๆ ที่เกี่ยวข้องกับระบบปฏิบัติการที่เราใช้ทดสอบอยู่ เช่น สั่งลบ Directory สร้างไฟล์ ตรวจสอบไฟล์ เป็นต้น
  • Process เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับการทำงานที่เกี่ยวกับ Process ทั้งหมด
  • Screenshot ตามชื่อเลยครับ เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับเก็บภาพหน้าจอ (ต้องใช้ทดสอบกับจอจริงนะ)
  • String เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับจัดการข้อมูลประเภท String
  • Telnet เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับเชื่อมต่อกับเซิร์ฟเวอร์ Telnet และรันคำสั่งบนการเชื่อมต่อที่เปิดอยู่
  • XML เป็น Library มาตรฐานที่มี Keyword ให้ใช้สำหรับตรวจสอบเนื้อหาของไฟล์ XML

ทั้งหมดนี้เป็น Library เบื้องต้นที่เราสามารถ Import มาใช้หลังจากที่เราติดตั้ง Robot Framework ส่วน Library อื่นๆ นอกเหนือจากนี้จะต้องมีการ Install เพิ่มเติมก่อนใช้ครับ

รู้พื้นฐานแล้วสามารถเอาไปต่อยอดอะไรได้อีกแล้วมีข้อเสียไหม เริ่มกลัวแล้วนะ

ทำ Automated Test UI

เราสามารถนำไปทำ Automated Test บนหน้าเว็บในบราวเซอร์ได้ โดยจะเป็นการใช้ Library ใน Robot Framework เล่นกับ Element ของ User Interface ซึ่งจะมีเจ้า SeleniumLibrary ที่เป็น Library หลักในการใช้ มีลูกเล่นหลายอย่างเลยครับ หรือถ้าเป็นแพลตฟอร์ม Mobile ก็จะมี AppiumLibrary ที่เข้ามาช่วยในการทำ Automated

ทำ Automated Test API

เราสามารถนำไปทำ Automated Test ยิง API เพื่อทดสอบ Scenario ต่างๆ ได้ เล่นกับ JSON เป็นส่วนใหญ่ ทำให้ต้องใช้ Collection Library มาช่วยในการจัดการก้อน JSON และยังต้องใช้ BuiltIn มาคอยเช็ค String อีกด้วยครับ

ทำ Automated Test DB

มี Library ที่รองรับหลายตัวครับ แต่อันนี้จะต้องอาศัยความชำนาญใน Database และ Robot Framework พอสมควรในการจัดการ โดยเฉพาะอย่างยิ่งถ้าเป็นข้อมูลในบริษัทที่ต้องให้ความสำคัญ ต้องระวังกันเป็นพิเศษ

เห็นได้ว่าไม่ว่าจะเป็นด่านไหนๆ เจ้า Robot Framework ก็มี Library Function ที่พร้อมใช้ในหลายๆ ด้าน ทำให้เป็นที่นิยมอันดับต้นๆ เลย

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

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

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

--

--