การทดสอบแบบอัตโนมัติ ด้วย Robot framework กับ Selenium Library (ตอนที่ 2 การใช้งาน)

มาลุยกันต่อในตอนที่ 2 กันค่ะ อันดับแรกต้องทำการติดตั้ง Selenium WebDriver กันก่อน สามารถไปดาวน์โหลดได้ที่ https://www.seleniumhq.org/download/ เมื่อติดตั้งเรียบร้อยแล้วเรามาทำความรู้จักโครงสร้างหลักใน Robot Framework กันค่ะ ในส่วนของ Setting จะเป็นการกำหนด Library ในที่นี้จะใช้ Selenium2Lirary ในส่วนของ Keyword จะใช้ในกรณีที่เราต้องการที่จะสร้าง Keyword ของเราขึ้นมาใช้งานเอง ซึ่งจะใช้ได้เฉพาะในไฟล์นี้เท่านั้น ในส่วนของ Variables คือการกำหนดตัวแปร สำหรับการใช้งาน ในส่วนของ Test Cases คือส่วนของการเขียน Test Cases ซึ่งสิ่งสำคัญในส่วนนี้คือ ชื่อ Test Cases ถ้าไม่มีการตั้งชื่อให้กับ Test Cases ก็จะไม่สามารถ Run คำสั่งทั้งหมดในไฟล์นี้ได้ ***โครงสร้างที่สำคัญในการ Run Test Case คือ Setting และ Test Cases ซึ่งในการสร้างไฟล์สำหรับ Test ด้วย Robot ทุกครั้ง จะต้องมี 2 ส่วนนี้ มิฉะนั้น ก็จะไม่สามารถทำงานได้ ส่วน Keywords กับ Variables อาจจะมีหรือไม่มีก็ได้ จาก Test case ตัวอย่างต้องการจะค้นหา Google ด้วยคำว่า hello world โดยเปิดผ่าน Google Chrome เมื่อเขียนคำสั่งเรียบร้อยแล้ว ก็ Save ไฟล์เป็น Text ธรรมดา ตัวอย่างจะบันทึกชื่อเป็น test.robot ดังรูป จากนั้นเรามา Run การทดสอบแบบอัตโนมัติกันค่ะ เปิด Command Prompt ขึ้นมาค่ะ ผลลัพธ์จะแสดงอัตโนมัติ ดังรูปค่ะ สามารถจะดู Log และ Report จากการทดสอบได้ดังรูป เห็นมั๊ยค่ะว่าการใช้งานไม่ยุ่งยากเลย แถมมี log มี report ให้ดูด้วยนะเออ ครั้งนี้เป็นการใช้งานเบื้องต้น เดี๋ยวตอนหน้าจะนำเสนอการใช้งานคำสั่งในรูปแบบอื่น ๆ กันบ้างนะคะ อย่าลืมติดตามกันหล่ะ 

Read More »

การทดสอบแบบอัตโนมัติ ด้วย Robot framework กับ Selenium Library (ตอนที่ 1 การติดตั้ง)

วันนี้จะมาเล่าเรื่องการทดสอบแบบ Automate ด้วย Robot framework ค่ะ Robot framework ก็คือการทดสอบการทำงานของระบบที่สร้างขึ้น ให้ง่ายและรวดเร็วด้วยการทำ Automate Testing ซึ่งจุดขายของมันคือ Robot Framework สามารถ Test data , executes test cases ออกมาเป็น report และ logs ได้ Robot Framework implement มาจาก ภาษา Python ดังนั้นเราก็ต้อง install Python กันก่อน โดย Dowloadที่ https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi  ติดตั้งง่าย ๆ มี Next คลิก Next  เมื่อติดตั้งเสร็จแล้วมาลองใช้คำสั่งใน Command line ดังรูป ถ้าได้ผลลัพธ์ดังรูปแสดงว่าเราติดตั้ง Python เรียบร้อยแล้วค่ะ ต่อไปก็ทำการ Download get-pip.py โดย Download ได้ที่ https://bootstrap.pypa.io/get-pip.py จากนั้นเปิด Command line ใช้คำสั่งเพื่อติดตั้ง pip เรียกจากที่ไฟล์เก็บอยู่ ดังรูป Set Environment Variables ไปที่ This PC คลิกขวา à Properties à Advanced system settings à Environment Variables คลิก New ดังรูป จากนั้นคลิกปุ่ม OK ที่ Path ทำการ Double click ขึ้นมา จากนั้น New เพิ่มดังรูป จากนั้นเปิด Command line พิมพ์คำสั่งเพื่อติดตั้งส่วน library ที่จำเป็นในการทดสอบ คำสั่งดังนี้ เมื่อเราลงเสร็จ ลองใช้ คำสั่ง pip freeze จะเห็นว่า มันมี library ตามที่เราติดตั้ง ดังรูป Tools หรือ IDE ที่จะใช้ในการเขียน Robot Framework จะเลือกเอาตามที่ถนัดเลยค่ะ บทความครั้งหน้าเราจะมาลองใช้งานกันค่ะ

