QA Automation Workshop ที่ LINE Fukuoka, Japan

Aphisada Inthasara
LINE Developers Thailand
6 min readFeb 1, 2018

สวัสดีค่ะ ชื่อเปิ้ลนะคะ ทำงานเป็น Senior QA Engineer อยู่ที่ LINE ค่ะ เมื่ออาทิตย์ที่แล้ว 18–19 มกราคม เปิ้ลและเพื่อนๆ QA อีก 5 คน ได้มีโอกาสเข้าร่วม Workshop เกี่ยวกับการทำ Automation Test ซึ่งครั้งนี้เป็นครั้งที่ 2 จัดขึ้นที่ LINE เมือง Fukuoka ประเทศญี่ปุ่นค่ะ

ในการพัฒนา Software อะไรก็ตาม นอกเหนือจากการ Implement ตาม Requirement แล้ว สิ่งที่สำคัญอีกหนึ่งอย่างคือ “การเทส” ซึ่งการจะเทส เราก็ควรจะต้องเรียนรู้ว่า Software ที่เรากำลังทำคืออะไร, Flow การทำงานเป็นอย่างไร, ใช้เทคโนโลยีไหน แล้วเราควรจะใช้ Tools/Framework อะไรถึงจะเหมาะสมในการเทส

สำหรับ Workshop ครั้งนี้มีทั้งหมด 2 วันนะคะ โดย

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

คนที่เข้ามาร่วมงานครั้งนี้ก็จะมีทั้ง QA (Quality Assurance), QA Automation และ SET (Software Engineer in Test) ซึ่ง QA ใน LINE ของแต่ละประเทศ ชื่อตำแหน่งอาจจะเรียกแตกต่างกันไปบ้างค่ะ แต่หลักๆแล้วเรามี Goal เดียวกันนั่นก็คือ

“ทำให้ Software ที่พัฒนาออกมานั้นมี Quality ที่ดี”

เอาหล่ะ เรามาเริ่มเนื้อหา Workshop จากวันแรกเลยดีกว่าค่ะ ว่าเราทำอะไรกัน เราได้อะไรและเราให้อะไรกับทุกๆคนที่มางานนี้ ;)

Day1. 18 Jan 2018

เนื่องจากเราต่างมาจากหลายๆที่ ไม่ว่าจะเป็น LINE Thailand, Taiwan, Korea, Dalian, Vietnam, Shinjuku and Fukuoka ซึ่งก็ยังไม่ได้รู้จักกันซักเท่าไหร่ มีเพียงบางคนที่เคยเจอแล้วเท่านั้น แรกสุดเค้าก็จะมีกิจกรรม Ice Breaking ให้ทุกคนออกมาแนะนำตัวเอง และเล่นเกมส์ร่วมกัน

ของรางวัลในกิจกรรมก็จะน่ารักๆแบบนี้ค่ะ มีวางขายเฉพาะที่ LINE Friend ที่ประเทศญี่ปุ่นเท่านั้น ^__^

หลังจากนั้นก็มาถึง Talking Session ซึ่งเค้าจะให้ QA แต่ละประเทศออกมาพูด (นำเสนอ 30 นาที + ตอบคำถาม 10 นาที) กันบ้าง โดยมีน้องใหม่ (Supisara Chantrapisit) น้อง QA อีกคนที่ได้ไปด้วยกัน มาช่วยเขียนสรุปของแต่ละ Topics มาดูกันค่ะ ;)

Team: Thailand

