การทำ EasyTest ด้วย JUnit

Software testing ความรู้ สำหรับ Tester ผู้ทดสอบ เป็นส่วนสำคัญในการ test โปรแกรม การ ทดสอบโปรแกรมมีความรู้แนะนำไว้ในหมวดนี้

Moderator: mindphp, ผู้ดูแลกระดาน

M033
PHP Jr. Member
PHP Jr. Member
โพสต์: 23
ลงทะเบียนเมื่อ: 26/01/2016 10:14 am

การทำ EasyTest ด้วย JUnit

โพสต์ที่ยังไม่ได้อ่าน โดย M033 »

ในการเขียน test ด้วย #junit นั้นมี feature ต่างๆ ที่น่าสนใจหลายๆ ตัว หนึ่งในนั้น คือ การใช้ @Repeat และ @Duration สำหรับการวน loop เพื่อทำการเรียกแต่ละ test case ซ้ำๆ ซึ่งถูกใช้งานรวามกับการทำ Data-Driven testing เสมอ โดยสามารถนำไปประยุกต์ใช้สำหรับทำ Load testing ได้อีกด้วย
และ #EasyTest นั้นยังมีความสามารถอื่นๆ อีก เช่น
  • -อ่านข้อมูลจากไฟล์ Microsoft Excel, JSON, XML
    -การใช้งานผ่าน Dependency Injection
    -การแสดงรายงานการทดสอบ
    -ทดสอบแบบคู่ขนาน
    -สามารถใช้ร่วมงานกับ Spring framework
มาดูตัวอย่างการใช้งาน EasyTest
การใช้งาน module ที่ชื่อว่า EasyTest นั้นเราสามารถกำหนดค่าต่างๆ ดังนี้ได้
  • -ชื่อไฟล์ข้อมูลที่นำมาทดสอบ ( DataLoader )
    -จำนวนรอบการวนซ้ำ ( Repeat )
    -เวลาการทำงานสูงสุดในแต่ละ test case ( Duration ) ถ้าทำงานเกินเวลาที่กำหนด test case จะ fail
ขั้นแรกทำการเพิ่ม dependency ของ EasyTest เข้าไปใน pom.xml ของ maven project

โค้ด: เลือกทั้งหมด

<dependency>
   <groupId>org.easetech</groupId>
   <artifactId>easytest-core</artifactId>
   <version>1.2.5</version>
</dependency>
ทำการสร้าง test case โดยต้องการให้วนทำงาน 5 รอบ ด้วยการใช้ @Repeat และใช้ข้อมูลจากไฟล์ data.csv ดังนี้

โค้ด: เลือกทั้งหมด

@RunWith(DataDrivenTestRunner.class)
public class WithoutLoopTest {

	@Test
	@DataLoader(filePaths = { "data.csv" })
	@Repeat(times=5)
	public void testUseRepeat10Times(@Param(name="ID") int id,  @Param(name="Name") String name) throws Exception {
		System.out.println("Test=" + id);
	}
}
คำอธิบาย
  • -ใน test case ชื่อว่า testUseRepeat10Times นั้นจะเรียกใช้ข้อมูลมาทดสอบจากไฟล์ test.csv ซึ่งข้อมูลประกอบไปด้วย ID และ Name
    -ทำการวนทดสอบจำนวน 5 รอบ
ข้อมูลในไฟล์ data.csv

โค้ด: เลือกทั้งหมด

testUseRepeat10Times,ID,Name
,1,Name 1
,2,Name 2
โดยโครงสร้างของไฟล์ data.csv ประกอบไปด้วย
  • -แถวที่ 1 ประกอบไปด้วย ชื่อของ method ที่ใช้งาน, ชื่อ column ที่ 1 และชื่อ column ที่ 2
    -ตั้งแต่แถวที่ 2 ขึ้นไปนั้นคือข้อมูลที่จะถูกใช้งาน
เมื่อทำการ run test พบว่ามีการทำงาน 10 ครั้ง มาจาก จำนวนข้อมูล X จำนวนรอบที่กำหนดไว้ใน @Repeat คือ 2X5 = 10 ดังรูป
  • Screen Shot 2556-10-20 at 10.50.40 PM.png
    Screen Shot 2556-10-20 at 10.50.40 PM.png (150.83 KiB) Viewed 856 times
ต่อมาทดสอบใช้ @Duration มาเพื่อกำหนดให้เวลาการทำงานสูงสุด 10 milisecond ดังนี้

โค้ด: เลือกทั้งหมด

@Duration(timeInMillis=1)
public void testUseRepeat10Time ....
...
ถ้า test case นั้นทำงานเกินเวลาที่กำหนด จะเกิด error หรือ failure ดังรูป
Screen Shot 22.png
เพียงเท่านี้ เราสามารถทำ Data-Driven testing และการวน loop โดยไม่ต้องเขียน loop ด้วย module EasyTest ได้แล้วครับ

แหล่งที่มา: http://www.narisa.com/forums/index.php? ... entry=2990
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 41