Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

การทดสอบ Flutter app

$
0
0

จากการแบ่งปันเรื่อง การทดสอบ Mobile app ด้วย Appium นั้น
ซึ่งก็มี Flutter app ที่มีปัญหาเยอะพอควร
ซึ่งอธิบายไว้ใน blog บันทึกการแบ่งปันเรื่อง Mobile testing ด้วย Appium
แต่ก็มีคำถามว่า
ถ้าจะให้ทดสอบง่าย ๆ ขึ้นหน่อยทำอย่างไรได้บ้าง
จึงตอบไปดังนี้

คำตอบสั้น ๆ คือ ไม่ทดสอบแบบนี้ไง
เพราะว่าการใช้ Applium + Flutter driver เป็นการทดสอบแบบ external testing
หรือจะเรียกว่า black box หรือ gray box ก็ว่ากันไป
ซึ่งกว่าจะทดสอบได้นั้น ก็มีขั้นตอนที่เยอะ และ ซับซ้อน
แต่ก็มีข้อดีของมัน นั่นคือ เหมือนหรือคล้ายการใช้งานของผู้ใช้งานจริง ๆ นั่นเอง

แต่ถ้าจะให้ดี น่าจะเพิ่มการทดสอบเหล่านี้เข้าไป
ซึ่งใน Flutter ก็อธิบายไว้คือ Testing Flutter App
โดยมีการทดสอบ 3 แบบคือ

  • Unit test
  • Widget test
  • Integration test

ทั้ง 3 แบบนั้น ต้องเขียน code ด้วยภาษา dart + flutter นั่นเอง
ซึ่งผมมองว่าเป็น internal testing หรือ white box ก็แล้วกัน
อาจจะไม่ค่อยสร้างความมั่นใจสักเท่าใด ในมุมมองของผู้ใช้งาน
แต่ผมว่าในมุมมองของนักพัฒนามันสำคัญมาก ๆ
เพื่อช่วยทำให้เรามั่นใจว่า App ที่เราสร้าง หรือ feature ที่เพิ่มเข้ามานั้น
ในแต่ละ feature ยังคงทำงานได้ตามที่เราคาดหวังไว้เสมอ
ก็ที่จะทำการ build app ต่อไปอีกที

โดยตัวที่ผมมักให้แต่ละคนเริ่มเขียนมากที่สุดคือ Widget test

เพื่อช่วยให้เข้าใจการออกแบบ และ ทำงานของแต่ละ Widget
ก่อนที่จะนำหลาย ๆ Widget มาประกอบ และ ทำงานร่วมกัน
ดังนั้น ตั้งแต่การสร้าง เมื่อเกิด event/action ใด ๆ กับ Widget
เราสามารถทดสอบได้หมดผ่าน WidgetTester

ส่วนพวก Dependency ต่าง ๆ ก็สามารถใช้งาน Mock library ได้
เช่น Mockito เป็นต้น
อาจจะวุ่นวายหน่อยในช่วงแรก
แต่จะทำให้เราเข้าใจการทำงานของ Widget
รวมทั้งสามารถกำหนดขอบเขตการทำงานของกลุ่ม Widget ที่เราต้องการอีกด้วย
ไม่ใช่เขียน หรือ สร้างไปเรื่อย ๆ แล้วหวังว่าจะทำงานได้ตามที่เราต้องการ

เมื่อ Widget test ผ่านแล้ว ก็มาถึงการทดสอบแบบ Integration test

เป็นการทดสอบแบบผ่าน device หรือ emulator/simulator เลย
เป็นการทดสอบในภาพรวมการทำงานของ App กันเลย
ดังนั้นจึงน่าจะทำให้เชื่อมั่นขึ้นมาอีก
แต่แน่นอนว่า ก็จะช้าลงไปอีก จึงต้องทำความเข้าใจว่า เราจะทดสอบ flow อะไรบ้าง

เน้นย้ำว่า ทั้ง 3 แบบการทดสอบนั้น จำเป็นต้องเขียน code

ดังนั้นจำเป็นต้องฝึก skill การ coding ด้วยภาษา dart และ flutter กันด้วย
อย่างไปกลัวว่าต้องเขียน code เพราะว่ายังไงก็หนีไม่พ้น
ส่วนคนที่เขียน code ก็มาเพิ่ม skill การทดสอบกันด้วย
น่าจะช่วยให้เราป้องกันไม่ให้เกิด bug หรือ ข้อผิดพลาดได้อย่างรวดเร็ว
แต่ถ้าเกิดข้อผิดพลาดแล้ว เราจะไม่ผิดซ้ำที่เดิมอีกต่อไป


Viewing all articles
Browse latest Browse all 1997

Trending Articles