Product: LINE Taxi

  • LINE Taxi ถือเป็นบริการลำดับที่ 5 ภายใต้การดำเนินงานของ LINE MAN หลังจากบริการสั่งซื้ออาหาร (Food Delivery) แมสเซนเจอร์ (Messenger) สั่งของสะดวกซื้อ (Convenience Goods) และส่งพัสดุ (Postal) ของ LINE ในประเทศไทย
  • ช่วงแรกทีมเน้นการทำ Automate ที่ UI level ทำให้เสีย Effort ไปเยอะมาก แล้วผลลัพท์ที่ได้ไม่คุ้มกับเวลาที่เสียไป เนื่องจากช่วงแรกบ่อยครั้ง UI มีการเปลี่ยน ฝั่งเทสก็ต้องมีการเปลี่ยนตาม หลังจากที่ทีมกลับมาคิดกันใหม่ เลยมาลงตัวกันที่การทำ API Testing ข้อดีของการทำเทสแบบนี้คือง่าย ใช้ Effort ไม่เยอะ รันได้เร็ว
  • ใช้ API Testing เอามาทำเป็น Test Data Driven เช่น การเทสคูปองชนิดต่างๆ ซึ่งมีจำนวนมาก ถ้าต้องทำผ่าน UI ด้วย Step เทสเดิมๆ แล้วเปลี่ยนแค่ชนิดคูปอง ก็ดูจะเสียเวลาโดยใช่เหตุ แต่ไม่ได้หมายความว่าจะไม่เทส UI เลย ทีมยังคงเทสอยู่ แต่ลดจำนวนลง เหลือเฉพาะเทสที่จำเป็นจริงๆ
  • เนื่องจากการเทส LINE Taxi เราจะต้องเทสมันควบคู่ทั้ง application ที่เป็น LINE Taxi (Driver) และ LINE MAN (Passenger) ในการเทสแต่ละ Application เราสามารถ Simulate Message จากอีก App แล้วยิง Request API ไป เช่น
  • เรา Simulate Request Job จากฝั่ง Passenger (LINE MAN) เพื่อดูว่าฝั่ง LINE Taxi (Driver) จะได้รับ Notify รึเปล่า และในทางกลับกันเราก็สามารถ Simulate Accept Job จากฝั่ง Driver (LINE Taxi) เพื่อดูว่า passenger จะได้รับข้อมูลของ Driver นั้นๆ ด้วยมั้ย หรือจริงๆแล้วเราอาจจะใช้การ Simulate Message จากทั้ง LINE Taxi (Driver) และ LINE MAN (Passenger) เพื่อทำการเทสก็ได้เช่นกัน
  • ที่ไทยจะมีทีม QA Automation ทำหน้าที่ช่วยวาง Framework Test ที่เหมาะสมในแต่ละ Product และจะสอนวิธีการเขียนที่ดี การวางโครงของ Code ซึ่งทีม QA ที่ไทย Expect ว่า QA ทุกคนไม่เพียงแต่สามารถเขียน Automate Script ได้แต่ควรจะต้องทำให้ดีด้วยเช่นกัน

Team: Taiwan

Product: LINE NOW

  • LINE NOW เป็น Service ของ LINE Taiwan ที่ใช้ Concept ของ LINE Beacon เข้ามาช่วย ทำให้ผู้ใช้ได้ร่วมกิจกรรมต่างๆ ไม่ว่าจะเป็นแบบ Online หรือ Offline และทำให้ทาง Business ได้ฐานข้อมูลผู้ใช้เพิ่มขึ้น
  • Pain Point จากการเทสคือ QA เสียเวลาในการนั่ง Maintain Test Server, Maintain Version ของ Component ต่างๆ หรือบางครั้งไม่มีแม้กระทั่ง Test Server ให้ใช้เทส ณ ตอนนั้น เพราะใช้ทำอย่างอื่นอยู่
  • Solution ก็คือทำ Auto Create Test Environment โดยเพียงแค่กดคลิกง่ายๆ แค่คลิกเดียวก็จะได้ทั้ง Stack เพื่อเอามาเทสได้เลย โดยใช้เทคโนโลยีหลายอย่างเช่น Docker, Drone CI ที่ Integrate กับ CI เพื่อรัน Unit Test หลังจากนั้นก็ Build แล้ว Deploy ที่ Test Server, Rancher ซึ่งเปนตัวจัดการ Docker Container และที่ LINE เอง เราจะมี Private Cloud ที่ใช้งานกันภายใน ซึ่งมันช่วยทำให้เราสามารถ Scale VM ได้ง่ายขึ้น
  • นอกจากนี้ยังสามารถ Build Monitoring Stack ได้ ฉะนั้นเราสามารถ Monitor Test Result ได้ โดยใช้พวก Tools อย่าง Prometheus, Grafana และ Kibana

Team: LFK Team (Fukuoka)

