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

[iOS] เราจะทำการจำลอง API server สำหรับ UI testing อย่างไร

$
0
0

คำถามที่น่าสนใจจากทีมเกี่ยวกับจำลอง API server เพื่อทดสอบ UI test สำหรับ iOS app จะทำอย่างไรดี ? คำตอบง่าย ๆ คือ ง่าย ๆ ให้ทำการส่ง url ของ API server ผ่าน environment variable สิเออ !!! พูดแบบนี้อาจจะไม่เห็นภาพ ดังนั้นมาดู code กันหน่อย

ใน UI Test ทำการกำหนดค่าของ url ไว้และใช้งานดังนี้

[gist id="1fe96a5bf11ea512575f5bd96ed3e43e" file="1.swift"] เป็นวิธีการที่ง่ายมาก ๆ เพราะว่าใน UI Test นั้นใช้งาน Mock สิ่งต่าง ๆ ก็ใช้ไม่ได้ จึงต้องส่งค่าบางอย่างเข้าไป จากนั้นต้องเขียน code เพิ่มเพื่อให้เราสามารถควบคุม dependency ต่าง ๆ ได้ เช่นอาจจะส่งค่าบางอย่างเข้าไป จากนั้นใน production ก็ทำการตรวจสอบ เพื่อทำการ Mock class บางตัวให้ทำงานตรงตามที่ต้องการ หรือไม่เช่นนั้นก็ทำการจำลอง API server ขึ้นมาแทนด้วย Stubby4j เป็นต้น ซึ่งวิธีการนี้ก็พอไปวัดไปวาได้

คำถามคือมีวิธีการอื่นอีกไหม ?

ตอบเลยว่ามีนะ คือ การเพิ่ม configuration สำหรับ UI test ใน xCode project เลย ซึ่งสามารถทำการสร้าง configuration ใหม่ขึ้นมา จากตัวอย่างชื่อว่า Localhost แสดงดังรูป   จากนั้นทำการกำหนดค่า LOCALHOST เพื่อส่งไปยัง production code   จากนั้นในส่วนของการทดสอบให้เลือกใช้ configuration Localhost ซะ จากนั้นใน production code ให้เขียน code ประมาณนี้ ตรวจสอบว่า run จาก configuration อะไร จากนั้นก็ทำการกำหนด URL ที่เราต้องการได้ทันที [gist id="1fe96a5bf11ea512575f5bd96ed3e43e" file="2.swift"] ทำไมมันช่างซับซ้อนอย่างนี้นะ !!

ข้อเสียที่เห็นได้ชัดเจนจากวิธีการทั้งสองนี้คือ

ต้องเขียน code เพิ่มเติมเพื่อจัดการตามค่าของ environment variable นั่นเอง ซึ่งเป็น code ที่ไม่ควรอยู่ในส่วนของ production code เลย !!

อีกส่วนคือ API server ที่จำลองขึ้นมาด้วย Stubby4j

มันต้อง start อยู่เสมอด้วยนะ คำถามคือจะแก้ไขอย่างไรดีละ ? ตอบง่าย ๆ คือ เพิ่ม Pre-action และ Post-action ในส่วนของ Test นะครับ เพื่อทำการ start server ก่อนการทดสอบ เพื่อทำการ stop server หลังจากที่ทดสอบเสร็จสิ้น แต่ต้องเขียน shell script นิดหน่อย แสดงดารใช้งานดังรูป

คำถามต่อมาคือ มีอะไรที่คล้าย ๆ กับ MockWebServer หรือไม่ ?

คำตอบก็มีนะเช่น ขอให้สนุกกับการเขียน code ครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles