\

Facebook


วันพฤหัสบดีที่ 22 มิถุนายน พ.ศ. 2560

เช็คราคาเที่ยวบินจบในคลิกเดียวด้วย Selenium IDE ใช้เวลาแค่ 3 วิ


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


จะดีกว่าไหมที่เราบันทึก process ซ้ำๆเหล่านี้ขึ้นมาเป็น check list แล้วสั่งให้ computer วิ่งเข้าไปที่หน้าเว็บและแสดงผลการค้นหาออกมาตามที่เราต้องการเลยในคลิกเดียว ยินดีต้อนรับสู่โลกของ Automate tool วันนี้เรามาลองใช้งาน Selenium IDE ซึ่งเป็น plugin ที่ต้องติดตั้งลง FireFox เป็นเครื่องมือสำหรับการบันทึก Event หรือเหตุการณ์ต่างๆที่เราทำบนหน้าเว็บออกมาเป็นไฟล์ โดยเราสามารถรันเหตุการณ์เหล่านั้นซ้ำกี่รอบก็ได้! ซึ่งเราจะยกตัวอย่างจากการหาเที่ยวบิน AirAsia จากเชียงใหม่ ลงไปกรุงเทพ ในวันที่ 22 – 25 กันยายน มาดูกันว่า Selenium IDE จะทำให้ชีวิตง่ายขึ้นสักเท่าไหร่

ขั้นตอนการติดตั้ง

1. ลง FireFox Web Browser
2. เข้าไปที่ https://addons.mozilla.org/en-US/firefox/ แล้วค้นหา Selenium IDE ติดตั้งให้เรียบร้อย
3. กด ctrl + shift + s เพื่อเปิดหน้าต่าง Selenium Windows 



รู้จัก HTML Element (ถ้ารู้จักแล้ว ข้ามไปได้ไม่โกรธ)

บนหน้าเว็บที่เราเข้าเป็นประจำทุกๆวัน มันจัดองค์ประกอบซ้าย ขวาอย่างสวยงามนั้นเบื้องหลังประกอบไปด้วย element ต่างๆเข้ามาประกอบกันจนไป HTML ไฟล์ ซึ่งชั้นบนสุดเราจะเรียก root หรือ tag <html> แล้วสิ่ที่อยู่ภายในนั้นจะถูกบรรจุลงไปใน element ถัดไปเรื่อยๆ ตัวอย่าง element ที่ควรรู้จัก

1. <input> มีหลายรูปแบบ แบบที่เราเห็นบ่อยๆคือ textbox หรือ <input type=’text’>
2. <div> ดีวิชั่นที่ใช้ บรรจุ element อื่นๆ
3. <button> ปุ่ม
4.     <li> ลิส

ซื่ง Selenium จะรู้ตำแหน่งของ element บนหน้าจอได้ก็จากการจดบันทึกตำแหน่งจาก html element ที่บรรจุมันอยู่นั้นเอง

เริ่มใช้งาน

Download ไฟล์ตัวอย่างได้ที่นี้


1. การใช้ Selenium IDE เราจะเหนื่อยครั้งแรกครั้งเดียวส่วนครั้งถัดๆไปเราเพียงแค่กด run เพื่อทำงานตาม event ที่เราบันทึกในครั้งแรก
2. กด record (ปุ่มแดง ทางขวามือบน)
3. เริ่มเข้าหน้าเว็บ Airasia.com แล้วเลือกเส้นทาง ออกจากเชียงใหม่ เข้าสู่กทม หลังจากนั้นเลทอกวันเวลา และจำนวนผู้โดยสาร สังเกตที่ตัว Selenium จะมีการสร้าง record ขึ้นมาทุกครั้งที่เรามีการคลิกเลือกจุดต่างๆ ซึ่งแต่ละจุดเราแทนด้วย HTML element