Product: LINE Login และ LINE Store

  • โฟกัสส่วน Regression test (คือการทดสอบโปรแกรม เมื่อมีการแก้ไข code เพื่อให้แน่ใจว่าการแก้ไขนี้จะไม่มีผลกระทบกับ code ส่วนอื่นๆที่ไม่ได้มีการแก้) กับ Test Report ของ LINE Login และ LINE Store
  • ปัจจุบันมี Regression Test Case ที่รันอยู่ ประมาณ 4000 ข้อต่อวัน
  • ทีม QA Automation ต้องดีลกับทีม Engineering (ที่ LINE เรียกทีม Developer ว่า Engineering) และ QA เป็นหลัก เช่น รับ Requirement มาจาก QA ว่าจะเทสยังไง แล้วช่วยทำ Automation Script หรือคุยกับทีม Engineering เพื่อขอให้ช่วยทำ Internal API เพื่อให้สามารถทำ Automation ได้ครบทั้ง Flow
  • โชว์ตัวอย่าง Test Report ที่ใช้ Javascript เขียนเอง โดยมีข้อมูลที่จำเป็นอย่างเช่น Test Case Name, Test Steps, Assertion และ Debug Log
  • โดยสิ่งที่จะทำถัดไป คือจะพยายามทำ Auto Create Test Environment ให้เกิดขึ้น

Team: Korea

** เนื่องจาก Speaker คุณ Yubin เค้าเพิ่งเข้ามาร่วมงานที่ LINE Korea ได้ไม่นาน เค้าเลยขอยกตัวอย่างการทำงานที่บริษัทเก่าของเค้าที่ Ericsson ว่าที่ผ่านมาเค้าเคยทำอะไรมาบ้างค่ะ

  • ใช้ Java Common Automation Tester เป็น Central ​Test Framework
  • ทีม QA Automation จะเข้ามา Involve ตั้งแต่ช่วง Design Architecture และ Test Scenario เพื่อที่จะช่วย Design Automation Test โดยโฟกัสในเรื่อง Reusability, Log Test Result ให้ครบถ้วน รวมถึงดูด้าน Exceptional Case ต่างๆ
  • Tips ในการทำ Automate Script คือพยายาม Define Dependency ของแต่ละ Test Case แล้วแยกออกมาจาก Test Method
  • การทำงานร่วมกันกับ Developers คือการพยายามทำให้ Developer เชื่อว่า Automation มีประโยชน์ และเป็นการรับผิดชอบของทีม ไม่ใช่คนกลุ่มใดกลุ่มหนึ่ง

Team: Korea

  • อะไรคือ Engineering Productivity, Testing Efficiency and Software Quality เค้าก็ยก Quote นึงของ Aristotle (384–322 B.C) ว่า “Quality is not an action, but a habit”
  • ต่อมาเค้าพูดถึง Number ว่า If you can measure, you can improve เพราะเรารู้ว่า Baseline ของเราคืออะไร แล้วเราจะทำยังไงให้มันดีขึ้นได้มากกว่าเดิมนั้น และในทางกลับกันอะไรที่เราไม่สามารถวัดได้หรือไม่สามารถทำให้มันวัดได้ เราก็จะไม่สามารถ Improve มันได้เช่นกัน
  • Framework ที่ทีมเค้าใช้คือ Spring Boot, PostgreSQL, Vue.js, Vuetify.js, Vue-chart.js และพวก Internal Cloud Service
  • ในส่วนของสิ่งที่เค้าจะทำต่อไปคือ Optimize Usability, Improve Development Environment, Improve LINE App’s Quality และอาจจะเพิ่มในส่วนของ Gather and Share Global Test Information.

Team: Vietnam

Product: LINE NEWS และ WEATHER BOT

  • 70% ของ Test Cases ทั้งหมด เป็น Automate Test แล้ว โดยทำการ Run Test จาก Multiple Devices ได้ — รันกับ 8 Devices ใช้เวลาเร็วกว่ารัน 1 Device ถึง 5 เท่า
  • Integrate กับ Testlink ในการทำ Test Report
  • Notification เข้า LINE Chat ถ้า Test Failed

Team: Taiwan

Product: LINE Today

  • ทีม QA ที่ Taiwan เค้าเทส Product LINE Today ให้กับ 4 ประเทศได้แก่ Taiwan, Thailand, Indonesia และ Hong kong Challenge หลักๆที่เค้าเจอก็จะมี เช่น
  1. UI bug เยอะ ใน QA Testing phase.
  2. ไม่ stable มีการเปลี่ยน element บ่อย ทำให้กระทบกับ UI Automate script ที่ เขียนไว้แล้ว
  • จากปัญหาเรื่องที่มันไม่ Stable เค้าก็เลยมี Tool นึงที่ชื่อว่า “Nightfort” เอาไว้ Pre-build สำหรับการรัน UI Testing และ Create End-to-End Test Case.
  • มีการใช้เทคโนโลยี Drone เพื่อมาช่วยในการทำ Continous Delivery
  • สิ่งที่กำลังทำและจะทำต่อไปคือ

