r2 - 28 Sep 2008 - 14:52:54 - PanitaMeananeatraYou are here: SETEC Wiki >  Knowledge Web  > SoftwareEngineeringCategory > SoftwareTesting > CH16_Glass-BoxTestCaseDesignTechniques > CH16_2_BranchTesting


Branch Testing


ลักษณะการ Test Software

  • เน้นไปที่การทดสอบ case ครบทุกๆที่ ที่มีการตัดสินใจ ในโปรแกรม
  • ใช้เวลาเร็วกว่า statement testing
  • ในการตัดสินใจนั้นๆ อาจจะมี เงื่อนไขอื่นๆ เช่น or หรือ and เข้ามาเกี่ยวข้องในการตัดสินใจนั้นๆก็ได้

ข้อดี

  • ช่วยในการพิจารณา code แบบ การเช็คเงื่อนไขต่้างๆ

ข้อเสีย

  • ในการตัดสินใจนั้น อาจจะมีเงื่อนไขอื่นๆประกอบได้ เช่น or หรือ and ทำให้ case ที่ทำการทดสอบ ทดสอบไม่ครบเงื่อนไข เช่น or

ตัวอย่าง Branch Testing

เป็น source code ของ function การคำนวนราคาเช่าห้องพักโรงแรม

1 function charge_calc(checkin_date,checkout_time,late_checkout_time,room_rate){
2    today = date();
3    expected_checkout_time=12pm;
4    latest_checkout_time=6pm;
5    no_of_night=today-checkin_date;
6    if(late_checkout_time<>"None"){
7       if(late_checkout_time>expected_checkout_time)and(late_checkout_time<=lastest_checkout_time){
8          expected_checkout_time=late_checkout_time;
9       }
10   }
11   if(checkout_time>exptected_checkout_time) or (checkin_date==today){
12      no_of_nights=no_of_nights+1;
13   }
14   charge=no_of_night*room_rate;
15   return charge;
16 }   

จาก source code เราสามารถ นำมาเขียนอธิบายในรูปของ Control Flow Graph ได้ดังนี้

branch1.jpg

* อธิบาย จากรูปจะเห็นได้ว่า เราจะีมี Decision อยู่ 3 Decision คือส่วนที่เป็น Node สีแดง และมี 5 Branches ที่เป็นไปได้่

ตัวอย่างกรณีทดสอบ

Test Case
Check in date
Checkout time
Late checkout time
room rate
charge
1
12/8/2006
12.30pm
None
$85
$510

จาก Test Case ที่ 1 จะผ่าน Decision และ Branch ดังรูป

branch2.jpg

* อธิบาย จะเห็นได้ว่าผ่าน 2 Branch คือ Branch ที่ 1 และ 4 และผ่าน 2 Decision ในส่วนที่เป็นสีน้ำเงิน คิดเป็น % ได้คือ

ผ่าน 2 ใน 3 Decision หรือ 66% Decision Coverage

ผ่าน 2 ใน 5 Branch หรือ 40% Branch Coverage

จากนั้น เราจะเพิ่ม Test Case ที่ 2 เพื่อให้ครอบคลุม branch หรือ decision มากขึ้นกว่าเดิม

Test Case
Check in date
Checkout time
Late checkout time
room rate
charge
1
12/8/2006
12.30pm
None
$85
$510
2
12/8/2006
2:15pm
2:30pm
$85
$425

จาก Test Case ที่ 1(เส้นสีน้ำเงิน)และ2(เส้นสีส้ม) จะผ่าน Decision และ Branch ดังรูป

bran2.jpg

* อธิบาย จะเห็นได้ว่าผ่าน 4 Branch คือ Branch ที่ 1 3 4 และ 5 และผ่าน 3 Decision ในส่วนที่เป็นสีน้ำเงิน คิดเป็น % ได้คือ

ผ่าน 3 ใน 3 Decision หรือ 100% Decision Coverage

ผ่าน 4 ใน 5 Branch หรือ 80% Branch Coverage

จากนั้น เราจะเพิ่ม Test Case ที่ 3 เพื่อให้ครอบคลุม branch 100%

Test Case
Check in date
Checkout time
Late checkout time
room rate
charge
1
12/8/2006
12.30pm
None
$85
$510
2
12/8/2006
2:15pm
2:30pm
$85
$425
3
12/8/2006
3:15pm
11:30am
$85
$510

จาก Test Case ที่ 1(เส้นสีน้ำเงิน) , 2(เส้นสีส้ม) และ 3 (เส้นสีม่วง)จะผ่าน Decision และ Branch ดังรูป

bran3.jpg

* อธิบาย จะเห็นได้ว่าผ่าน ครับ 5 Branch พอดี คิดเป็น% ได้คือ

ผ่าน 3 ใน 3 Decision หรือ 100% Decision Coverage

ผ่าน 5 ใน 5 Branch หรือ 100% Branch Coverage

เพราะฉะนั้นจาก source code และ Control Flow Graph เราจะต้องกำหนด 3 Test Case เพื่อเข้าไป Test ให้ครอบคลุมทุกๆ Branch และ ทุกๆ Decision

References

1. Software Testing Techniques for Improving Software Quality , White Box Testing


toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
jpgjpg branch1.jpg manage 27.6 K 28 Sep 2008 - 10:42 PanitaMeananeatra  
jpgjpg branch2.jpg manage 29.8 K 28 Sep 2008 - 10:42 PanitaMeananeatra  
jpgjpg bran2.jpg manage 30.1 K 28 Sep 2008 - 10:42 PanitaMeananeatra  
jpgjpg bran3.jpg manage 29.1 K 28 Sep 2008 - 10:43 PanitaMeananeatra  
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r2 < r1 | More topic actions
 
Powered by SETEC Wiki
Copyright ©2012 by National Electronics and Computer Technology Center, NECTEC.
Ideas, requests, problems regarding SETEC Wiki? Send feedback