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

Slides:



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

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Lab Part Nattee Niparnan
โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
คืออะไร? คือ queue ที่ access element ตามความสำคัญของตัว element นั้น
Network programming Asst. Prof. Dr. Choopan Rattanapoka
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
คลาสและวัตถุ (3) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
Javascripts.
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
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 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
ทำงานกับ File และStream
โครงสร้างควบคุมการทำงาน
คำสั่งควบคุมการ ทำงาน การเขียนโปรแกรมโดยปกติ มีทั้งให้ทำงาน เป็นลำดับ ที่ละคำสั่ง บางครั้งมีการให้เปลี่ยน ลำดับในการทำคำสั่ง เพื่อให้การเขียน โปรแกรมมีประสิทธิภาพสูงสุด.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
Thread
The ServerSocket Class ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้
Method of Class อ.สุพจน์ สิงหัษฐิต
Nattapong Songneam BankAccount – Example Nattapong Songneam
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
บทที่ 3 Class and Object (2).
Software Framework & Design Pattern
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
คำสั่งแบบมีเงื่อนไข Conditional Statements
Java collection framework
Java Programming Java Structure and Datatype,Variable
การจัดวางคอมโพเนนต์กราฟิก
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
การจัดการกับความผิดปกติ
Chapter 6 Abstract Class and Interface
Timed Math Quiz. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
การเขียนโปรแกรมบนมาตรฐานเปิด โครงสร้างโปรแกรม public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”);
และการรับแจ้งข้อมูลลิขสิทธิ์ กรมทรัพย์สินทางปัญญา
Computer Programming I โดย อ.วิมลศรี เกตุโสภณ สาขาวิชาระบบสารสนเทศ
Object and classes.
การประมวลผลแบบวน ( LOOP )
การทดสอบซอฟต์แวร์ Software Testing
Basic Elements of Java&WorkShops
Package การสร้าง Package การใช้งาน Package อ.ธวัฒน์ชัย.
บทที่ 14 กลวิธีการทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
WEEK5-2: 14 SEP 2017 Input / Output Selection Statement
อินเตอร์เฟส (Interface)
ใช้สำหรับ Turbo C++ Version 3.0
Basic Java Programming
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Java Development Tools
โครงสร้างการทำงานแบบทางเลือก
พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language)
Software Evolution แบบจำลองกระบวนการพัฒนา/ผลิตซอฟต์แวร์ (Process Model) แบบจำลองใช้สำหรับชี้นำถึงกิจกรรมหลัก (key Activities) ในการพัฒนาซอฟต์แวร์ ด้วยการกำหนดรายละเอียดหรือข้อบัญญัติไว้ในแต่ละกิจกรรมในแต่ละขั้นตอนที่มีลำดับขั้นตอนการพัฒนาที่ชัดเจน.
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
บทที่ 4 ตัวแปร (Variables)
บทที่ 2 ขั้นตอนการทำงาน (Algorithm)
Starting JAVA : JAVA PROGRAMMING (การ โปรแกรมภาษาจาวา) มัลลิกา เกลี้ยงเคล้า | SC1419.
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Method and Encapsulation
การเขียนภาษาจาวาเบื้องต้น
Inheritance Chapter 07.
Overload Method and Poly Morphism
Data Structures and Algorithms 2/2561
การเขียนโปรแกรมภาษา Java (ต่อ)
ใบสำเนางานนำเสนอ:

เครื่องมือที่ใช้ 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 if (mark >= 30) { return 'D'; } else { return 'F'; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(getLetterGrade(70)); 1 2 1 2 3 4 5 6 7 8 9 10 11 12 3 4 5 6 7 8 9 10 11 12

เริ่มทำปฏิบัติการทดสอบ สร้างโปรแกรมที่ใช้ในการทดสอบ สมมติตั้งชื่อเป็น GradeUnitTest.java import static org.junit.Assert.*; import org.junit.Test; public class GradeUnitTest { @Test 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('C', Grade.getLetterGrade(30)); assertEquals('F', Grade.getLetterGrade(20)); } public void testEC() { // test the boundaries of the partitions EC assertEquals('A', Grade.getLetterGrade(100)); assertEquals('A', Grade.getLetterGrade(75)); assertEquals('B', Grade.getLetterGrade(74)); assertEquals('B', Grade.getLetterGrade(60)); assertEquals('C', Grade.getLetterGrade(59)); assertEquals('C', Grade.getLetterGrade(50)); assertEquals('D', Grade.getLetterGrade(49)); assertEquals('D', Grade.getLetterGrade(30)); assertEquals('F', Grade.getLetterGrade(29)); assertEquals('F', Grade.getLetterGrade(0)); }

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

ติดตั้งโปรแกรมที่ช่วยตรวจสอบ Path Testing (Java Code Coverage) ให้เข้าไปติดตั้ง Eclipse เวอร์ชั่น 3.5 ขึ้นไป จากนั้นติดตั้งเครื่องมือช่วยในการตรวจสอบโค้ด http://www.eclemma.org/installation.html

คำถาม 1: ให้ทำการตรวจสอบโปรแกรมว่าทำไมเกิด Defects เกิดขึ้นที่บริเวณดังกล่าว และแก้ไขจนกระทั่ง Junit test เป็นสีเขียวคือผ่านทั้งหมด คำถาม 2: ให้จดบันทึกว่าเมื่อรัน EclEmma ก่อนและหลังรันโปรแกรมว่า Code Coverage กี่เปอร์เซ็นต์

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

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

ฝึกปฎิบัติเพิ่มเติม ให้ทำการสร้าง Project การเทสโปรแกรม Calculate หน้า 41 ใน sheet lab chapter 6 และสร้างโปรแกรม Test จาก Junit ตามตารางเทสเคสหน้า 45 นศ ใช้ EclEmma ในตรวจสอบเทสเคสจาก Junit ที่สร้าง ขึ้นได้กี่เปอร์เซ็นต์