มาทำ Automate Test กันเถอะ

Ploy Chonnikan
3 min readOct 25, 2017

--

ปัจจุบันการทดสอบซอฟต์แวร์ถือเป็นเรื่องที่สำคัญมากสำหรับการส่งมอบซอฟต์แวร์ และเชื่อได้ว่าหลายๆ บริษัทต้องมีตำแหน่งงานที่คอยทำหน้าที่นี้ ซึ่งส่วนใหญ่ยังใช้วิธีการแบบ Manual Test อยู่ ต้องทำซ้ำไปซ้ำมาจนเบื่อเลยทีเดียว บล็อกนี้พลอยเลยอยากแชร์ประสบการณ์เปลี่ยนจากการทดสอบแบบ Manual ให้เป็น Automate ด้วย Robot Framework กันค่ะ

แม้ทำ Automate ก็ต้องออกแบบ Test Case ให้เป็นก่อนนะ

ไม่ว่าจะ Manual หรือ Automate เพื่อทดสอบซอฟต์แวร์ เราต้องคิด วิเคราะห์ และออกแบบก่อนว่าเราจะต้องทดสอบอะไรบ้าง ซึ่งก็มีอยู่หลายวิธีแล้วแต่เราจะทำ

  • วิธี Boundary Value Analysis : เป็นวิธีการทดสอบโดยกำหนดขอบเขตของข้อมูลขึ้นมา เพื่อจะได้ค่า input data ที่ครอบคลุม (วิธีทำ ศึกษาต่อได้จาก : http://www2.it.kmutnb.ac.th/teacher/FileDL/DrMahasak184255913502.ppt )
  • วิธี Equivalence partitioning : เป็นการกำหนดค่าตัวแทน ของกลุ่มข้อมูลขึ้นมา 1 ค่า แล้วนำค่านั้นมาใช้ในการทดสอบ ซึ่งสามารถประยุกต์ได้ว่าถ้าใช้ค่าตัวแทนนี้มาทำการทดสอบได้ผลลัพธ์อย่างไร ค่าอื่นๆ ที่อยู่ภายใต้กลุ่มนี้ ก็จะมีผลลัพธ์แบบเดียวกัน (วิธีทำ ศึกษาต่อได้จาก : http://www2.it.kmutnb.ac.th/teacher/FileDL/DrMahasak184255913502.ppt )
  • วิธี State Diagram : เป็นการเข้าใจถึงภาพรวมของระบบ โดยการใช้ Input ที่ใส่เข้าไปในระบบเป็นตัวที่ทําให้ state ของโปรแกรมเปลี่ยนไปในแต่ละขั้นตอน (วิธีทำ ศึกษาต่อได้จาก : http://www.howtoautomate.in.th/how-to-write-test-cases/)

พลอยลองยกตัวอย่าง มาให้ดู 3 แบบ ซึ่งในบล็อกนี้พลอยใช้วิธี State Diagram เพราะ พลอยคิดว่า มันเหมาะกับโจทย์ที่พลอยได้รับมาจากพี่ๆ เนื่องจากมันเป็นการมองภาพรวม แล้ววิเคราะห์ว่าถ้าใส่ input เข้าไปจะเกิดอะไรขึ้นกับระบบบ้าง

มาทำ Test Case กัน

โดยวิธีการคิด Testcase senario ของพลอยคือ

  • พลอยจะเล่นเว็บที่พลอยจะทดสอบก่อน ว่าหน้าเว็บเขาทำงานยังไง กดตรงไหน แล้วขึ้นอะไรบ้าง เพราะพลอยมองว่า test case คือพฤติกรรมที่เราทำบางอย่างกับเว็บ
  • จากนั้นพลอยก็ร่าง Flow จากพฤติกรรมของพลอยที่ใช้งานหน้าเว็บลงกระดาษ(หรือร่างไว้ในไหนก็ได้) ว่าถ้าพลอยจะซื้อสินค้า 1 ชิ้นจะต้องมีขั้นตอนการซื้อยังไงเกิดขึ้นบ้าง

เป็นอันเสร็จ จากนี้ไปเราก็ได้เวลามาทำ Automate ด้วย Robot Framework กันแล้ว..

รู้จักกับพระเอกของเรา “Robot Framework “

เมื่อเราได้ Test Case มาแล้ว เราก็มาเลือก Automate Tools กัน ซึ่งในที่นี้พลอยเลือก Robot Framework เพราะ

  • รูปแบบการเขียนง่าย เพราะเป็นเหมือนภาษาพูดมากกว่า [รับรองคนที่ไม่เคยเขียน code ก็สามารถเขียนได้ และ อ่านเข้าใจ]
  • ติดตั้งง่าย
  • มี library ให้เลือกใช้เยอะ

ส่วนวิธีการติดตั้ง ถ้าเป็น Windows สามารถดูได้จาก Blog ของพี่ปุ๋ย เลยค่ะ ถ้าเป็น MacOS ดูได้ที่ Blogนี้ค่ะ

โครงสร้างของ Robot Framework

แบ่งออกเป็น 4 ส่วนหลักๆ ค่ะ ได้แก่

*** Settings *** : ไว้ประกาศว่าใช้ Library อะไรบ้าง*** Variables *** : ใช้ประกาศข้อมูลที่มีการเรียกใช้งานบ่อย ๆ และการใช้งานส่วนอื่นสามารถเรียกใช้ข้อมูลตัวนี้ได้*** Testcases *** : ระบุว่ามี Testcase อะไรบ้างที่จะทำงาน*** Keywords *** : กำหนดชุดคำสั่งที่ต้องการใช้

และ คำสั่ง ต่างๆที่ใช้ค่อนข้างคล้ายกับภาษาปกติที่เราพูดกัน อย่างเช่น

  • จะสั่งให้เปิดหน้าเว็บก็ใช้คำสั่ง Open Browser
  • จะใส่ข้อความก็ Input Text ตามด้วย id และ ข้อความที่เราจะใส่

แต่ Robot Framework ก็จะ sensitive เรื่องวรรค และการเว้นบรรทัดมาก ต้องระวังดีดี

ทดลองเขียนโค้ด Robot Framework กัน

มาดูตัวอย่างง่ายๆ กันก่อน : โจทย์คือ ทดสอบการค้นหาของ Google โดยให้ค้นหาคำว่า “ Siam Chamnankit Family ” ผลที่คาดว่าจะได้รับ คือ แสดงผลการค้นหาที่ประกอบด้วยคำว่า Siam Chamnankit Family.

ประกาศว่าจะใช้ Library ที่ชื่อ Selenium2Library

กำหนดข้อมูลที่จะใช้บ่อยๆ ให้เป็นตัวแปร โดยเวลาเรียกใช้เราก็เอาแค่ตัวแปรไปใช้ได้เลย

ต้องเขียนชื่อ Test Cases ว่าจะทดสอบอะไร ในที่นี้ ชื่อ Test Cases คือ Search Siam Chamnankit Family from google และบอกว่าใน Test Cases นี้จะทำอะไรบ้าง ซึ่งจากด้านบนจะสังเกตเห็นว่าคำสั่งที่ใช้ไม่ได้เป็นเป็นภาษาเทคนิคเลย แต่มันเป็นภาษาทั่วไปที่ใครเข้ามาอ่านก็รู้ว่าตรงนี้บอกให้ทำอะไร

กำหนด Keywords โดยเราจะแบ่งออกเป็นชุด ว่าตรงไหน ต้องทำอะไรบ้าง

  • Open google page คือบอกว่าจะเปิดหน้า Google ส่วนบรรทัดด้านล่างก็จะเป็นชุดคำสั่งของ Robot Framework ว่าจะสั่งให้ทำอะไร แล้วเราก็เรียกตัวแปรที่ตั้งไว้มาใช้
  • Search Siam Chamnankit Family คือบอกว่าค้นหาคำว่า Siam Chamnankit Family บรรทัดล่างก็ใช้ชุดคำสั่งของ Robot Framework

สร้างไฟล์ testgoogle.robot ขึ้นมาแล้ว copy code ชุดด้านบนไปใส่ จากนั้นก็ทำการรันโดยใช้คำสั่ง pybot testgoogle.robot หรือ robot testgoogle.robot เพียงแค่นี้ก็เสร็จแล้วค่ะ

ภาพตัวอย่างผลรัน

มาแปลง Test case ที่ออกแบบเป็น Robot Framework กันค่ะ

ทีนี้เรามาลองแปลง Test Cases ที่เราคิดไว้ให้เป็น Automate กัน โดยที่ Test cases ที่พลอยเลือกมาเขียนคือ “ ซื้อสินค้าแบบไม่เป็นสมาชิก ” เริ่มที่ภาพไฟล์ด้านล่างนี้

ภาพไฟล์ buyproduct_nonmember.robot

จะเห็นว่าในไฟล์จะประกอบด้วยส่วนของ Settings และ Test cases เท่านั้น ส่วน Variables กับ Keywords เราแยกไปไว้อีกไฟล์นึง เพื่อที่จะได้ไม่ต้องเขียนโค้ดยาวๆในไฟล์เดียว และ ช่วยให้สะดวกในการเรียกใช้งานอีก เพราะทุกไฟล์สามารถเรียกใช้ไฟล์ที่ keyword.robot ได้ ด้วยคำสั่ง resource

ภาพไฟล์ keyword.robot(1)
ภาพไฟล์ keyword.robot(2)

สำหรับไฟล์ keyword .robot ในบางจุดที่พลอยใช้ xpath เพราะเว็บที่ทดสอบไม่ได้ใส่ id ไว้ พลอยก็เลยใช้วิธี xpath แทน แต่หากเว็บที่ทำการทดสอบมีระบุ id เราสามารถใช้วิธี id=ชื่อ id ที่เขาระบุได้เลย ตัวอย่าง id=cart_username อีกทั้งต้องขออภัยที่เซนเซอร์เว็บที่ทดสอบและรหัสผ่านที่ใช้มา ณ ตรงนี้ด้วยค่ะ

ถ้าใครที่สนใจเรื่องนี้ ไปลองทำแล้วมีคำแนะนำ หรือติดปัญหาตรงไหน คอมเมนต์ไว้ เพื่อมาแลกเปลี่ยนและแชร์ประสบการณ์กันได้นะคะ สุดท้ายพลอยหวังว่าบล็อกนี้จะเป็นประโยชน์ให้คนที่เข้ามาอ่านไม่มากก็น้อย ถ้ามีอะไรผิดพลาดตรงไหนก็ขอโทษด้วยนะคะ ขอบคุณค่ะ :)

--

--