การทดสอบแบบอัตโนมัติ ด้วย 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 »

Raspberry Pi 3 [Automated Relay Controller]

ตอนที่แล้วเราได้ทดลองทำการสั่งงานรีเลย์แบบ Manual ผ่านหน้าเว็บไปแล้ว ครั้งนี้เราลองสั่งให้รีเลย์ทำงานโดยผ่านการประมวลผลค่าที่ได้จากเซนเซอร์ เพื่อให้ก้าวไปอีกขั้นของ IoT   โดยเราจะใช้เซนเซอร์ที่เคยได้นำเสนอไปก่อนหน้านี้แล้ว นั่นคือ DHT22 Temperature & Humidity Sensor (ต่อที่ PIN: 32 [GPIO 12]) และรีเลย์ 4 Channel ซึ่งสามารถนำไปต่อกับอุปกรณ์เครื่องใช้ไฟฟ้าได้ ต่อ PIN เดิมจากตอนที่แล้ว   ความต้องการเบื้องต้นคือ 1. เมื่ออุณหภูมิต่ำกว่าหรือเท่ากับ 28 องศา ให้เปิดพัดลมระบายอากาศ 1 (ที่ต่ออยู่กับ Relay 1) 2. เมื่ออุณหภูมิสูงกว่า 28 องศา ให้ปิดพัดลมระบายอากาศ 1 และเปิดพัดลมระบายอากาศ 2 (ต่ออยู่กับ Relay 2) 3. เมื่อความชื้นต่ำกว่า 50% ให้เปิดเครื่องสร้างความชื้น (Humidifier) (ต่ออยู่กับ Relay 3)  โดยไม่ต้องสนใจอุณหภูมิ เริ่มเขียนโค้ดเพื่อทำการประมวลผลกันเลย (โค้ดบางส่วน ได้อธิบายไว้ในตัวอย่างบทความก่อนหน้านี้แล้ว)   ทำการติดตั้ง Library Adafruit จากบทความก่อนหน้านี้ Raspberry Pi 3 [Temperature & Humidity Sensor] จากนั้นทำการเขียน python ด้วยคำสั่ง sudo nano automated_relay.py ด้วยโค้ดต่อไปนี้   import os import time import datetime while True :  temperature = os.popen(‘sudo /home/pi/sources/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12 | cut -c 6-7’).read()  humidity = os.popen(‘sudo /home/pi/sources/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12 | cut -c 22-23’).read()  now = datetime.datetime.now()  print ”  print ”  print now.strftime(“%d-%m-%Y %H:%M:%S”)  print ‘Temperature: ‘ + temperature + ‘Humidity: ‘ + humidity  if int(temperature) <= 28:   os.popen(‘sudo python /var/www/html/relay_off.py 2’).read()   os.popen(‘sudo python /var/www/html/relay_on.py 1’).read()   print ‘Temperature below 28C ==> Relay 1: ON. Relay 2: OFF’  else:   os.popen(‘sudo python /var/www/html/relay_off.py 1’).read()   os.popen(‘sudo python /var/www/html/relay_on.py 2’).read()   print ‘Temperature above 28C ==> Relay 1: OFF. Relay 2: ON’  if int(humidity) < 50:   os.popen(‘sudo python /var/www/html/relay_on.py 3’).read()   print ‘Humidity below 50% ==> Relay 3: ON’  else:   os.popen(‘sudo python /var/www/html/relay_off.py 3’).read()   print ‘Humidity above 50% ==> Relay 3: OFF’  time.sleep(5)     จากนั้นเซฟและทดลองรันด้วยคำสั่ง

Read More »

Raspberry Pi 3 [Relay Control via Web Interface]