Read More »

วิธีใช้ Google Sheets เป็นฐานข้อมูล เพื่อการเฝ้าระวังระบบ โดยการใช้งานผ่าน Google API Client Library for Python

ต่อจาก วิธีการใช้ Google Sheets เป็นฐานข้อมูล การใช้งาน Google Drive API ด้วย Google Client Library for Python วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python คราวนี้ ใครมีข้อมูลที่เกิดขึ้นในเซิร์ฟเวอร์ภายในองค์กร แล้วต้องการส่งไปเขียนเก็บไว้ใน Google Sheets แบบต่อท้าย (Append) เช่น ในตัวอย่างนี้ วัดระยะเวลาการโอนย้ายข้อมูล เปรียบเทียบระหว่าง rsync เพื่อสำรองข้อมูลไปไว้ในเครื่องเซิร์ฟเวอร์สำรองที่ต่างวิทยาเขต กับ การนำไปเก็บไว้ใน Google Drive ตามวิธีการที่กล่าวไว้ใน วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python ผมได้เขียนโค๊ดเอาไว้ที่ https://github.com/nagarindkx/google.git สามารถโคลนไปใช้งานได้ (ช่วย Reference กันด้วยนะครับ) ขั้นตอนการใช้งานมีดังนี้ ใช้คำสั่ง git clone https://github.com/nagarindkx/google.git cd google ติดตั้ง python, pip, google-api-python-client ตามที่เขียนไว้ใน การใช้งาน Google Drive API ด้วย Google Client Library for Python และสร้างโปรเจคใน Google Developer Console เปิดใช้งาน Google Sheets API, สร้าง Credentials > OAuth Client ID แล้ว download JSON มาไว้ในชื่อว่า client_secret.json รูปแบบคำสั่งคือ $ python append2gsheet.py –help usage: append2gsheet.py [-h] [–auth_host_name AUTH_HOST_NAME] [–noauth_local_webserver] [–auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]]] [–logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] –data DATA –sheetid SHEETID [–range RANGE] [–value-input-option VALUEINPUTOPTION] optional arguments: -h, –help show this help message and exit –auth_host_name AUTH_HOST_NAME Hostname when running a local web server. –noauth_local_webserver Do not run a local web server. –auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]] Port web server should listen on. –logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL} Set the logging level of detail. –data DATA CSV format –sheetid SHEETID Google Sheets ID –range RANGE Simply Sheet Name like ‘Sheet1!A1’ –value-input-option VALUEINPUTOPTION Optional: [RAW,USER_ENTERED] สิ่งที่ต้องมี คือ Google Sheets ที่สร้างไว้แล้ว ให้สังเกตที่ URL ตัวข้อความที่อยู่หลัง https://docs.google.com/spreadsheets/d/ จะเป็น “Sheet

Read More »

วิธีทำ Password-less SSH บน Ubuntu

ในการทำงานกับ Server Cluster ขนาดใหญ่ ซึ่งประกอบด้วย Ubuntu Server จำนวนมาก หากต้องแก้ไขระบบทั้งหมด โดยการ Secure Shell หรือ SSH เข้าไปทีละเครื่อง “โดยต้องเป็น root ด้วย” จะเป็นงานที่ใช้เวลาอย่างมาก เค้าจึงมีระบบที่เรียกว่า Password-less SSH โดยการแลกเปลี่ยน Public Key แทนที่จะต้อง Login ด้วย Username/Password และเนื่องจาก Ubuntu โดย Default ไม่มีการสร้าง root password (มี root แต่ไม่มี password –> ก็เลย Login ไม่ได้ด้วย Password) ซึ่งก็ดีในเรื่องของ Security แต่ทำให้การทำงานยุ่งยากนิดหน่อย บทความนี้จะกล่าวถึงวิธีการทำ Password-less SSH รวมไปถึง การที่ไม่ต้องถาม Known Host ในครั้งแรกที่เข้าใช้งานด้วย โดยระบบจะประกอบด้วย server01 เป็นเครื่องที่จะสั่งการเครื่อง server02 … serverNN ในสิทธิ์ root และในระบบนี้ ทุกเครื่องมี user ชื่อ mama ซึ่งมีสิทธิ์ sudo ที่เครื่อง server01 ใช้คำสั่งต่อไปนี้ เพื่อสร้าง Public/Private rsa key pair ssh-keygen จะได้ผลดังนี้ ซึ่งจะได้ไฟล์มา 2 file อยู่ใน directory: ~/.ssh – id_rsa – id_rsa.pub เพื่อไม่ให้การ SSH ไปยังเครื่องใหม่ๆ มีการถาม Known Host แบบนี้ แล้วก็ต้องคอยตอบ yes ทุกเครื่องไป ก็ให้สร้างไฟล์ .ssh/config ว่า (วิธีนี้จะมีผลเฉพาะ mama เท่านั้น) หรือสร้างใน /etc/ssh/ssh_config เพื่อให้มีผลทั้งระบบ Host * StrictHostKeyChecking no UserKnownHostsFile=/dev/null จากนั้น ให้เอาไฟล์ Public Key คือ  .ssh/id_rsa.pub  ไปยังเครื่องปลายทาง ในที่นี้คือ server02 (ใช้วิธี scp ไปยัง mama@server02) scp .ssh/id_rsa.pub mama@server02:~ ในครั้งแรกนี้ ยังต้องใส่ Password ของ mama บนเครื่อง server02 อยู่ จากนั้น ไปดำเนินการต่อใน server02 ที่เครื่อง server02 ใน home directory ของ mama บน server02 จะมีไฟล์ id_rsa.pub อยู่ ลองตรวจสอบโดยใช้คำสั่ง ls -l /home/mama/id_rsa.pub เปลี่ยนเป็น root ด้วยคำสั่ง sudo su แล้ว เข้าไปใน root home directory ด้วยคำสั่ง cd สร้าง directory .ssh และ สร้างไฟล์ .ssh/authorized_keys โดยนำข้อมูลในไฟล์ /home/mama/id_rsa.pub มาต่อท้าย mkdir .ssh cat /home/mama/id_rsa.pub >> .ssh/authorized_keys เพื่อความปลอดภัย ตั้งค่า Permission ให้ถูกต้อง chmod 700 .ssh chmod 600 .ssh/authorized_keys   จากนั้น ลองทดสอบ ssh จาก

Read More »

วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python

Google Drive File Stream จริงๆแล้วก็คือการเปิดให้ PC ทั้ง Windows และ Mac สามารถ Map Drive จาก Google Drive มาเป็น G:\ หรืออะไรทำนองนั้น แต่ปัจจุบัน (September 2017) บน Windows Server ซึ่งใช้ Secure Boot จะไม่สามารถติดตั้ง Client ได้ และ Ubuntu Server ก็ยังไม่มีตัวติดตั้ง ดังนั้น ในภาพของผู้ดูแลระบบ ไม่สามารถใช้ความสามารถนี้ได้ … โดยตรง ส่วนใน Windows Desktop ทั่วไปก็จะติดตั้งได้ แม้ว่า จากคำโฆษณา จะบอกว่าผู้ใช้สามารถใช้งานได้ แม้พื้นที่บน Local Drive ไม่เยอะ แต่เอาเข้าจริง ด้วยความสามารถที่จะใช้งาน Offline ได้บ้าง ทำให้ Client ต้อง Cache ไฟล์ที่ใช้งานด้วยเช่นกัน และหาก upload ไฟล์ขนาดใหญ่ จาก Local Drive ไปเก็บใน G:\ ข้างต้น ก็จะทำให้ต้องเสียพื้นที่ในขนาดเท่าๆกันไปด้วย เช่น ใน Local Drive มีไฟล์ที่จะ Backup ขึ้นไป ขนาด 1 GB บน C:\ เมื่อทำการ Copy ไปยัง G:\ ก็จะเสียพื้นที่อีก 1 GB ด้วยเช่นกัน ทางออกก็คือ ใช้ความสามารถของ Google Client Library ทำการ Upload ไฟล์ขึ้นไปโดยตรง เท่าที่ทดลองมา จะไม่ได้ Cache บน Local Drive ทำให้สามารถ Upload ไฟล์ขนาดใหญ่ได้ โดยไม่เสียพื้นที่เพิ่มแบบ Client ข้างต้น วิธีการใช้งาน Python เพื่อ Upload File ขึ้น Google Drive File Stream ผมเขียน Code เอาไว้ ชื่อ upload2gdrive.py ไว้บน GitHub (https://github.com/nagarindkx/google) สามารถดึงมาใช้งานได้โดยใช้คำสั่ง clone https://github.com/nagarindkx/google.git cd google สร้าง Project, Credential ตาม “ขั้นที่ 1” ในบทความ การใช้งาน Google Drive API ด้วย Google Client Library for Python ซึ่งจะได้ไฟล์ Client Secret File มา ให้แก้ไขชื่อเป็น “client_secret.json” แล้ว นำไปไว้ใน directory “google” ตามข้อ 1 วิธีใช้คำสั่ง ดูวิธีใช้ python upload2gdrive.py –help Upload ไฟล์ จาก /backup/bigfile.tar,gz python upload2gdrive.py –file /backup/bigfile.tar.gz บน Windows ก็สามารถใช้งานได้ ด้วยคำสั่ง python upload2gdrive.py –file D:\backup\bigfile.tar.gz หากต้องการระบุตำแหน่ง Folder บน Google Drive ที่ต้องการเอาไฟล์ไปไว้ ให้ระบุ Folder ID python upload2gdrive.py –file /backup/bigfile.tar.gz —-gdrive-id xxxxxxxbdXVu7icyyyyyy หากต้องการระบุ Chunk Size (ปริมาณข้อมูลที่จะแบ่ง Upload เช่น

Read More »