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

สรุปการใช้งาน Scan และ Snapshot ของ Fastlane

$
0
0

fastlane-00

fastlane-00 หลังจากที่ได้แบ่งปันการใช้งาน Fastlane เพื่อสร้างระบบ Automation สำหรับ iOS app ตั้งแต่การ compile source code, Unit testing, UI testing ไปจนถึงการ deploy ไปยัง App Store จึงทำการสรุปการใช้งานพร้อมตัวอย่างไว้นิดหน่อย ซึ่งในบทความนี้ประกอบไปด้วย
  • Scan เป็นเครื่องมือสำหรับการ compile และ ทดสอบทั้ง Unit test และ UI Test
  • Snapshot เป็นเครื่องมือสำหรับการ snapshot หน้าจอ app ใน UI Test
มาเริ่มใช้งานกันดีกว่า

1. การใช้งาน Scan

เริ่มต้นด้วยการติดตั้ง [code] $gem install scan [/code] โดยที่ Scan เข้ามาเพื่อช่วยลดความยุ่งยากของการการใช้งานผ่าน xcodebuild นั่นเอง การใช้งานก็ง่ายมาก ๆ คือ [code] $scan [/code] เพียงเท่านี้ก็จะทำการ compile และทดสอบระบบงานให้ ทั้ง Unit test และ UI test และสามารถทำการ configuration ต่าง ๆ เพิ่มได้อีกเยอะ ซึ่งแนะนำให้สร้างไฟล์ Scanfile ขึ้นมา ด้วยคำสั่ง [code] $scan init [/code] ผลการทำงานเป็นดังรูป fastlane-01 โดยผลการทำงานจะอยู่ใน folder test_output ซึ่งประกอบไปด้วย 2 ไฟล์ คือ
  1. report.html
  2. report.junit
ปล. จะมีปัญหาในการสร้าง junit report ด้วย xcpretty เมื่อชุดการทดสอบไม่ผ่าน !!

2. การใช้งาน Snapshot

สิ่งที่ทีมต้องการ สิ่งที่หลาย ๆ คนต้องการ คือ ต้องการเห็นหน้าจอการทำงานของ app ทุกขั้นตอน ว่าทำงานถูกต้องหรือไม่ ? ว่าแสดงผลถูกต้องหรือไม่ ? แน่นอนว่า สิ่งที่ดีที่สุดคือ ก็ต้องทดสอบแบบ manual นี่แหละ แต่ถ้า app มีการทำงานเยอะมาก ๆ การทดสอบแบบ manual แบบทั้งหมดต้องใช้เวลามากมาย ดังนั้นถ้ามีเครื่องมือใช้ snapshot หน้าจอการทำงานแต่ละขั้นตอนให้ล่ะ ? มันน่าจะดีไม่น้อย ซึ่ง Snapshot ก็คือ หนึ่งในเครื่องมือที่ช่วยเหลือเรื่องเหล่านี้ ที่ทำงานร่วมกับ UI test นั่นเอง ดังนั้นจำเป็นต้องเขียน UI test ขึ้นมาด้วยนะ ถึงจะใช้งาน Snapshot ได้ เริ่มต้นด้วยการติดตั้ง [code] $gem install snapshot [/code] จากนั้นทำการ initial ก่อนเริ่มใช้งานด้วยคำสั่ง [code] $snapshot init [/code] จะทำการสร้างไฟล์ Snapfile ขึ้นมา รวมทั้งไฟล์ (ตัวอย่างเป็น Swift project)
  • SnapshotHelper.swift
  • SnapshotHelper2-3.swift
ซึ่งให้นำไปใส่ไว้ในส่วน UI Test นะครับ โดยในไฟล์นั้นประกอบไปด้วย configuration ที่น่าสนใจคือ
  • Devices ที่ต้องการให้ snapshot โดยปกติก็จะทดสอบ device และ simulator ทั้งหมดที่มี
  • Languages คือภาษาที่เราต้องการให้ทดสอบ เหมาะมาก ๆ สำหรับ app ที่รองรับมากกว่า 1 ภาษา
จำนวนครั้งในการทำงานและรูปที่ได้จะเท่ากับ จำนวน Device คูณกับจำนวน Language นั่นเอง ตัวอย่างเป็นการกำหนดให้ทดสอบบน 1 device และ 2 ภาษา [code] devices([ "iPhone 6s"]) languages([ "en-US", "de-DE" ]) [/code] ทำการแก้ไข code ใน UI Test นิดหน่อย เพื่อใช้งาน Snapshot ดังนี้ [gist id="27a2501dd2c0eab1103ac7347b22b0a5" file="UITest.swift"] จากนั้นทำการ run ด้วยคำสั่ง [code] $snapshot [/code] ผลการทำงานจะสร้างไฟล์รูปภาพและ ไฟล์ HTML fastlane-02 หน้าตาของไฟล์ HTML เป็นดังนี้ fastlane-03 ปล. ถ้ามีปัญหาว่าหา folder screenshots ไม่เจอ ก็ให้ทำการสร้างให้มันไปเองนะครับ Source code ตัวอย่างอยู่ที่ Github::Up1::Demo CI iOS

มาถึงตรงนี้เราก็พร้อมจะเริ่มต้นสร้างระบบ Automation สำหรับการพัฒนา iOS app แล้วนะครับ

ได้ทั้งการ compile code ได้ทั้งการทดสอบระดับ Unit และ UI ได้ทั้งการ snapshot หน้าจอการทำงานของ app ในขั้นตอนต่าง ๆ ต่อไปก็ไปจัดการเรื่อง certificated, การสร้างไฟล์ IPA และการ deploy ...
แต่ว่าวันนี้คุณเขียน Test สำหรับ iOS app กันแล้วหรือยัง ?

Viewing all articles
Browse latest Browse all 1997

Trending Articles