10 Unit และ Integration Testing tools สำหรับ Java Developers

26-เม.ย.-19

คัมภีร์เทพ IT

สำหรับ Java Developers นอกจากคุณต้องรู้ Syntax ของภาษา Programming หรือ Tools ที่จำเป็นอื่นๆ ที่คุณจะต้องใช้งานแล้ว อีกทักษะที่จำเป็นอย่างมากคือ Automation Testing skills เพราะการ Test จะเป็นสิ่งที่ใช้แยก Developer ที่เป็นมืออาชีพออกจาก Developer ทั่วไป เรายังไม่ต้องพูดถึง Testing Methodologies อะไรก็ตาม แต่อย่างน้อยคุณต้องเขียน Code เพื่อทำการ Test Code ของคุณเองอยู่แล้ว ดังนั้นเรามาดู 10 Unit และ Integration Testing tools สำหรับ Java Developers กันว่ามีอะไรบ้าง

1. JUnit

เชื่อว่า แม้แต่ Java Programmer มือใหม่ ก็คงเคยได้ยินชื่อ JUnit มาบ้างแล้ว ซึ่ง JUnit จะเป็นตัวช่วยให้คุณสามารถเขียน Unit Tests สำหรับ Java Code ของคุณ

เกือบจะทั้งหมดของ IDE หลักๆ ไม่ว่าจะเป็น Eclipse, NetBeans และ IntelliJIDEA ก็ล้วนแต่สามารถรองรับการทำงานร่วมกับ JUint ได้ ซึ่งนั่นหมายความว่า คุณสามารถเขียนและ Run Unit Test ได้จาก IDE เหล่านั้น

คงมีหลายคนที่อาจยังใช้ JUnit 4 อยู่ แต่ JUnit 5 ก็ได้เปิดตัวแล้วและอาจเป็นสิ่งต่อไปที่จะต้องจับตามองในปีนี้ คุณสามารถใช้ JUnit สำหรับทั้ง Unit และ Integration Testing อีกทั้งยังรองรับ Java 8 Features อีกด้วย

2. REST Assured

Testing และ Validating REST services ใน Java นั้นทำได้ยากกว่าใน Dynamic Languages อย่าง Groovy โดย REST Assured ได้นำความเรียบง่ายของการใช้ภาษาเหล่านี้มาไว้ใน Java Domain มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับ REST API Integration Tests

3. Selenium

Selenium เป็นเครื่องมือที่ได้รับความนิยมมากที่สุดตัวหนึ่งสำหรับ Java UI Testing ซึ่งมันช่วยให้คุณสามารถ Test JSP Page ของคุณโดยไม่ต้องเปิดใช้งานใน Browser

คุณสามารถ Test ตัว Web Application UI ของคุณได้โดยใช้ JUnit และ Selenium มันยังช่วยให้คุณเขียน Web Application Acceptance Tests ได้อีกด้วย

4. TestNG

TestNG เป็น Testing Framework ที่ได้รับแรงบันดาลใจจาก JUnit และ NUnit แต่ได้มี Function ใหม่ๆ มากมายที่ทำให้มันมีประสิทธิภาพและใช้งานได้ง่ายขึ้น (เช่น Annotations), Run Test ของคุณใน Thread Pools ขนาดใหญ่ได้ทันทีด้วย Policies ต่างๆ ที่มีอยู่ (Methods ทั้งหมดใน Threads ของพวกมัน, 1 Thread ต่อ Test Class เป็นต้น)

ช่องว่างระหว่าง JUnit และ TestNG ถูกทำให้ลดลงเนื่องจากการใช้ Annotations จาก JUnit 4 และการ Integrate Hamcrest Matchers เข้าด้วยกัน

5. Mockito

มี Mocking Frameworks อยู่มากมายสำหรับ Java Classes เช่น PowerMock, JMock แต่ก็มีหลายคนที่ชอบ Mockito เนื่องจากเป็น API ที่เรียบง่าย, มี Documentation ที่ดีเยี่ยมและ ยังมีตัวอย่างเป็นจำนวนมากอีกด้วย

Mocking เป็นหนึ่งในเทคนิคสำคัญของ Unit Testing ในยุคนี้ เนื่องจากมันช่วยให้คุณสามารถ Test Code ของคุณแบบแยกออกมาเดี่ยวๆ ได้โดยไม่ต้องพึ่งพาอะไร และนั่นเป็นสาเหตุที่ Java Developer ทุกคนควรเรียนรู้ Mocking Framework ควบคู่ไปกับ JUnit