4. หลังจากจบ process กดปุ่มสีแดง (record) อีกครั้งเพื่อจบการทำงาน
5. สังเกตุทางซ้ายมือ จะมีชื่อ test case อยู่ใน list test suit คลิกขวา กด save เพื่อบันทึก records เอาไว้
6. ถ้าอยากบันทึดเพิ่ม คลิกขวาบนที่ว่างทางซ้าย เลือก new test case
7. เริ่ม records ให้อีกครั้ง


ข้อสังเกตุ Selenium IDE มาพร้อมความง่าย แต่ Error เพียบ

เพราะ Selenium IDE มีหน้าที่แค่จับ element จาก event ที่เราทำบนหน้าจอในขณะนั้น เช่นตัวอย่างเว็บแอร์เอเชียนี้ เราได้คลิกเลือกต้นทาง และปลายทางจากตัวเลือก ซึ่งเมื่อกดรันอีกครั้งกลับ error เพราะอะไร เพราะว่ามันไม่ได้ฉลาดขนาดรอให้ ตัวเลือกแสดงขึ้นมาก่อน ทำให้สคริปพังกลางทาง เราต้องแก้ไขโดยการเปลี่ยนการกดเลือก เป็นการพิมพ์ลงไปแทน ซึ่ง Selenium จะมองเป็นการกรอกข้อความแทน

เปรียบเทียบจากการคลิก command ขึ้นว่า 


แต่ถ้ากรอกข้อความ command ขึ้นว่า



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

อย่างน้อยการกด run ครั้งถัดไปก็ใช้เวลาน้อยมาก และเราไม่ต้องเสียเวลาเลือก หรือกรอกใดๆทั้งสิ้น เพราะครั้งที่สองเป็นต้นไป selenium จะทำงานแทนเราเอง ถ้าทำแบบนี้ทุกเว็บสายการบินจะประหยัดเวลาได้มาก การใช้ automate เข้ามาช่วยให้ชีวิตง่ายขึ้นก็ดีแบบนี้แล สวัสดีครับ มี version วิดีโอด้วยตาม link ข้างล่างนี้ ครับเผื่อใครอ่านแล้วยังไม่เห็นภาพชัดเจน

ยุคสมัยแห่ง Automate เมื่อ Selenium เข้ามาเป็น QA แทนมนุษย์ (Part 1)


ยอมรับสักทีเถอะว่ายุคนี้ ปี 2017 มันเริ่มเข้าสู่ยุคหุ่นยนต์แล้ว ไหนจะรถไร้คนขับ ไหนจะ AlphaGo ที่เล่นเกมส์โกะชนะมนุษย์ที่เลานเก่งที่สุดในโลก เดินไปทางไหนคอมพิวเตอร์ก็เข้ามาคิดแทนมนุษย์แล้ว และมนุษย์กำลังจะตกงานมากขึ้นเพราะมีคอมพิวเตอร์ทำงานแทน วงการเขียนโปรแกรมก็เช่นเดียวกันโดยเฉพาะการเทสโปรแกรมที่ต้องเทสซ้ำๆ โมดูลเดิมๆบ่อยๆซึ่งต้องจ้างคนมาทำงาน QA แถมมนุษย์ยังมีโอกาสผิดพลาดอีกแบบนี้ไม้เหลือเหตุผลใดที่จะเปลี่ยนมาใช้ Automate tool

เครื่องมือเทสเสียเงินก็มี แถมฟีเจอร์โหด แต่ถ้าพูกถึงเครื่องมือฟรีผมขอแนะนำ Selenium ในงานเทสของคุณโดยเจ้าตัว Selenium เนี้ยหลายคนจะคุ้นหูคุ้นตากับตัว Selenium IDE ที่เป็นปลั้กอินติดกับ Firefox Web Browser โดยเราทำเพียงแค่คลิกบันทึก Event ที่จะทำงานบนหน้าจอครั้งแรกครั้งเดียว แล้วโปรแกรมก็จะรันอีกกี่ครั้งก็ได้ สมมุติว่าสร้างชุดการเทสขึ้นมาหนึ่งอย่าง ให้วิ่งเข้าไปกรอกข้อมูลบนหน้าเว็บแล้วกด Submit ถ้าผ่าน โปรแกรมจะวิ่งไปหน้า Success แต่ถ้าไม่สำเร็จไปหน้า Error Page แบบนี้เราก็สามารถ Capture URL สุดท้ายเพื่อเช็คข้อมูลได้

