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

Session เกี่ยวกับการทดสอบจากงาน WWDC 2018

$
0
0

ในงาน WWDC 2018 นั้นมี session ที่น่าสนใจเกี่ยวกับการทดสอบ app ด้วย ซึ่งที่เห็นมามีอยู่ 2 session คือ จึงทำการสรุปแบบสั้น ๆ ไว้นิดหน่อย

เรื่องแรกคือ What’s new in Testing ?

มาดูว่ามีอะไรใหม่ ๆ เกี่ยวกับการทดสอบบ้าง ประกอบไปด้วย
  • ​Code coverage
  • การจัดการชุดการทดสอบ (Test selection)
  • การกำหนดลำดับการทดสอบ (Test ordering)
  • Parallel testing
เรื่องของ Code coverage นั้น มีทั้งเรื่องการปรับปรุง performance และความถูกต้องมากขึ้น โดยขนาดของไฟล์ coverage นั้นจะเล็กลง ดังนั้นการ load และการทำงานจึงรวดเร็วขึ้น เราสามารถแยก code coverage ออกตาม target ที่ต้องการได้ ในส่วนของ Editor ก็แสดงผล code coverage ได้ดียิ่งขึ้น ถ้าเราเปิด feature นะ แสดงดังรูป มี command line ใหม่คือ xccov ช่วยทำให้สามารถง่ายต่อการ integrate เข้ากับระบบอื่น ๆ รวมทั้งสามารถออก report ในรูปแบบต่าง ๆ ได้ เช่น text และ JSON เป็นต้น ยกตัวอย่างเช่น Continuous Integration Server นั่นเอง ไปต้องไปใช้ 3-party tool อีกต่อไปแล้ว ทำไมเพิ่งคิดได้นะ แต่ก็ยังดีที่มา !! ตัวอย่างการใช้งาน มีเรื่องที่น่าสนใจคือ สามารถทดสอบแบบ random ได้ นั่นคือ จะไม่ทดสอบแบบเรียงลำดับเหมือนเดิมแล้ว เพราะว่า บางคนเข้าใจว่า การทดสอบจะทำจากบนลงล่าง หรือ ตามตัวอักษร ซึ่งไม่ดีเลย เพราะว่า มักจะเขียนชุดการทดสอบแต่ละตัวผูกกันไปมา ส่งผลให้การทดสอบไม่เสถียรและช้ามาก ๆ ดังนั้น การที่มีการทดสอบแบบ random เข้ามา ก็น่าจะช่วยให้ชุดการทดสอบมีคุณภาพมากยิ่งขึ้น ปิดท้ายด้วย Parallel Testing ปกติการทดสอบทำได้ทีละ device ที่สำคัญ device ที่กำลังทดสอบนั้น ไม่สามารถใช้งานได้ ส่งผลให้การทดสอบช้ามาก ๆ ดังนั้นใน Xcode 9 จึงเปลี่ยนใหม่ให้ทำการทดสอบแบบขนาน แต่ใช้ได้กับการทดสอบต่าง device เท่านั้นนะ !! อีกทั้งใช้งานผ่าน xcodebuild เท่านั้นนะเออ เมื่อมาถึง Xcode 10 จึงยกเครื่องเป็น Parallel Distributed Testing ใหม่ ซึ่งใช้เทคนิคการ clone simulator หรือ container ทำให้ทดสอบแบบ parallel ได้ง่ายขึ้น

เรื่องที่สองคือ Testing tips and tricks

เนื้อหาใน session นี้จะเป็น technical session สำหรับการทดสอบและ code ที่ทดสอบได้ง่าย (Testable app) รวมไปถึงเทคนิคการทดสอบ เช่นการ mocking และการนำ protocol มาใช้แยกการทำงานส่วนต่าง ๆออกจากกัน เพื่อให้สามารถทดสอบได้ง่าย ซึ่งการแนวทางในการทดสอบจะตามแนวคิดของ Pyramid Testing นั่นเอง ประกอบไปด้วย
  • ​End-to-End testing
  • Integration testing
  • Unit testing
แน่นอนว่า มี code ตัวอย่างให้ดูอีกด้วย ลองไปดูกัน น่าจะมีประโยชน์ ทั้งการทดสอบพวก REST API ทั้งการทดสอบพวก Notification ในช่วงท้าย พูดถึงเทคนิคให้การทดสอบรวดเร็วอีกด้วย ซึ่งการทดสอบที่ช้านั้น มันส่งผลต่อ productivity ของนักพัฒนาอย่างมาก ถ้าช้ามาก ๆ แล้วสุดท้ายก็ไม่มีใครอยากจะทำ ดังนั้นต้องทำให้การทดสอบมีความรวดเร็ว อีกอย่างในการทดสอบต้องไม่มีการ delay รอด้วยนะ ใครทำลงไปแล้วบ้าง ยกมือขึ้น ? สิ่งที่ควรทำมากกว่าคือ Timer และ DispatchQueue.asyncAfter รวมถึงการ mocking เรามักใช้งาน XCTNSPredicateExpectation ซึ่งมันช้า และเหมาะกับการใช้ในส่วนของ UI Testing เท่านั้น ในส่วนของ Unit Testing ไม่ควรใช้นะ แนะนำให้ใช้
  • ​XCTestExpectation
  • XCTNSNotificationExpectation
  • XCTKVOExpectation
ในการทดสอบนั้น ขั้นตอนการ launch app ก็สำคัญ ควรมีขั้นตอนการทำงานที่น้อย ๆ อะไรที่ไม่จำเป็นก็เอาออกไป เพราะว่า การทดสอบจะเริ่มได้เมื่อ app ถูก launch แล้วเท่านั้น หรือบางครั้งต้องกำหนด environment variable สำหรับการ launch argument เพื่อข้ามบางขั้นตอนไป
วันนี้เขียนชุดการทดสอบหรือยัง ? วันนี้ app ของเรานั้นง่ายต่อการทดสอบหรือไม่ ? ขอให้สนุกกับการ coding นะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles