Path Testing

Software testing ความรู้ สำหรับ Tester ผู้ทดสอบ เป็นส่วนสำคัญในการ test โปรแกรม การ ทดสอบโปรแกรมมีความรู้แนะนำไว้ในหมวดนี้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
jay_limm
PHP VIP Members
PHP VIP Members
โพสต์: 4935
ลงทะเบียนเมื่อ: 02/06/2014 9:58 am

Path Testing

โพสต์โดย jay_limm » 06/06/2014 2:45 pm

Path testing : เป็นวิธีการทดสอบโดยอาศัยเส้นทางเป็นตัวช่วยในการออกแบบเส้นทาง จะต้องทดสอบทุกๆ คำสั่ง และทุกๆ ทางเลือกที่เป็นไปได้ แต่การทดสอบทุกๆทางเลือกนั้นเป็นไปได้ยาก ดังนั้นจึงมี test criteria เป็นตัววัดว่าการทดสอบทำได้ระดับไหน

- Path testing: เป็นการทดสอบในทุกๆเส้นทางที่เป็นไปได้ตลอดทั้งโปรแกรม ตั้งแต่เริ่มจนจบโปรแกรม ถ้าทำได้จะเรียกว่า 100% path coverage เรียกสั้นๆว่า path coverage หรือ ทดสอบได้ระดับ C3 เป็นวิธีที่ดีที่สุด แต่ทำได้ยากที่สุด โดยเฉพาะโปรแกรมใหญ่ๆ

- Branch testing: เป็นการทดสอบเท่าที่จำเป็น เพื่อให้แน่ในว่าทุกทางเลือก(branch) เช่น if-then-else หรือ case statement ได้ทดสอบอย่างน้อยหนึ่งครั้ง ถ้าทดสอบได้ทุกทางเลือกจนครบจะเรียกว่า 100% branch coverage เรียกสั้นๆว่า branch coverage ,link coverage หรือ ทดสอบได้ระดับ C2

- Statement testing: เป็นการทดสอบโดยการรันทุกๆ คำสั่งภายในโปรแกรมอย่างน้อย 1 ครั้ง ถ้าทดสอบได้ครบจะเรียกว่า 100% statement coverage เรียกสั้นๆว่า statement coverage ,note coverage หรือ ทดสอบได้ระดับ C1 เป็นวิธีที่น่าเชื่อถือน้อยที่สุด

07-criteria.PNG
07-criteria.PNG (18.08 KiB) เปิดดู 401 ครั้ง


จากรูป มีทางเลือก(branch) อยู่ 2 จุด คือ node 2 กับ node 5 มีเส้นทางที่เป็นไปได้ 4 เส้นทาง
การทดสอบแบบ Path Testing(C3): ถ้าจะทำการทดสอบได้ระดับนี้ต้องทำการทดสอบให้ได้ 4 เส้นทาง(ต้องทำทุกเส้นทางที่เป็นไปได้)
>>1-2-3-5-6-8-9
>>1-2-3-5-7-8-9
>>1-2-4-5-6-8-9
>>1-2-4-5-7-8-9
การทดสอบแบบ Branch Testing(C2): ถ้าจะทำการทดสอบได้ระดับนี้ต้องทำการทดสอบอย่างน้อย 2 เส้นทาง(ต้องผ่านทางเลือกทุกทางอย่างน้อย 1 ครั้ง)
>>1-2-3-5-6-8-9
>>1-2-4-5-7-8-9
การทดสอบแบบ Statement Tesring(C1): ถ้าจะทำได้ระดับนี้ต้องทำการทดสอบอย่างน้อย 1 เส้นทาง
>>1-2-3-5-6-8-9

ตัวอย่างจากรูปจะเห็นได้ว่าเส้นทางใน C1,C2,C3 จะซ้ำกัน
ซึ่งในการทำการทดสอบนั้น หากทำการทดสอบแบบ C3 แล้ว จะถือว่าครอบคลุุมการทดสอบแบบ C1 และ C2 ด้วย ในทำนองเดียวกัน หากทำการทดสอบแบบ C2 แล้ว จะถือว่าครอบคลุมการทดสอบแบบ C1 ด้วย



ในการทดสอบเราสามารถตรวจสอบจาก coverage table ได้ว่าทดสอบถึงจุดไหนแล้ว โดยดูว่า แต่ละ process-link ถูกทดสอบแล้วหรือยัง ถ้าทำครบทุก process-link แล้ว แสดงว่าทดสอบถึงระดับ C1 หรือว่า statement coverage นอกจากนี้ยังสามารถดูได้ว่าทดสอบ Decision ครบ ทั้ง Y และ N แล้วหรือยัง ถ้าทดสอบครบแล้วแสดงว่าผ่านการทดสอบระดับ C2 หรือ branch coverage แล้ว

แนวทางในการเลือกเส้นทางมีดังนี้
- เลือกเส้นทางที่ง่ายที่สุดก่อน (เริ่มโปรแกรมจนสิ้นสุดโปรแกรม)
- เส้นทางต่อไปควรเลือกเส้นทางที่ต่างออกไปเพียงเล็กน้อย โดยอาจจะเปลี่ยนแค่ 1 จุด เช่น decision ควรเลือกเส้นทางที่ไม่มี loop หรือเส้นทางที่ซับซ้อนน้อยว่าโดยต้องเลือกให้สอดคล้องกับฟังก์ชันการทำงาน
- สำหรับเส้นทางที่ไม่สอดคล้องกับการทำงานของฟังก์ชัน ให้เลือกเฉพาะกรณีที่จำเป็นให้ผ่าน criteria ที่กำหนดไว้เท่านั้น

07-path testing.PNG
07-path testing.PNG (44.84 KiB) เปิดดู 400 ครั้ง

ตัวอย่าง control flowgraph ของโปรแกรม

07-coverage table.PNG
07-coverage table.PNG (43.49 KiB) เปิดดู 400 ครั้ง

ตัวอย่าง coverage table ของ control flowgraph ด้านบน
บางที Bug ก็ไม่มีเหตุผล และไม่ต้องการคำจำกัดความ

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 3 และ บุคคลทั่วไป 0 ท่าน