Selenium WebDriver เหมาะกับงานประเภทไหน

1. งานที่ต้อง Import TestCase จาก Project Unit Test
2. งานที่ต้องการใช้ feature ของ .Net Framework เข้ามาเกี่ยวข้อง เช่น ดึงข้อมูลจากหน้าเว็บแล้วเอาข้อมูลไปเซฟลง Database หรืออาจเรียก Web Service เพื่อตรวจสอบค่าบางอย่าง
3. งานที่ซ้ำๆ ซ้อนๆ มนุษย์ทำแล้วน่าเบื่อ เช่น generate เอกสารจากปุ่ม Download ทั้งหมด 100 ไฟล์ ใครมันจะมานั้งทำจนมือหงิก

แล้วมันไม่เหมาะกับงานประเภทไหน

1. งานเทสโปรเจกที่สเกลเล็กจนใช้คนทำจะไวกว่า
2. งานที่รีบเร่งส่งงาน เพราะการเขียนตัว Unit Test ใครเวลาพอสมควร (แต่สบายระยะยาว)
3. งานที่โปรแกรมเมอร์ ไม่สามารถออกแบบ Test Case ด้วยตัวเองให้ครอบคลุม เพราะบางอย่างดูด้วยตาจะชัดเจนกว่ามาก เช่นเช็คสีของข้อความที่แสดงบนหน้าเว็บ

หยุดพล่ามแล้วเริ่มลงมือทำความรู้จักกับ Selenium กันดีกว่า ขอเริ่มอธิบายสั้นๆตามความเข้าใจก่อนว่า Selenium คือหน้ากากที่จะช่วยเราแปลภาษาสำหรับติดต่อสื่อสารกับ Web Browser เช่น เราอยากเข้าเว็บ Google แล้ว Search คำว่า “solid programming” เราจะต้องทำอะไรบ้าง อันดับแรก
- กรอก URL : http://www.Google.coth
- กรอกข้อความลงไปใน Search textbox ว่า “solid programming”
- กดปุ่มค้นหา

ทั้งหมดสามสเตปนี้เราต้องเข้าโปรแกรมเป็นภาษาที่ Selenium เข้าใจแล้วสุดท้ายมันจะไปคุยกับ browser ให้เองว่าต้องทำอย่างไร ซึ่งมันก็สามารถคุยได้กับทั้ง firefox, Google Chrome, Internet Explorer  และอีกมากมาย (PhantomJS ยังได้เลย) ทำให้เราเขียน test case ครั้งเดียวแต่เทสได้ทั้ง 3 browser ไงหล่ะเริ่มเห็นความสบายอยู่ข้างหน้าละยัง


โดยเราจะสนใจการเขียนโปรแกรมโดยใช้ Selenium WebDriver เป็นหลัก ถ้าท่านต้องการเขียนแบบที่เป็น Plugin FireFox ต้องอ่านบทความนี้ ส่วนสกิลที่จำเป็นสำหรับเขียน Unit Test ในครั้งนี้

1. C# programming เราจะเขียนด้วย C#  กันเพราะต้องสร้าง Unit test project
2. Nunit framework เป็น Framework สำหรับสร้าง TestCase
3. Selenium WebDriver syntax รูปแบบการเขียน การสร้าง web driver
4. HTML Xpart เข้าใจว่า html จาก root element ไล่เรียงไปจนถึง element ที่เราสนใจมี XPART เป็นแบบไหน

ซึ่งเดียวผมจะค่อยๆอธิบายแต่ละข้อรวมไปถึงวิธีการใช้งาน ตั้งแต่ต้นจนจบ บทต่อไป เริ่มสร้าง Unit Test สำหรับ Selenium

May be like this posts