1. เค้าจะใช้ Cucumber สำหรับการทำ Behaviour-Driven Development

2. Integrated Selenoid

3. Integrated Banked API in Mock Server

4. Improve Testing report

Day2. 19 Jan 2018

ส่วนใน Session วันที่ 2 จะเป็นการแบ่งกลุ่มเพื่อ Discuss กัน ซึ่งในแต่ละกลุ่มจะมี QA จากแต่ละประเทศอยู่ จะได้กระจายๆความรู้ซึ่งกันและกัน โดยแบ่งเป็น 2 หัวข้อใหญ่ดังนี้ค่ะ

Software Quality Advocate

Share your experience about co-working with engineers, or setting up the testing infrastructure!

  1. Introduce your team organization
  2. Share the approach your team wield to setup the testing environment
    (e.g. languages/libraries/software and test frameworks)
  3. The collaboration with the developer team
  4. The future work in 2018

Automatic test best practice and tips

Share your best practice and tips about automatic test

  1. Share your best practices and tips for test automation
  2. The most difficult or impressive experience that you have gone through
  3. How did your team overcome the challenges
  4. Tips about using tool efficiently (optional)

จะขอตัวอย่างคร่าวๆ ที่เปิ้ลนำเสนอออกไปว่า ปัจจุบันเปิ้ลอยู่ในทีมที่ทำ Product LINE ชื่อว่า BCRM ซึ่งเป็น Service ที่ช่วยให้ Official Account (OA) สามารถศึกษาพฤติกรรมต่างๆของ User ได้ ซึ่งจุดนี้มันช่วยให้แบรนด์จัด Target ได้ง่าย ว่าใครกำลังสนใจสินค้าและบริการอะไรเป็นพิเศษ เค้าก็จะสามารถทำการตลาดได้ดียิ่งขึ้น

ทีนี้ในแง่ของการทำงานเนื่องจากก่อนหน้านี้ ทางทีมยังไม่มีการทำ Automate Test เลย ซึ่งทำให้ทีมค่อนข้างเสียเวลามากในการรันเทสแต่ละครั้ง เพราะมีฟีเจอร์ใช้งานค่อนข้างเยอะ ดังนั้นเราเลยมีการคุยว่า เราควรจะเริ่มทำ Automate Test กันได้แล้ว

หลังจากนั้นเราก็เริ่มไปปรึกษาทีม QA automate ซึ่งเป็นทีมที่เค้าจะรับผิดชอบในการหา Tools/Framework ที่เหมาะสมของแต่ละ Product สุดท้ายก็มาลงตัวกันที่ Selenium Framework และพัฒนาโดยใช้ภาษา Java ค่ะ หลังจากนั้นก็มีเปิดตัวอย่าง Source Code และการ Run/Monitor Log ผ่าน Jenkins ให้คนอื่นๆได้ดูกัน

สำหรับ Goal ในปีนี้ สิ่งแรกที่ทีม QA ตั้งใจจะทำให้ได้คือ Optimize การทำ Test ให้ได้มากที่สุดโดยที่ใช้เวลาน้อยที่สุด เพื่อ Minimize Time-to-market และ Maximize service quality ค่ะ

สุดท้ายแล้วก็ต้องขอบคุณทุกๆคนในทีม ที่เห็นความสำคัญของการทำ Automate Test มันอาจจะใช้เวลามากซักหน่อยในช่วงแรก แต่แน่นอนว่าผลลัพท์ในระยะยาวที่ได้ มันค่อนข้างจะคุ้มค่าที่จะทำเป็นอย่างมาก

จาก Workshop ครั้งนี้ นอกจากความรู้ที่เราได้รับไม่ว่าจะเป็น ความรู้ของ Product แต่ละประเทศ และ Technique การทำงานแล้ว สิ่งที่สำคัญอีกหนึ่งอย่างคือ เราได้ทำความรู้จักกับ QA จากประเทศอื่นๆด้วย ว่าใครเป็นใคร เผื่อวันข้างหน้าจะได้มีโอกาสทำงานร่วมกันค่ะ

ส่วน Workshop ครั้งหน้า จะจัดเมื่อไหร่ ที่ไหน รอติดตามตอนถัดๆไปได้นะคะ ;)

--

--