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 (18.08 KiB) Viewed 1977 times
จากรูป มีทางเลือก(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 (44.84 KiB) Viewed 1976 times
ตัวอย่าง control flowgraph ของโปรแกรม
- 07-coverage table.PNG (43.49 KiB) Viewed 1976 times
ตัวอย่าง coverage table ของ control flowgraph ด้านบน
[u][b]Path testing[/b][/u] : เป็นวิธีการทดสอบโดยอาศัยเส้นทางเป็นตัวช่วยในการออกแบบเส้นทาง จะต้องทดสอบทุกๆ คำสั่ง และทุกๆ ทางเลือกที่เป็นไปได้ แต่การทดสอบทุกๆทางเลือกนั้นเป็นไปได้ยาก ดังนั้นจึงมี test criteria เป็นตัววัดว่าการทดสอบทำได้ระดับไหน
- [u]Path testing:[/u] เป็นการทดสอบในทุกๆเส้นทางที่เป็นไปได้ตลอดทั้งโปรแกรม ตั้งแต่เริ่มจนจบโปรแกรม ถ้าทำได้จะเรียกว่า 100% path coverage เรียกสั้นๆว่า path coverage หรือ ทดสอบได้ระดับ C3 เป็นวิธีที่ดีที่สุด แต่ทำได้ยากที่สุด โดยเฉพาะโปรแกรมใหญ่ๆ
- [u]Branch testing:[/u] เป็นการทดสอบเท่าที่จำเป็น เพื่อให้แน่ในว่าทุกทางเลือก(branch) เช่น if-then-else หรือ case statement ได้ทดสอบอย่างน้อยหนึ่งครั้ง ถ้าทดสอบได้ทุกทางเลือกจนครบจะเรียกว่า 100% branch coverage เรียกสั้นๆว่า branch coverage ,link coverage หรือ ทดสอบได้ระดับ C2
- [u]Statement testing:[/u] เป็นการทดสอบโดยการรันทุกๆ คำสั่งภายในโปรแกรมอย่างน้อย 1 ครั้ง ถ้าทดสอบได้ครบจะเรียกว่า 100% statement coverage เรียกสั้นๆว่า statement coverage ,note coverage หรือ ทดสอบได้ระดับ C1 เป็นวิธีที่น่าเชื่อถือน้อยที่สุด
[attachment=2]07-criteria.PNG[/attachment]
จากรูป มีทางเลือก(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 ที่กำหนดไว้เท่านั้น
[attachment=1]07-path testing.PNG[/attachment]
ตัวอย่าง control flowgraph ของโปรแกรม
[attachment=0]07-coverage table.PNG[/attachment]
ตัวอย่าง coverage table ของ control flowgraph ด้านบน