เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Lab Part Nattee Niparnan
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
การจัดการความผิดพลาด
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
LAB 1 ให้นักศึกษาเขียน Flowchart โดยใช้โปรแกรม Microsoft Word วาดรูป Flowchart ส่ง Flowchart ที่วาดเสร็จแล้วในชั่วโมง และ print ใส่กระดาษ ส่งในครั้งหน้า.
การรับค่าและแสดงผล.
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
บทที่ 3 ตอนที่ 1 คำสั่งเงื่อนไขและการตัดสินใจ(p
ขั้นตอนการพัฒนาโปรแกรม
File.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ตัวแปรชุด.
ครั้งที่ 7 Composition.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การสืบทอด (Inheritance)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 4 Method (1).
OOP (Object-Oriented Programming)
Flowchart รูปแบบ If ซ้อน If ก็คือ การเอา If ไปไว้ใน If ทางฝั่ง True  โดยโครงสร้าง If ซ้อน If นั้นเอาไว้ใช้กับ กรณีตรวจสอบเงื่อนไขที่มากกว่า 2 กรณี เพราะเนื่องจาก.
Lecture 9 Class (คลาส) To do: Hand back assignments
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Algorithm มหาวิทยาลัยเนชั่น Java Pre-Test 49 (Series 1, 2 )
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
บทที่ 6 เมธอด.
ทำงานกับ File และStream
Introduction to C Language
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
โปรแกรมภาษาจาวาเบื้องต้น Basic Java Programming 3(2-2-5)
Method of Class อ.สุพจน์ สิงหัษฐิต
บทที่ 1.1 แนะนำรายวิชา.
Computer Programming for Engineers
Week 7 การเขียนโปรแกรมเบื้องต้น
2.1 วิธีแก้ปัญหาด้วยคอมพิวเตอร์ (Computer problem solving methods)
Object-Oriented Programming
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
Java collection framework
Java Programming Java Structure and Datatype,Variable
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
การจัดวางคอมโพเนนต์กราฟิก
หลักการเขียนโปรแกรม ( )
Java Network Programming 1
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
การกระทำทางคณิตศาสตร์
Debugging กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
การจัดการกับความผิดปกติ
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
บทที่ 3 การสืบทอด (Inheritance)
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
ใบสำเนางานนำเสนอ:

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

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

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

เริ่มทำปฏิบัติการทดสอบ สมมติว่าเราต้องการทดสอบ โปรแกรมการตัดเกรด 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'; }

เริ่มทำปฏิบัติการทดสอบ ให้เข้าไปติดตั้ง Eclipse เวอร์ชั่น 3.5 ขึ้นไป จากนั้นติดตั้งเครื่องมือช่วยในการตรวจสอบโค้ด http://www.eclemma.org/installation.html

เริ่มทำปฏิบัติการทดสอบ สร้างโปรแกรมที่ใช้ในการทดสอบ สมมติตั้งชื่อเป็น 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();

เริ่มทำปฏิบัติการทดสอบ สามารถสร้างเมท็อดเพื่อทำการทดสอบแบบ EC หรือ BVA 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));

เริ่มทำปฏิบัติการทดสอบ 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);

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

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

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

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

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

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