Screen Shot 2558-10-19 at 9.15.15 PM
เนื่องจากทีมพัฒนา Android app ส่วนใหญ่นั้น
ไม่นิยมทำการทดสอบแบบอัตโนมัติเท่าไร !!

แต่นิยมทดสอบแบบอัตโนมือกันมากกว่า
หรือทดสอบแบบ manual นั่นเอง

ดังนั้น จึงขอลองทำการ review app หน่อยว่า
ถ้านำมาทดสอบแบบอัตโนมัติแล้ว
มันจะยาก หรือ ง่าย ?

โดย app แรกที่ขอทดสอบ คือ StoryLog

มาดูรายละเอียดแบบ X-Ray แต่ละหน้ากันไปเลย

เป็นข้อมูลเชิงเทคนิคในฝั่ง Layout ของระบบ
โดยใช้งานผ่าน library ชื่อว่า Calabash

หน้าแรกของระบบ

ประกอบไปด้วย element จำนวน 17 element
มี element ที่ผู้ใช้งานสามารถกดได้ คือ

  • btn_facebook สำหรับ Login ด้วย facebook account
  • btn_learn_more สำหรับดูรายละเอียดของระบบ
  • btn_sign_in สำหรับ sign in เข้าระบบ

โดยที่ element ทั้ง 3 element นั้นทำการตั้งชื่อ id
ด้วยรูปแบบ Snake case
ซึ่งน่าจะเป็นข้อตกลงของทีมพัฒนานั่นเอง !!

ส่วน btn น่าจะย่อมาจาก Button

หน้าที่สอง ทำการ sign in เข้าระบบ

จะอยู่ในหน้าเดิม แต่จะเพิ่มมาอีก 2 element คือ

  • edt_email แต่หน้าจอแสดงว่า USERNAME !!
  • edt_password สำหรับกรอกข้อมูล password

ส่วน edt น่าจะย่อมาจาก Edit Text

ดังนั้นจึงลองทำการ sign in เขาระบบหน่อยสิ

หน้าที่สาม STORIES FOR YOU

มี element ทั้งหมด 39 element
ส่วนหลัก ๆ ที่น่าสนใจ คือ

  • btn_create_story สำหรับการสร้าง story ใหม่
  • btn_search สำหรับค้นหา story ที่ต้องการ
  • ใช้งาน SwipeRefreshLayout สำหรับการ load data
  • ส่วนหลักในการแสดงผลคือ List View ชื่อว่า list_view
  • โดยแต่ละแถวใน List View มี element ต่าง ๆ ดังนี้
    • cover_image
    • img_story_badge
    • img_icon_category
    • txt_title
    • txt_content
    • author_container ประกอบไปด้วย
      • profile_image
      • txt__author_name ทำไมมี underscore 2 ตัวติดกันนะ !!
      • txt_author_role
      • txt_publish_time
      • txt_recommended

img น่าจะย่อมาจาก Image
txt น่าจะย่อมาจาก TextView

หน้าที่สี่ MY PROFILE

มี element ทั้งหมด 56 element
เยอะกว่าหน้าอื่น ๆ เนื่องจากในหน้านี้มีเมนูให้เลือกเยอะนั่นเอง
ซึ่งแสดงใน List View
ดังนั้น การทดสอบจึงต้องใช้ข้อมูล
ที่อยู่ใน property text ของแต่ละ element ใน listview

หน้าที่ห้า Create Story

มี element ทั้งหมด 20 element
โดยมี element ที่น่าสนใจดังนี้

  • cover_image
  • upload_cover_button
  • editor เป็นจุดที่น่าสนใจของหน้านี้ ซึ่งพัฒนา editor การเขียน story ขึ้นมาเองชื่อว่า co.storylog.storylog.modules.writer.StoryEditor ซึ่งเป็น Web View นั่นเอง
  • เมื่อเขียนแล้วจะมีอีก 3 element คือ
    • toggle_bold สำหรับตัวอักษรหนา
    • toggle_quote สำหรับการ quote
    • toggle_hr สำหรับใส่เส้นบรรทัด

ต้องทำการ tab ที่ editor ก่อน จึงจะเห็น element ย่อย ๆ ของ editor
ซึ่งการทดสอบส่วนนี้ไม่ง่ายเลย

แถมต้องใส่ข้อมูล 300 ตัวอักษรขึ้นไป
ดังนั้น สำหรับ mobile แล้ว ไม่ใช่เรื่องที่ง่ายเลยใช่ไหมนะ ??

หน้าถัดไปเมื่อกดปุ่ม NEXT แล้ว

จะมี element ทั้งหมด 38 element
สำหรับใส่ข้อมูล tag, categoey และ ลิขสิทธิ์ ดังนี้

  • btn_publish สำหรับการ publish story
  • tag_box สำหรับใส่ tag
  • story_cat_spinner ตรง cat น่าจะเป็น category
  • category_type
  • category_name
  • new_book_panel
  • new_book_editText เป็นรูปแบบการตั้งชื่อที่ไม่เข้าพวก
  • cc_label, first_cc_type, second_cc_type เกี่ยวกับการกำหนดลิขสิทธิ์
  • cc_desc ตรง desc น่าจะเป็น description
  • post_to_fb_tv ตรง tv น่าจะย่อมาจาก Text View
  • post_to_fb_toggle สำหรับการ post ไปยัง facebook หรือไม่

โดยรวมแล้ว

  • รูปแบบการตั้งชื่อมีมาตรฐาน และ ข้อตกลงร่วมกันดี ถึงแม้จะมีผิดไปบ้าง
  • ถ้าใช้ชื่อเต็ม ๆ ไปเลยจะดีกว่า เช่น button ,textview, edittext หรือ textfield และ image เป็นต้น
  • App สวย เรียบ
  • App ใช้งานง่าย ลื่นดี
  • App นี้สามารถทำการทดสอบแบบอัตโนมัติได้ง่ายมาก ยกเว้นส่วนของ Editor

VDO ของการทดสอบ App แบบอัตโนมัติ

  • การ sign in เข้าใช้ระบบ
  • การสร้าง story
  • การดูข้อมูลในแต่ละส่วน
  • การ sign out ออกจากระบบ

จากการทดสอบเขียน Automated test ของ app นี้พบปัญหาดังนี้

  • การทดสอบการแสดงผลด้วย Tab ไม่ง่ายเท่าไร แต่ใช้งานง่ายดี
  • ไม่สามารถกดปุ่ม logout ได้ในบางครั้ง เนื่องจากเจอ HTTP 401 บ่อยมาก ( Unauthorized )
  • ในส่วนของ editor สำหรับการเขียน story จะทดสอบยากพอควร เนื่องจากเป็น Web View
  • ในส่วนของ editor นั้น ผมจินตนาการถึงความสนุกในการทดสอบจริง ๆ !!
  • พบว่า app ทำการ print log ต่าง ๆ ออกมาทาง console ซึ่งน่าจะปิดไว้ดีกว่า

สุดท้ายนี้
ขออภัยอย่างสุดซึ้ง กับข้อมูลทดสอบครับที่ผมสร้างขึ้นมาครับ [ลบข้อมูลทดสอบไปแล้ว]
และการ review ครั้งนี้ ทำเพื่อดูว่า StoryLog app นั้น
สามารถนำไปสร้าง Automated Testing ได้ง่าย หรือ ยากเท่านั้น