Screen Shot 2558-12-14 at 3.01.19 PM
คำถาม

เราทำการเรียกชื่อของการทดสอบผ่าน User Interface (UI) ของระบบว่าอะไร ?
คำตอบที่ได้มันจะหลากหลายมาก ๆ
ไม่ว่าจะเป็น

  • UI test
  • End-to-End test
  • Acceptance test
  • Functional test
  • System test
  • Web test
  • Selenium test

สิ่งเหล่านี้มันทำให้เกิดความมึนงงอย่างมาก
ว่าทำไมมันมีหลายคำตอบเหลือเกิน !!

ปัญหาเหล่านี้ มันทำให้เกิดความเข้าใจผิด
สำหรับการสื่อสารภายในทีม หรือ องค์กร
ดังนั้น เราน่าจะปรับเปลี่ยนบ้างนะ ?

คำถาม
จะทำการทดสอบพวก Unit test, Integration test ตอนไหนบ้าง ?
คำตอบที่ได้จะหลากหลายอีกแล้ว
พร้อมด้วยเหตุผลต่าง ๆ นานา

จากปัญหาเหล่านี้นี่เองทาง Google Testing จึงได้เสนอว่า งั้นแบ่งกลุ่มตามการทำงานดีไหม ?

แทนที่จะแบ่งตามชื่อของชนิดการทดสอบเหมือนเดิม
ซึ่งมันยากต่อการทำความเข้าใจ และ สื่อสาร
ส่วนใหญ่จะใช้การตัดสินจากประสบการณ์ และ ความเคยชิน
ดังนั้นเปลี่ยนมันใช้ข้อมูล และ การทำงานจริง ๆ ดีกว่า

โดยทำการแบ่งกลุ่มของการทดสอบเป็น 3 กลุ่ม ดังนี้

  1. Small
  2. Medium
  3. Large

ในแต่ละกลุ่มทำการจัดแบ่งด้วยข้อมูลต่าง ๆ
ซึ่งเราสามารถใช้เพื่อสรุปได้ว่า การทดสอบของเรานั้นอยู่ในกลุ่มไหน
ทำให้เราเข้าใจได้ชัดเจนมากยิ่งขึ้น
ทั้งรูปแบบการทดสอบ
ไม่ว่าจะผ่านหรือไม่ผ่านระบบ Network
ไม่ว่าจะใช้หรือไม่ใช้ Database
รวมทั้งเวลาที่ใช้ในการทดสอบ ซึ่งเราสามารถเปลี่ยนให้เข้ากับระบบได้อีกด้วย
แสดงดังรูป

Screen Shot 2558-12-13 at 8.41.13 PM

แน่นอนว่า ตารางนี้อาจจะไม่ครบทุกการทดสอบ
แต่คิดว่า น่าจะครอบคลุมในการทดสอบส่วนใหญ่ของระบบต่าง ๆ
ตอนนี้น่าจะทำให้เราสามารถกำหนด DEFINITION
หรือ คำจำกัดความของการทดสอบได้ง่าย และ ตรงกันแล้วนะ
และน่าจะช่วยปรับปรุงเรื่องการพูดคุยของคนในทีม และ องค์กรมากขึ้น !!

ดังนั้น
Small test น่าจะเป็นพวก Unit test
เป็นการทดสอบที่ใช้เวลาน้อย
ไม่ทำการใช้งานระบบ Network และ Database

Medium test น่าจะเป็นพวก Integration test
ทำการทดสอบภายในระบบเดียวกัน

Large test น่าจะเป็นพวก End-to-End test, UI test
ทำการทดสอบกับระบบภายนอก
ใช้งานผ่านระบบ Network และ Database

ถามว่าแล้วมีที่ไหนแบ่งกลุ่มการทดสอบเป็นแบบนี้บ้างล่ะ ?

เท่าที่เห็น และ ใช้งานมาก็มีใน JUnit 4 ใน Android

ซึ่งจะมี Annotation ให้ใช้ คือ

  • @Small
  • @Medium
  • @Large

จากการใช้งานทำให้เราสามารถแบ่งกลุ่มการทดสอบได้ชัดเจน
รวมทั้งแยกทดสอบได้อีกด้วย
ลองนำไปใช้งานดูครับ

 

Tags: