งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Unit Testing (Lab 6) เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป โดย อ. วรารัตน์ รุ่งวรวุฒิ รายวิชา 322 235 Software Testing ภาควิชาวิทยาการคอมพิวเตอร์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Unit Testing (Lab 6) เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป โดย อ. วรารัตน์ รุ่งวรวุฒิ รายวิชา 322 235 Software Testing ภาควิชาวิทยาการคอมพิวเตอร์"— ใบสำเนางานนำเสนอ:

1 Unit Testing (Lab 6) เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป โดย อ. วรารัตน์ รุ่งวรวุฒิ รายวิชา Software Testing ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น

2 เกี่ยวกับ Junit เครื่องมือที่ใช้ช่วยในการทำ unit test สำหรับภาษา Java เขียนโดย Erich Gamma และ Kent Beck เป็น framework เป็น open source

3 ประโยชน์ของ Junit เป็น framework ที่เป็นมาตรฐานที่จะช่วยให้ การทำงานของ code มีประสิทธิภาพมากขึ้น ◦ สามารถทำงานแบบอัตโนมัติ ◦ สามารถทดสอบได้บ่อยเท่าที่ต้องการ ◦ ไม่มีผลกระทบต่อภายในโปรแกรมเพราะว่าทดสอบ เฉพาะส่วน Input และ Output ของโปรแกรม เท่านั้น หมายเหตุ ความเข้าใจผิดสำหรับ Junit คือ ไม่ได้ช่วยแก้ bug แต่ช่วยหาข้อบกพร่องของ code ที่ programmer เขียนเอาไว้

4 เริ่มทำปฏิบัติการทดสอบ สมมติว่าเราต้องการทดสอบ โปรแกรมการตัด เกรด Grade.java public class Grade { public static char getLetterGrade(int mark) { if (mark >= 75) { return 'A'; } else if (mark >= 60) { return 'B'; } else if (mark > 50) { return 'C'; } else { return 'F'; }

5 ให้เข้าไปติดตั้ง Eclipse เวอร์ชั่น 3.5 ขึ้นไป จากนั้นติดตั้งเครื่องมือช่วยในการตรวจสอบ โค้ด เริ่มทำปฏิบัติการทดสอบ

6 เริ่มทำปฏิบัติการทดสอบ สร้างโปรแกรมที่ใช้ในการทดสอบ สมมติตั้งชื่อเป็น GradeUnitTest.java import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class GradeUnitTest extends TestCase { public GradeUnitTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); }

7 เริ่มทำปฏิบัติการทดสอบ public void testTypical() { // test a typical value in partitions EC assertEquals('A', Grade.getLetterGrade(95)); assertEquals('B', Grade.getLetterGrade(72)); assertEquals('C', Grade.getLetterGrade(55)); assertEquals('F', Grade.getLetterGrade(30)); } public void testBoundaries() { // test the boundaries of the partitions BVA assertEquals('A', Grade.getLetterGrade(75)); assertEquals('A', Grade.getLetterGrade(100)); assertEquals('B', Grade.getLetterGrade(60)); assertEquals('B', Grade.getLetterGrade(74)); assertEquals('C', Grade.getLetterGrade(50)); assertEquals('F', Grade.getLetterGrade(0)); assertEquals('F', Grade.getLetterGrade(49)); } สามารถสร้างเมท็อดเพื่อทำการทดสอบแบบ EC หรือ BVA

8 เริ่มทำปฏิบัติการทดสอบ public static Test suite() { // For putting into a TestSuite. return new TestSuite(GradeUnitTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(GradeUnitTest.class); }

9 บริเวณที่บอก ชุดการ ทดสอบว่า ผ่านหรือไม่

10 ให้ทำการตรวจสอบโปรแกรมว่า ทำไมเกิด Failure เกิดขึ้น 1 ตัวที่ บริเวณ

11 บริเวณที่บอก ชุดการ ทดสอบผ่าน ทุกชุดทดสอบ

12 เมท็อดที่ใช้ในการทดสอบ setUp() และ tearDown() การสร้าง unit test นั้นเรามักจะมีการกำหนดค่าหรือ เปลี่ยนแปลงค่าของตัวแปรเพื่อทดสอบ method นั้นๆ ใน บางครั้งอาจจะมี method ที่ใช้ตัวแปรร่วมกัน ซึ่งอาจจะทำ ให้การทดสอบผิดพลาดได้ ดังนั้นเราจะใช้ method ที่ชื่อ setUp() และ tearDown() มาช่วยแก้ไขปัญหานี้ setUp() ใช้ในการกำหนดค่าเริ่มต้นให้กับตัวแปร

13 เมท็อด SetUp(); และ tearDown(); JUnit แต่ละหน่วย เวลาจะทดสอบจะต้องถูกแยกทดสอบ จากกันอย่างอิสระ ผลการทดสอบ unit หนึ่ง จะต้องไม่ส่งผล กระทบ หรือสร้างการขึ้นต่อกันต่ออีก unit หนึ่ง เพราะฉะนั้น หากเราใช้ตัวแปรร่วมกันระหว่าง unit ต่างๆ ตัวแปรเหล่านั้น ควรจะถูก reset ค่ากลับไปยังค่าตั้งต้นเสมอ ส่วนการ teardown จะเอาไว้ใช้ในกรณีหากใน setup มีการ ไปเรียกใช้ resource ภายนอก เช่นการติดต่อ IO ส่วน teardown ก็จะเป็นที่ไว้เก็บงาน เช่น close IO connection ที่ เปิดค้างเอาไว้ จากตัวอย่างที่ยกมา เวลาสั่ง run ทั้ง class setUp(); testTypical(); tearDown(); setUp(); testBoundaries(); tearDown();

14 เมท็อดที่ใช้ในการทดสอบ Assert Method เป็น method หนึ่งใน JUnit ที่มีประโยชน์มากในการช่วย ตรวจสอบ Test case ของเราซึ่งจะแจ้งเตือนทันทีเมื่อเรา run test แล้วผลที่ออกมาไม่ตรงกับที่เราคาดหวัง ชื่อ assert ผลลัพธ์ที่คาดหวัง assertTrue() เมื่อเราคาดหวังให้ผลลัพธ์เป็น true assertFalse() เมื่อเราคาดหวังให้ผลลัพธ์เป็น false assertNull() เมื่อเราคาดหวังให้ผลลัพธ์เป็น null assertNotNull() เมื่อเราคาดหวังให้ผลลัพธ์ไม่เป็น null assertEquals() เมื่อเราคาดหวังให้ผลลัพธ์ออกมาเท่ากัน assertSame() เมื่อเราคาดหวังให้ผลลัพธ์ออกมาเป็น object เดียวกัน assertNotSame() เมื่อเราคาดหวังให้ผลลัพธ์ออกมาเป็นคนละ object กัน Fail() เมื่อเราคาดหวังให้ผลลัพธ์ออกมาเป็น Fail เสมอ


ดาวน์โหลด ppt Unit Testing (Lab 6) เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป โดย อ. วรารัตน์ รุ่งวรวุฒิ รายวิชา 322 235 Software Testing ภาควิชาวิทยาการคอมพิวเตอร์

งานนำเสนอที่คล้ายกัน


Ads by Google