ติดตั้ง Appium Inspector เพื่อใช้หา Element ในการเขียนโปรแกรมเพื่อทำการทดสอบระบบของแอพพลิเคชั่น จำเป็นต้องใช้ตัวระบุตำแหน่งขององค์ประกอบต่าง ๆ ในการนำเอาไปใช้กับ keyword ใด ๆ หรือพูดง่าย ๆ ว่า เป็นการระบุว่าปุ่มไหนชื่ออะไร หรือว่าตำแหน่งนี้ ถูกเรียกว่าอย่างไรเพื่อเอาชื่อของตำแหน่งนั้น ๆ ไปใช้เพื่อเขียนโปรแกรมในการทดสอบได้อย่างถุกต้อง โดยประเภทของ Locator แต่ละแบบนั้น จะมีคุณสมบัติแตกต่างกันไปถ้าเราใช้ locator ผิดประเภทผลการทดสอบที่ออกมาจากจะผิดพลาดก็ได้ ยกตัวอย่างเช่น ถ้าต้องการจะทดสอบการกดปุ่ม แต่เรากำหนดให้ไปใช้ xpath ของปุ่มนั้น ผลการทดสอบที่ออกมาจะไม่มีความเสถียร เนื่องจากอาจจะมีการเปลี่ยนตำแหน่งของ Xpath ได้ “การรู้วิธีใช้ locator ต่างๆ อย่างถูกต้องจะทำให้ในการสร้างสคริปต์การทำงานได้อย่างมีประสิทธิภาพ เพราะหากสคริปต์ทดสอบไม่สามารถระบุ locator ที่ชัดเจนได้ การทำงานจะผิดพลาดในที่สุด” โดย Locator พื้นฐานที่ใช้ในการทดสอบ Mobile application ด้วย appium ที่จะพูดถึงในวันนี้จะมีหลัก ๆ 4 ชนิด ดังนี้ ID Accessibility ID Class Name XPath ID เป็นการระบุตำแหน่งนั้นไว้เป็น ID ทำให้ locator ในแอพพลิเคชั่นนั้นจะไม่มี ID ซ้ำกับตัวอื่น ส่งผลให้การทดสอบด้วย ID จะมีประสิทธิภาพเป็นอย่างมาก Accessibility ID เป็นการระบุตำแหน่งที่ได้รับความนิยมสูง โดยเฉพาะอย่างยิ่งเมื่อทำการทดสอบ Android และ iOS เนื่องจาก สามารถใช้ Accessibility ID สำหรับการทำงานอัตโนมัติข้ามแพลตฟอร์มได้ Class Name ในหลายตำแหน่งอาจจะมีการใช้ชื่อ Class เดียวกัน ส่งผลให้อาจเกิดปัญหาระหว่างทดสอบได้ XPath เป็นตัวระบุตำแหน่งที่ไม่แนะนำให้ใช้มากที่สุด เนื่องจากเป็นตัวระบุตำแหน่งที่ทำงานช้า มีปัญหาด้านความเสถียรและประสิทธิภาพ (อ้างอิงจาก http://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies ) Xpath ควรใช้เฉพาะเมื่อไม่มี ID ชื่อ หรือ Accessibility ID เท่านั้น ถ้าแอพพลิเคชั่นมาการใช้ ID หรือ Accessibility ID ร่วมกับ Xpath หรือ Class แนะนำให้ใช้ ID หรือ Accessibility ID มากกว่าเนื่องจากจะช่วยลดระยะเวลาในการหา locator ทำให้ประสิทธิภาพในการทดสอบเพิ่มขึ้น เมื่อเราทำความรู้จักกับประเภทของ Locator แต่ละชนิดแล้ว ต่อไปเรามารู้จักกับวิธีการหา Locator ด้วย Appium Inspector กันดีกว่า 1. ทำการ start appium และเปิดตัว andriod emulator หลังจากนั้นเปิดโปรแกรม Appium Inspector จากนั้นทำการกรอกค่า Host และ Port เพื่อให้เชื่อมต่อกับ Appium server ที่ต่ออยู่กับ android emulator และทำการกรอกค่า Desired Capabilities สำหรับเรียก application ขึ้นมา โดยสามารถอ่านเพิ่มเติมได้จาก Desired Capabilities – Appium หลังจากนั้นกดปุ่ม Start Session ระบบจะทำการเปิด application ที่ android emulator และแสดงหน้าจอของ app ที่ appium inspector 2. โดยเราสามารถควบคุมหน้าจอผ่าน android emulator ได้เลย และเมื่อ android emulator เปลี่ยนหน้าจอไปเราสามารถมาทำการ Reload หน้าจอกที่หน้า Appium Inspector โดยทำการกดปุ่ม Reload 3. และเมื่อเราต้องการดู locator ของตำแหน่งใด ๆ ให้นำเมาส์ไปคลิ๊กที่ตำแหน่งนั้น รายละเอียดของ Locator ก้จะปรากฏมาที่แถบ Selected Element ทีนี้เราก็พร้อมนำเอา locator นั้นไปใช้งานต่อแล้ว
วิธีใช้ Appium เพื่อหา Elementor
ติดตั้ง Appium Inspector เพื่อใช้หา Element เราสามารถใช้ appium instector ได้จาก 2 ช่องทางคือ 1. ผ่านทางหน้าเว็บ https://inspector.appiumpro.com/ 2. ดาวน์โหลดและติดตั้งโปรแกรม Appium Inspector จากเว็บไซต์ https://github.com/appium/appium-inspector/releases ทำการติดตั้ง Appium Server 1. เปิด command line ขึ้นมา (run –> cmd) 2. รันคำสั่ง npm install -g appium ทำการติดตั้ง AppiumLibrary เพื่อทำการเรียกใช้ appium ใน robot framework 1. ติดตั้ง robot framework สำเร็จ 2. เปิด command line ขึ้นมา (run –> cmd) 3. รันคำสั่ง pip install robotframework-appiumlibrary 4. ทำการเช็คว่าติดตั้งสำเร็จหรือไม่โดยการรันคำสั่ง pip list 5. จะพบ robotframework-appiumlibrary ปรากฏอยู่ ทดลองสร้าง android Emulator และเชื่อมต่อ android กับ appium สร้าง android Emulator 1. เปิดโปรแกรม android Studio 2.เลือกเมนู More Action 3. เลือกเมนู AVD Manager 4. กดปุ่ม + Create Virtual Device.. เพื่อทำการเพิ่ม Devic android 5. เลือกรุ่น และสเปคของโทรศัพท์ที่ต้องการใช้ทดสอบ หลังจากนั้นกดปุ่ม Next 6. เลือก Image ที่ต้องการหลังจากนั้นกด Next 7. ทำการตั้งค่า AVD Name ตามที่ต้องการ โดยค่านี้จะถูกนำไปใช้ใน appium:deviceName ตอนเชื่อมต่อกับ Appium หลังจากนั้นกด Finish 8. โดยเมื่อทำการสร้างสำเร็จ เราจะได้ Device ใหม่ขึ้นมาหนึ่งตัว 9. ทำการ start device โดยการกดปุ่ม Play ระบบจะทำการเปิด Emulator มาให้ เมื่อต้องการจะติดตั้งโปรแกรมที่จะทำการทดสอบลงในเครื่อง Emulator ให้ทำการลากไฟล์ .apk ลงมาที่เครื่องได้ทันที และระบบจะทำการติดตั้งโปรแกรมดังรูป ทำการเชื่อมต่อ Appium กับ android Emulator เพื่อค้นหา Element เมื่อทำการ Start Emulator สำเร็จ ให้ทำการเปิดโปรแกรม Appium 1. กรอก Host : 127.0.0.1 และ Port : 4723 2. หลังจากนั้นกด startServer 3. เปิดโปรแกรม Appium Inspector 4. กรอก Remote Host, Port ตามตอนที่ทำการ Start Server กรอก Desired Capabilities อ่านเพิ่มเติมได้ใน Desired Capabilities – Appium { “appium:deviceName”: “<ชื่อ AVD Name>”, “appium:platformVersion”: “<Version android>”, “appium:platformName”: “Android”, “appium:app”: “<Path ที่อยู่ของไฟล์ .apk>”, “appium:appWaitActivity”: “*” => ให้ระบบรอหน้าเว็บดาวน์โหลดทั้งหมด } 5. กดปุ่ม Start Session 6. จะได้หน้าจอที่ปรากฏแอพที่เราต้องการ
Introduction mobile automate
Appium เป็น Automation Framework หรือ Automation Testing Tool ที่ถูก พัฒนา ต่อ ยอด มาจาก Selenium ซึ่งจะนำมาใช้ทดสอบ application ซึ่งตัว Appium และ Selenium จะใช้ตัว webdriver สื่อสารกับ platform เหมือนกัน โดยการทำงานของ Appium จะทำงานเป็น Server ซึ่งทำการรับค่าจาก Client มาประมวณผล และส่งคำสั่งนั้นไปหา Appium driver [IOS, Android] เพื่อทำการทำตามคำสั่งที่เราส่งมาจาก client โดยจะแสดงผลในหน้าจอของ Emulator หลังจากนั้น เมื่อได้ผลลัพท์ของคำสั่งที่เราส่งไปแล้ว Appium service จะทำหน้าที่รับ response นั้นเพื่อส่งกลับไปหา Client อีกที ว่าคำสั่งที่เราส่งไปนั้นสำเร็จหรือไม่สำเร็จ ง่ายๆเลยเหมือน Appium เหมือนตัวแปลภาษาของ Client [json] เป็น Native framework languge[ภาษาที่ส่งไปแล้ว Andriod หรือ IOS เข้าใจ]เพื่อส่งไปให้ Appium driver [IOS,Andriod] เข้าใจ ซึ่งการส่งไปให้ Andriod กับ IOS จะรับคำสั่งไม่เหมือนกัน ซึ่งในที่นี้เราจะมาสอนเกี่ยวกับการทำ Automate mobile ของ Andriod กัน ข้อดี ข้อเสีย ของ Appium Appium เป็น Automation Framework หรือ Automation Testing Tool ที่ถูก พัฒนา ต่อ ยอด มาจาก Selenium ซึ่งจะนำมาใช้ทดสอบ application ซึ่งตัว Appium และ Selenium จะใช้ตัว webdriver สื่อสารกับ platform เหมือนกัน โดยการทำงานของ Appium จะทำงานเป็น Server ซึ่งทำการรับค่าจาก Client มาประมวณผล และส่งคำสั่งนั้นไปหา Appium driver [IOS, Android] เพื่อทำการทำตามคำสั่งที่เราส่งมาจาก client โดยจะแสดงผลในหน้าจอของ Emulator หลังจากนั้น เมื่อได้ผลลัพท์ของคำสั่งที่เราส่งไปแล้ว Appium service จะทำหน้าที่รับ response นั้นเพื่อส่งกลับไปหา Client อีกที ว่าคำสั่งที่เราส่งไปนั้นสำเร็จหรือไม่สำเร็จ ง่ายๆเลยเหมือน Appium เหมือนตัวแปลภาษาของ Client [json] เป็น Native framework languge[ภาษาที่ส่งไปแล้ว Andriod หรือ IOS เข้าใจ]เพื่อส่งไปให้ Appium driver [IOS,Andriod] เข้าใจ ซึ่งการส่งไปให้ Andriod กับ IOS จะรับคำสั่งไม่เหมือนกัน ซึ่งในที่นี้เราจะมาสอนเกี่ยวกับการทำ Automate mobile ของ Andriod กัน ข้อเสีย จากแผนภาพจะเห็นได้ว่า การที่เราจะส่ง code ไปรันที่ driver ต้องผ่านกระบวนการแปลภาษาจาก Code ที่เราเขียนไปเป็น Native framework languge เพื่อให้เครื่อง Driver สามารถทำงานได้ ทำให้ใช้เวลานานกว่าการเขียน Native framework languge แยกระหว่าง IOS กับ andriod ข้อดี เขียน Code ครั้งเดียวสามารถใช้ได้ทั้ง IOS และ Andriod และสามารถใช้ภาษาอะไรในการเขียน code ก็ได้ ติดตั้งโปรแกรมสำหรับทดสอบ application (สำหรับ window) ติดตั้ง JAVA หรือ JDK 8 1. เข้าไปดาวน์โหลด JDK 8 ตามลิงค์ดังนี้ ลิงค์ดาวน์โหลด โดยเลือกประเภทของเครื่องคอมพิวเตอร์ที่ต้องการติดตั้ง โดยในที่นี้จะใช้เป็น Window 2. เลือกดาวน์โหลด openJDK 8 ตามประเภทของเครื่อง ตามรูปตัวอย่างเป็นการดาวน์โหลดลงเครื่อง Window64x 3. เมื่อได้ไฟล์ในการติดตั้งมาแล้ว ให้ทำการติดตั้งลงคอมพิวเตอร์ 4. เพิ่ม JAVA ใน System Environment โดยต้องเพิ่ม JAVA_HOME ให้ทำการเพิ่ม Variable JAVA_HOME โดยใส่ค่า Value เป็น Path ที่เราทำการติดตั้ง JDK โดยไปที่ : C:Program FilesEclipse Adoptiumjdk<xxx>* แก้ <xxx> เป็น version ที่โหลดมาหมายเหตุ : ค่าตรง Folder Eclipse Adoptium อาจเปลี่ยนไปตามแหล่งที่เราทำการดาวน์โหลด JDK มาให้ทำการตรวจสอบว่าโฟลเดอร์ที่ทำการจัดเก็บ JDK เป็นโฟลเดอร์ไหน โดยวิธีการเพิ่มให้ทำการ กดที่ปุ่ม Start > พิมพ์คำว่า System > เลือกเมนู Edit the system environment variables 5. เลือก Environment Variables 6. Environment Variables 7. พิมพ์ข้อมูลสำหรับเพิ่ม JAVA_HOME ติดตั้ง Android Studio 1. ไปที่ลิงค์สำหรับการดาวน์โหลด ลิงค์ดาวน์โหลด Android Studio 2. ทำการดาวน์โหลดและติดตั้งโปรแกรม โดยเมื่อติดตั้งโปรแกรมเสร็จเรียบร้อยให้ไปทำการเพิ่ม ANDROID_HOME ใน System Environment โดยไปทำการเพิ่ม ติดตั้ง Node.js โดยสามารถดาวน์โหลดโปรแกรมได้จาก https://nodejs.org/en/download/ ติดตั้ง Appium 1. เข้าสู่เว็บไซต์ Appium https://appium.io/ 2. ทำการดาวน์โหลดและติดตั้งโปรแกรม
มารู้จักกับ QA กันเถอะ
QA/Tester มีหน้าที่อะไรบ้าง แล้วแตกต่างกันตรงไหน เรามาดูกันเลย จากภาพข้างบนก็น่าจะพอเห็นความแตกต่างของ 2 ตำแหน่งนี้แล้วใช่ไหมคะ แต่… วันนี้ Qsquad จะมาอธิบายรายละเอียดอีกสักทีเพื่อความกระจ่างกันค่ะ โดยภาพรวมของหน้าที่หลักในสายอาชีพนี้ ที่เหมือนกันก็ คือ การตรวจสอบคุณภาพของ software product โดยทำการทดสอบระบบต่างๆ ไม่ว่าจะเป็น functional และ non-functional ตรวจสอบหาข้อบกพร่องข้อผิดพลาดของ software เพื่อไม่ให้เกิดข้อผิดพลาดหรือ Bug เมื่อส่งมอบ software ให้กับลูกค้าไปแล้ว ซึ่ง QA กับ Tester ก็แทบจะทำหน้าที่เหมือนๆกัน แตกต่างกันที่งานของ QA สโคปงานจะใหญ่กว่าไม่ใช่เพียงแค่ทดสอบเพื่อหา Bug แต่ต้องควมคุม software product รวมถึงต้องรู้เรื่อง business requirement อีกด้วยย Qsquad ขอมาลงรายละเอียดหน้าที่ของ QA ว่าต้องทำอะไรบ้าง QA Process ก่อนอื่นเลยเราต้องวางแผนศึกษา Requirement และทำความเข้าใจ software จากนั้นจะมีการรีวิว prototype ที่ทางทีม UX ได้ design ออกมา ขั้นตอนต่อไปจะเริ่มออกแบบและเขียนเทสเคส เพื่อการทดสอบ software ที่ครอบคลุม เมื่อเราได้เทสเคสออกมาแล้ว จะเริ่มทำการทดสอบระบบ โดยการทดสอบมีทั้ง Manual testing และ Automated testing สองการทดสอบนี้คืออะไร และแตกต่างกันอย่างไร เรามาดูกันพิ่มเติมในหัวข้อ Manual testing คืออะไร? และ Automated testing คืออะไร? ได้เลย แล้วนอกจากการทดสอบฟังก์ชั่นการทำงานของระบบแล้ว ยังตรวจสอบว่าระบบตรงตามวัตถุประสงค์หรือไม่อีกด้วย ในขณะที่ทดสอบแล้วเจอ Issue Bug จะทำการเปิด report เพื่อแจ้งกับทีมเดฟ ขั้นตอนสุดท้ายคือ การทำ report สรุปผลการทดสอบ software เพื่อนำไปรายงานกับ PM จ้าา~ Manual testing คืออะไร? Manual testing คือ การทดสอบโดยไม่ใช้เครื่องมืออัตโนมัติ(Automate tool หรือ test script) ซึ่ง QA/Tester จะต้องทำการทดสอบ software ตาม Test case โดยต้องจิ้มแต่ละ step เอง ซึ่งการทดสอบแบบนี้ทาง Qsquad แนะว่าเราควรจะ Manual testing เพื่อทดสอบว่าสามารถใช้งานฟังก์ชันพื้นฐานได้จริงหรือไม่ ก่อนที่จะลงมือทำออโตเมทน้า Automated testing คืออะไร? Automated testing คือ การทดสอบโดยใช้เครื่องมือ(Automated tool) เข้ามามีส่วนร่วมในการทดสอบ เพื่อให้เป็นไปในรูปแบบอัตโนมัติ จะทำให้การทดสอบมีประสิทธิภาพและถูกต้องแม่นยำมากยิ่งขึ้น โดยการทดสอบแบบ Automated testing จะต้องทำการเขียน Test script อาจจะลำบากหน่อยในตอนแรก แต่อนาคตสบายแน่ Qsquad คอนเฟิร์มเลย หากใครสนใจเกี่ยวกับการทำ Automate อดใจรอติดตาม blog ถัดๆไปเรื่อง Automated testing ของพวกเราได้เลย! คุณสมบัติและทักษะ สำหรับใครที่กำลังอยากจะมาเป็น QA แบบเราชาว QSquad ข้อแรกเลยต้องเป็นคนช่างสังเกต ตั้งคำถามกับสิ่งที่สงสัย และต้องมีความละเอียดรอบคอบด้วยนะ ถ้าสามารถสื่อสารกับบุคคลอื่นได้ดี ก็จะดีมากๆ เพราะงานเราต้องคุยกับทีมนู้นที ทีมนี้ที ถ้า Coding ได้ก็จะดีมากเช่นกัน สำหรับทำ Automated testing เพื่อเพิ่มประสิทธิภาพในการทดสอบนั่นเอง แต่หาก Coding ไม่ได้ก็สามารถเรียนรู้ได้ไม่ยากน้า
สิ่งที่ควรรู้ก่อนทดสอบ API
สวัสดีเพื่อนๆทุกท่าน วันนี้จะมาแนะนำให้ทุกคนรู้จักกับ REST API TESTING กัน ก่อนอื่นหากจะเริ่มทดสอบเราจำเป็นที่จะต้องรู้เกี่ยวกับ REST สักหน่อยนะ ในบทความนี้จะกล่าวถึง– REST API– Goal API testing– สิ่งที่ต้องรู้ก่อนทดสอบ API REST API คืออะไร? REST ย่อมาจาก Representational State Transfer เป็นรูปแบบการส่งข้อมูลระหว่าง Server-Client รูปแบบหนึ่ง ซึ่งอยู่บนพื้นฐานของ HTTP Protocol เป็นการสร้าง Web Service เพื่อแลกเปลี่ยนข้อมูลกันผ่าน Application ไม่ว่าจะเป็น PUT, GET, PATCH, และ DELETE Goal API testing จุดมุ่งหมายที่เราจะต้องทำการทดสอบ API กันนั้น เพราะจะเป็นการทดสอบ การทำงานของฟังก์ชัน(functionality), ความน่าเชื่อถือของระบบ(reliability), ประสิทธิภาพการทำงานของระบบ(performance), และความปลอดภัยของระบบ(security of the programming interfaces) สิ่งที่ต้องรู้ก่อนทดสอบ API หัวใจหลักสำคัญในการทดสอบระบบ API นั้นจำเป็นจะต้องมี Document the API Testing เสมอ เหมือนเป็นกฎและรายละเอียดในการอ้างอิงถึงการเรียกใช้งานต่างๆของ API ได้ถูกต้อง ต่อไปนี้จะขอเปรียบเทียบการขอ HTTP Request ให้เสมือนการเขียนจดหมาย โดยจะประกอบด้วย Resource description จะต้องมีคำอธิบายในแต่ละ API เพื่อที่จะให้ผู้ใช้งานสามารถเข้าใจได้ทันทีว่า Request นี้มีไว้สำหรับทำอะไร หากผู้ใช้งานไม่เข้าใจจุดประสงค์ของแต่ละ API การทดสอบนั้นก็จะไร้ประสิทธิภาพ Endpoints and methods Endpoints คือ เส้นทาง (path) หลายๆอันประกอบกันขึ้นมา สำหรับการเข้าถึงการใช้งานของแต่ละ API จึงเปรียบเสมือนการจ่าหน้าซองจดหมาย Methods คือ จากข้างบนที่เรากล่าวว่า REST ทำงานอยู่บน HTTP Protocal ดังนั้นจึงทำให้เวลาเราใช้งานจะต้องอยู่บนพื้นฐาน HTTP Method ด้วยเช่นกัน เสมือนประเภทของจดหมายที่เราต้องการจะส่งไป เช่น POST = การส่งจดหมายเพิ่มข้อมูลGET = การส่งจดหมายขอข้อมูลPUT = การส่งจดหมายเพื่ออัพเดทข้อมูลDELETE = การส่งจดหมายเพื่อขอลบข้อมูล Parameters Parameter คือตัวเลือกข้อมูลที่เราสามารถส่งไปให้ระบบได้ โดยจะประกอบด้วย Header parametersเปรียบเสมือน Barcode เพื่อระบุรายละเอียดของจดหมายได้อย่างรวดเร็ว ว่ามาจากใคร และเนื้อหาข้างในจดหมายเป็นอย่างไร และเป็นส่วนคำสัญที่สุดในการนำส่งข้อมูล โดยส่วนมากจะเป็นการนำส่งข้อมูลต่างๆ ดังนี้1.1. Request and Response Body1.2. Request Authorization1.3. Response Caching 1.4. Response Cookies Path parametersเป็นส่วนหนึ่งของ endpoints เหมือนการระบุอาคารที่พักอาศัยบนซองจดหมาย ยกตัวอย่าง {user-id} GET https://graph.instagram.com/{api-version}/{user-id}/?fields={fields} Query string parametersเป็นการจำกัดการแสดงข้อมูลให้แคบลง หรือเรียกว่าการ Filter ข้อมูล วิธีการใช้ต้องมี?และตามด้วย key คู่กับ value โดยส่วนมากจะใช้กับ GET ยกตัวอย่าง ?fields={fields} GET https://graph.instagram.com/{user-id}/?fields={fields} Request body parametersเป็นเนื้อหาของจดหมาย ว่าต้องการส่งข้อมูลอะไรไปให้ระบบ โดยส่วนมากที่ใช้งานจะอยู่ในรูปแบบ JSON (key: value) { “id”: “17895695668004550”, “username”: “jayposiris” } Response จากที่ได้ส่งจดหมายไปแล้ว(client->server) หลังจากนั้นเราจะได้จดหมายตอบกลับมา(server-> client) โดยจะมีรายละเอียดการตอบกลับ 1. Response status codeบ่งบอกว่าจดหมายที่เราส่งไปนั้น มีการตอบกลับสำเร็จหรือไม่ Response bodyเป็นเนื้อหาของจดหมายที่ตอบกลับมา เท่านี้เราก็ทราบรายละเอียดต่างๆของการเขียนจดหมายที่สมบูรณ์(HTTP Request) หวังว่าเพื่อนๆจะพอเข้าใจการเขียนมากขึ้น เพื่อให้เราทำตามจุดประสงค์หลักได้ต่อไป