ตอนนี้เราจะมาสร้างหน้าเว็บสำหรับดูสถานะและควบคุมรีเลย์อย่างง่ายๆ   ก่อนอื่น ผมได้ทำการเปลี่ยน PIN ของ GPIO บน Raspberry Pi 3 เพื่อให้เป็นระเบียบมากขึ้นจากครั้งที่แล้ว โดยผมได้เลือกใช้ PIN: 12 (GPIO 18), PIN: 16 (GPIO 23), PIN: 18 (GPIO 24) และ PIN: 22 (GPIO 25) สำหรับสั่งงานรีเลย์ตัวที่ 1-4 ตามลำดับ ดังรูปด้านล่างนี้   หลังจากการทดสอบการทำงานของรีเลย์ทุกตัว (ในบทความที่แล้ว) จากนั้นเราจึงเริ่มขึ้นตอนการติดตั้ง Apache Web Server, PHP และเขียนหน้าเว็บ ดังขั้นตอนต่อไปนี้ครับ   ติดตั้ง Apache Web Server และ PHP ดังนี้ ใช้คำสั่ง sudo apt-get install apache2 เพื่อติดต้ัง apache web server (หากขึ้นว่า Package apache2 is not available ให้ใช้คำสั่ง sudo nano /etc/apt/sources.list  จากนั้น uncomment บันทัดสุดท้าย เซฟไฟล์และใช้คำสั่ง sudo apt-get update เมื่อเรียบร้อยแล้วให้ลองใช้คำสั่งด้านบนอีกครั้ง) จากนั้นทดสอบเปิดเว็บด้วย http://localhost/ หรือ http://{RASPBERRY_IP}/   จากนั้นติดตั้ง PHP5 Module สำหรับ Apache sudo apt-get install php libapache2-mod-php   เมื่อเรียบร้อยแล้ว ให้ใช้คำสั่งต่อไปนี้ cd /var/www/html เนื่องจากไฟล์ index.html จะมีเจ้าของเป็น root ทำให้ไม่สามารถแก้ไขหรือลบได้ ให้ใช้คำสั่งเปลี่ยน owner ดังนี้ sudo chown pi: index.html จากนั้นทำการลบไฟล์ index.html เพราะเราไม่ใช้ ใช้คำสั่ง sudo nano index.php เพื่อสร้างไฟล์และเขียนโค้ดต่อไปนี้ เพื่อทดสอบการทำงานของ php <?php phpinfo(); ?> และลองเปิดหน้าเว็บดู จะพบกับหน้านี้ ถือว่าติดตั้งเสร็จเรียบร้อยแล้ว   จากนั้นเพิ่ม user ของ apache นั่นคือ www-data ให้สามารถใช้คำสั่ง sudo ได้ ด้วยวิธีการต่อไปนี้ sudo nano /etc/sudoers จากนั้นเพิ่มบันทัดต่อไปนี้ลงไปท้ายสุด www-data ALL=(ALL) NOPASSWD: ALL และเพื่อความสะดวก ทุกท่านสามารถดาวน์โหลดไฟล์ที่ผมได้ทำเอาไว้แล้ว ==> relay_control_via_web.zip (สามารถแก้ไขรูปแบบการแสดงผลให้สวยงามขึ้นได้ในภายหลังได้ด้วยตัวท่านเอง) และทำการ copy file ไปไว้ที่ /var/www/html   โดยหลักการทำงานคือ เมื่อมีการเปิดหน้าเว็บขึ้นมา จะเรียกไฟล์ index.html และจะทำการ post ajax firstcheck.php เพื่อทำการตรวจสอบสถานะของรีเลย์ (ซึ่งภายใน firstcheck.php จะเป็นการเรียกคำสั่ง python firstcheck.py และส่งค่ากลับเป็น json) เมื่อมีการสั่งงานรีเลย์ จะทำการ post ajax changestate.php โดยที่ไปเรียกคำสั่ง relay_off หรือ relay_on (มี parameter คือชุดของรีเลย์ ที่ได้ทำการเซฟค่า BCM GPIO ID เอาไว้ในไฟล์ .py ดังกล่าวแล้ว) เพื่อเป็นการสั่งให้รีเลย์ดังกล่าว ทำงาน (เพื่อความปลอดภัย ในกรณีที่ท่านต้องการแยกไฟล์ .py ออกจาก web root directory

Read More »