แต่หากคุณไม่ชอบ Mockito คุณก็สามารถลองศึกษา PowerMock หรือ JMock เป็นอีกทางเลือกก็ได้

6. Spock Framework

Spock ก็เป็นอีกหนึ่ง Testing และ Specification Framework สำหรับ Java และ Groovy Applications การที่มันถูกเขียนใน Groovy ทำให้มันเป็นสิ่งที่สามารถเข้าใจได้ง่ายเพราะใช้ชุด String ที่เป็นประโยคๆ ซึ่งทำให้เป็นเป็นภาษาที่มีความเฉพาะเจาะจง

เมื่อคุณใช้ Spock การ Test ของคุณจะอ่านได้ง่ายขึ้น รวมทั้งง่ายต่อการ Maintain อีกด้วย และต้องขอบคุณ Junit Runner ที่ทำให้ Spock สามารถทำงานเข้ากันได้กับ IDEs, Build Tools และ Continuous Integration servers ส่วนใหญ่ได้เป็นอย่างดี

7. Cucumber

Cucumber เป็นอีกหนึ่งเครื่องมือที่ยอดเยี่ยมสำหรับ Automated Integration Tests แต่สิ่งที่ทำให้มันแตกต่างจากเครื่องมืออื่นๆ ที่อยู่ในกลุ่มเดียวกัน ก็คือ ความสามารถที่มีความเฉพาะเจาะจง

Cucumber จะทำการ Merge ตัว Specification และ Test Documentation ลงไปภายใน Documentation เดียว จากนั้น Cucumber ก็จะทำการ Test โดยอัตโนมัตให้ ทำให้ Specifications ของคุณเป็นข้อมูลที่อัปเดตอยู่เสมอ

8. Spring Test

Spring MVC มาพร้อมกับ Test Framework ที่มีประโยชน์มาก ซึ่งช่วยในทำการ Test ในเชิงลึกโดยไม่ต้องใช้ Web Container

มันเป็นหนึ่งใน Library ที่มีประโยชน์ที่สุดตัวหนึ่งสำหรับการเขียน Automated Tests ไปยัง Spring Applications มันให้การสนับสนุนสำหรับการเขียน Unit และ Integration Tests ไปยัง Spring-powered Applications รวมถึง MVC Controllers

นอกจากนี้ยังมี Spring Test DbUnit ที่ได้ Integrate Spring Test Framework เข้ากับ DbUnit และ Spring Test MVC HtmlUnit ซึ่ง Integrate Spring Test MVC Framework เข้ากับ HtmlUnit

ด้วยการใช้เครื่องมือเหล่านี้ คุณสามารถ Test Spring MVC Application ของคุณได้อย่างง่ายดายโดยอัตโนมัติ

9. DBUnit

Database ถือเป็นส่วนความสำคัญของหลายๆ Java Applications ทั้ง Core Java และ Web Application รวมทั้งอาจเป็นอุปสรรคที่ใหญ่ที่สุดในขณะที่ทำ Unit Testing ด้วย

มันดูไม่น่าเชื่อถือในการเชื่อมต่อกับ Dev หรือ UAT Database สำหรับ Integration Tests เนื่องจากทุกคนสามารถเปลี่ยน Data และ Schema ได้ ไม่ว่าจะเป็น Tables, Stored Procedure และมันอาจจะเป็นสาเหตุที่ทำให้ Automated Integration Test ของคุณเกิดความล้มเหลวได้

DbUnit เป็นส่วนขยายของ JUnit ที่สามารถใช้ในการกำหนดค่าตั้งต้นของ Database ให้อยู่ในสถานะที่รู้จักก่อนทำ Integration Test แต่ละครั้ง รวมทั้งเพื่อตรวจสอบให้แน่ใจว่า Database มี Data ที่ถูกต้องแล้ว
แม้ DbUnit จะมีปัญหาของมันอยู่บ้าง แต่ถึงอย่างไร ก็ยังเป็นเครื่องมือที่มีประโยชน์มาก เพราะมันช่วยให้เราแยกการสร้าง Test Data ออกจาก Tested Code

10. Robot Framework

Robot Framework มีพื้นฐานมาจาก Python ซึ่งเป็น Test Automation Framework สำหรับ Acceptance Testing และ Acceptance Test-Driven Development 

มันเป็น Keyword-Driven Testing Framework ที่ใช้ Tabular Test Data Syntax คุณสามารถใช้มันเพื่อการ Test Application ทั้งที่เป็นแบบ Distributed และ มีหลากหลาย ซึ่งในการตรวจสอบต้องใช้เทคโนโลยีและ Interfaces หลายอย่าง

ที่มา:  https://javarevisited.blogspot.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด