Category Software Testing

Code Coverage คือ อะไร และสำคัญยังไง ?

ช่วงนี้พยายามจะดันให้ทุกคนในบริษัทเขียน Test แบบ (Automate) มันมีคำถามว่า แล้วเราจะรู้ได้ยังไง ว่า Test ที่เขียนไปมันมีคุณค่า ไม่ใช่ Test เข้าไป execute ที่ code จุดเดิมซ้ำๆ เลยเป็นที่มาของ Blog นี้ครับ โดยจะมีหัวข้อย่อยๆ ดังนี้ Code Coverage คือ อะไร ? KEY: Code Coverage มันบอกว่าเราเข้าใจ Code ที่เขียนมากแค่ไหน จากตัว Testแต่ Code ที่เขียนมา มันจะถูกต้องตาม Business ไหน มันอีกเรื่องนะ…

ลองใช้ Headless Chrome ทำ ScreenShot

เรื่องก็มีอยู่ว่า Project นึง คนส่วนใหญ่ไม่ค่อยยอมทำ Test บางทีบอกว่า Coverage Report มันเปิดยาก / ตัวเค้าเองไม่รู้ว่าตอนนี้ Coverage มันลดลง แล้วต้องมาทำ Test เพิ่ม เป็นต้น ผมเลยมีไอเดียเลยว่าเดี๋ยวจะส่งตัว Report Coverage Summary ไปให้ โดยตอนนี้ใช้ Tools reportgenerator.io หลังจากที่มัน Generate เสร็จแล้ว มันจะได้ HTML Report หน้าตาสวยงามครับ ตามรูป จากหน้าตานี้แหละ ผมได้มี Idea ว่าจะหาทาง Capture Coverage Status…

ตั้งชื่อ Unit Test กันยังไงนะ ?

Unit Test

อันนี้เป็นคำถามที่น่าสนใจเหมือนกัน ผมเลยลอง Research มาดูนะ เพราะ Pattern ที่ใช้กันตอนนี้ T<TICKETID>_<DESCRIPTION NOTE> หลังจากลอง Research มาพบว่ามีคนเขียนไว้เหมือนกันนะ 7 Popular Strategies: Unit Test Naming Conventions – DZone ลองดูแล้วมีตัวที่น่าสนใจอยู่นะ อย่าง Pattern ที่ 7 คนที่เข้ามาอ่าน Code ของ Unit Test จะได้เข้าใจด้วยเลย Reference

[TESTING] มาทำให้ JSON-Server Support Request แบบ Chunked ครับ

หลังจากติดปัญหาเรื่อง BPMN Engine  แล้วพบว่า Service Task ถ้าทำเป็น Web Service แล้วข้อมูล Request ในส่วนของ Body มันหายไปครับ หลังจากไล่ไปไล่มา โดยดูจาก Forum ของ Camunda Payload is empty when making HTTP POST request with HttpConnector How to specify POST payload for Rest Tasks ? Disable sending…

[TESTING] มา Debug Request ที่ส่งเข้าไปใน JSON-SERVER ครับ

หลังจากที่ได้ลง JSON-Server ไปแล้วใน Blog ตอนก่อนครับ หลังจากที่ลอง Service Task บน BPMN แล้วพบว่ามันไม่ส่งข้อมูลไป คราวนี้ผมเลยต้องมาไล่ดู Request ที่ส่งไปที่ JSON-Server มันส่งไปจริง หรือป่าว และส่งอะไรไปบ้างครับ โดยสิ่งที่มีก่อนครับ Node.js Editor อะไรก็ได้ครับ เพราะ เราเขียน JavaScript เรียกใช้งาน JSON-Server ครอบอีกทีนึงก่อนครับ สำหรับขั้นตอนมาลุยไปพร้อมๆกันเลยครับฃ สร้าง Project สำหรับ Node ด้วยคำสั่ง npm init -y  ซึ่งได้ผลลัพธ์เป็น package.json  ที่ทำหน้าที่เก็บข้อมูลของ Project และ Package…

[TESTING] Mock Data สำหรับ API Test ด้วย JSON-Server กันครับ

หลังจากทำ BPMN ที่เป็น Servicer Task เสร็จและ โดยลองใช้ Mock REST-API จาก  เพื่อ POC (Proof of concept) แล้วนั้น สิ่งถัดมาที่ผมทำ คือ ต้องมาลองสร้างข้อมูลให้มัน Dynamic มากก่านี้ครับ ซึ่งผมได้เจอ Open Source ตัวนึงที่น่าสนใจมากครับ แท่นแท๊นนน มัน คือ JSON Server ครับ เป็น Tools ที่เกิดมาเพื่อทำ Mock REST-API โดยแท้เลยครับ มันเลยเป็นที่มาของ Blog ตอนนี้ด้วยครับ…

[BPMN] Service Task with REST-API (Get) Example

หลังจากงมๆมานานพอสมควรแล้วกับการใช้งาน Service Task กับ Web Service กับ Camunda BPMN Engine ครับ โดยสิ่งที่ผมใช้ คือ ตัว Camunda Connector ที่ช่วยให้เราสามารถ Config Web Service ได้ง่าย ไม่ต้องส่งงานให้ Delegate Code อย่าง BPMN Engine ของค่ายอื่นๆครับ สำหรับ NOTE: สำหรับเรื่อง Service Task ตัว Spec ของ BPMN ไม่ได้ระบุใน Spec ชัดเจน…

[BPMN] ลองคิดตัวอย่างของ Completion Condition กัน

พอดีช่วงนี้ได้ลองเล่น BPMN แล้ว ปัญหาที่สำคัญของ Spec ตัว BPMN เอง คือ ตัวอย่างน้อย และไม่ครอบคลุมตามคุณสมบัติที่ได้ระบุไว้ใน Spec ครับ อย่างที่ผมโคตรงง ตอนนี้ คือ Attribute ของ Multi-Instance ของ Task ครับ ลองมาคิดตัวอย่างกันดีกว่าครับ Task “Monitor Shipment” – Completion Condition คือ สินค้าถึงจุดหมายปลายทางแล้ว Task “Approval TOR” – Completion Condition คือ คณะกรรมการ 2 ใน…

[BPMN] ลองใช้ Process ที่ได้เพิ่งสร้างกัน

จาก Blog ตอนก่อนหน้าที่เราได้ทำอะไรไปหลายๆอย่าง ทั้ง ติดตั้ง Tools ที่จำเป็น – ติดตั้ง Activiti Framework, ลง Eclipse Activiti Designer, เปลี่ยน Activiti Framework มาใช้ MySQL ลองสร้าง Process – ลองสร้าง Process โดยใช้ Activiti Designer ทำ Unit Test – Activiti สร้าง Unit Test Deploy Process – ลองเอา Process ที่ทำมา Deploy ขึ้นกัน มาใน Blog…

[BPMN] ลองเอา Process ที่ทำมา Deploy ขึ้นกัน

จาก Blog ก่อนหน้านี้ที่ได้ลองสร้าง Process ไปแล้ว คราวนี้ลองเอา Process ที่ทำ มาผูกให้เป็น Application โดยใช้ Activiti-App ตัว Kick Start ครับ เนื่องจาก Form ที่ทำโดยใช้ Activiti Designer ยังไม่สมบูรณ์ครับ เลยต้องเอามาปรับปรุงใน Kick Start  โดยการเพิ่ม Form ลงไป เพราะใน Process ที่ทำไว้ก่อนหน้านั้น เราได้กำหนดแค่ภาพรวม Workflow ไว้แล้ว จริงๆมาสร้าง Workflow ในตัว Kickstart ได้เลยนะ ไม่ต้องผ่านตัว Eclipse…