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

ช่วงนี้พยายามจะดันให้ทุกคนในบริษัทเขียน Test แบบ (Automate) มันมีคำถามว่า แล้วเราจะรู้ได้ยังไง ว่า Test ที่เขียนไปมันมีคุณค่า ไม่ใช่ Test เข้าไป execute ที่ code จุดเดิมซ้ำๆ เลยเป็นที่มาของ Blog นี้ครับ โดยจะมีหัวข้อย่อยๆ ดังนี้ Code Coverage คือ อะไร ? KEY: Code Coverage มันบอกว่าเราเข้าใจ Code ที่เขียนมากแค่ไหน จากตัว Testแต่ Code ที่เขียนมา มันจะถูกต้องตาม Business ไหน มันอีกเรื่องนะ เราดู Coverage ยังไง ? Code Coverage Type ก่อนที่เราจะมาจัดกลุ่มจาก Code หยิบยับมากมาย ถ้าใครเรียนสาย SE จะมีการแปลง Code เหล่านั้นออกมาเป็น Graph ซึ่งมีซื่อเรียกว่า Control-Flow Graph เอา Code บรรทัดนั้นๆ มาแปลงเป็น Node ของ Graph ตามตัวอย่างด้านล่าง หลังจากพอเข้าใจเรื่อง Control-Flow Graph มาดูกันว่าในสาย SE เข้าจัด Coverage กันแบบไหนบ้างครับ – Statement Coverage (Line Coverage) – Branch Coverage – Condition Coverage a < b c > 10 true false false true false false true true…

ลองใช้ Headless Chrome ทำ ScreenShot

เรื่องก็มีอยู่ว่า Project นึง คนส่วนใหญ่ไม่ค่อยยอมทำ Test บางทีบอกว่า Coverage Report มันเปิดยาก / ตัวเค้าเองไม่รู้ว่าตอนนี้ Coverage มันลดลง แล้วต้องมาทำ Test เพิ่ม เป็นต้น ผมเลยมีไอเดียเลยว่าเดี๋ยวจะส่งตัว Report Coverage Summary ไปให้ โดยตอนนี้ใช้ Tools reportgenerator.io หลังจากที่มัน Generate เสร็จแล้ว มันจะได้ HTML Report หน้าตาสวยงามครับ ตามรูป จากหน้าตานี้แหละ ผมได้มี Idea ว่าจะหาทาง Capture Coverage Status ตอนนี้ แล้วส่งเข้า Line Notify ครับ แล้วทีนี้การ Capture ดูมา 2 วิธีครับ ลองใช้ Chrome Headless ทำ Screenshot จากที่เกริ่นไปแล้ว ตัว Google Chrome มี headless mode ทำให้เราเรียกผ่านเว็บ จาก command line ได้เลย โดยมี option ที่สำหรับทำ Screenshot ลองเรียกใช้งานดูครับ ทำให้เป็น PowerShell นิดนึง ผลลัพธ์ที่ได้ จากนั้น Script ทีข้างต้น ไปใส่ใน CI Tools อย่าง GitLab / Jenkins ได้เลยครับ นอกจากทำ Screen Shot แล้ว ตัว Chrome headless มันยังมี Option อื่นๆอีกครับ อาทิ เช่น แล้วตัว…

มาฟังงาน Agile Thailand 2023 #ATH2023

งานวันนี้จัดที่ True Digital Park พองานจัดไกลอยู่เลยต้องวางแผนการเดินทางครับ จากสายใต้ใหม่ ถ้านั่งรถ 511 ทางด่วน จะมาไวมาก เลยออกมาดักรอ ได้รถตอน 06:52 และถึงที่ True Digital Park ตอน 08:00 และก็ผมไม่หลงแบบรอบที่แล้วและครับ ที่จำ True Digital Park เป็นที่เดียวกับ Bitec 555 งานนี้จัดที่ True Digital Park (west) นะครับ ชั้น2 คิดว่าน่าจะเป็น Zone ที่น่าจะทำมาใหม่นะ พอมาถึงเจอที่จัดงานเลยครับ ลงทะเบียน รับของ และนั่งทำ ChaiyoGCP#3 ไปสักพักรองานเปิดครับ ตอน 09:00 ซึ่งพอถึงเวลามีเปิดงานเล็กน้อย และยังคง Concept เดิมของงาน โดยเป็นงาน งานปีนี้เป็น Theme Business + Develop work together โดยตั๋วมีแจกเป็นรอบๆ นี่ไปกดทันตอนวิ่งพอดี สำหรับหัวข้อในงานที่ผมฟังๆ มาจะมีดังนี้ (เลือกแบบที่เดินน้อยสุด ปวดหลัง 555 แบกคอมมาแก้ Build Pipeline) AXONS Talk (คุณ​สรรเสริญ สมัยสุต) Software ที่ได้มาแพงสุด Software ที่ไม่มีคนใช้งาน ต้องมอง Software มีชีวิตต้องปรับไปตามเวลาได้ ชวนคุย Agile for business squads by Kris KBANK Agile มาใช้ใน KBANK นะ เพราะส่วน IT โยกไปอยู่ใน KBTG หมดแล้ว การเริ่ม Agile ปล่อยให้ทีมโตทำยังไง – Team…

เมื่อ DEV ลองไป Workshop Azure monitoring, security and compliance 

วันนี้ฟัง + Workshop Azure monitoring, security, compliance ที่ มหาลัยวิทยาลัยราชภัฏบ้านสมเด็จเจ้าพระยา จัดโดยกลุ่ม Zabbix in Thailand และจัดสอนโดย อาจารย์ ตูล MVPSKILL สำหรับหัวข้อมี ตามนี้เลยครับ้ Recap Cloud Adoption Framework Cloud Adoption Framework เป็น Guideline ที่ช่วยย้าย Workload จาก On-Premises ไป Cloud ซึ่งแต่ละ Provider มีแนวทาง และชื่อเรียกที่แตกต่างกันไปครับ ถ้าสนใจดูที่ Blog นี้ได้เลย เมื่อ DEV ลองไป Workshop Azure Cloud Adoption Framework และเหมือนจะได้ยินว่าส่วนของ Office 365 มีแนวนี้เหมือนกันครับ สำหรับ Session ในวันนี้จะต่อยอดหลังจากย้ายมา Cloud แล้วนั้นเอง โดยจากภาพของ CAF จะเป็นส่วนของ Govern / Manage / Secure ครับ หลังจาก Recap กันไปแล้ว มาลอง อจ ตุล พามาเจาะแต่ละ 3 มุม Manage / Govern / Secure ว่ามี Tools + Service อะไรบ้างครับ Manage สำหรับส่วนของ Manage ที่ อจ พาดูจะมี 3 ตัว Azure Monitor / Virtual machine scale sets /…

ลองมาฟัง AWS Auto Scaling EC2 & Spot Instance

วันนี้ลงทุนลามาลองฟังดูครับ (หนีประชุมด้วย 555) โดยงานนี้จัดที่ทรู สเปซ เซ็นเตอร์พ้อยต์ ออฟ สยาม เซ็นเตอร์ มาลองฟังค่ายอื่นๆ นอกจาก Azure บ้างครับ จะมีอะไรบ้างลองดูกันครับ Compute Service Auto Scaling Workshop หลังจากฟังทฤษฏีเสร็จมาลองทำ Workshop กับครับ โดยงานนี้ดีมาก มี Account ฟรีจากทาง AWS มาให้ใช้ 48 ชั่วโมงครับ โดยตัว Lab มี 2 Version ตอนทำ Workshop ผมเลือกตัว Command ครับ ภาพรวมจะเป็นตามนี้ครับ แต่ละ Component สร้างจาก Command ทำบนตัว AWS Cloud9 – เป็น EC2 ที่ทำหน้าที่เหมือน JumpHost เข้ามาแล้ว หน้าจอจะเหมือน VS Code เรามารัน Command เป็น EC2 แบบนึง ตอนทำก็เปิด Web UI มาคู่ๆกัน มาตรวจครับ โดยเป็นการ Run ผ่าน Cloud9 ผมมองตัว Cloud9 เป็น JumpHost นะ เพราะ Account ที่ AWS ให้มาจะ AWS Console ไม่ได้นะ ติดสิทธิ์ หน้าตาเจ้า Cloud9 ตามรูป จากนั้น Follow ตาม Workshop ไป และลองดู CloudWatch + Auto Scaling groups จะเป็นว่าจากที่ตัว ssm-stress.json…

Access AlmaLinux 9 via RDP

XRDP is an open-source implementation of remote desktop protocols developed by Microsoft. Prerequisites Setup XRDP on AlmaLinux 9 Test Remote Desktop from Windows Reference

[VS2022] แก้ไขปัญหา There is no project properties provider for “Persistence = ProjectFileWithInterceptionViaSnapshot”. Projects are not loaded

ช่วงนี้มีเคสให้ไปช่วยตรวจสอบบ่อยๆครับ ล่าสุดที่เจอ Error ตามรูปด้านบนเลยครับ มี output log ประมาณนี้ครับ Solution จากที่ลองหาใน Stackoverflow แนะนำให้ลอง Repair ตัว Visual Studio ก่อนครับ แต่ลองแล้วไม่ได้ 555 พอลองมาไล่ดู Log มีข้อมูลแนะนำที่น่าสนใจอันนึงครับ The project file cannot be opened. Unable to locate the .NET SDK. Check that it is installed, your PATH is configured for the correct architecture, and that the version specified in global.json (if any) matches the installed version. เห็น Keyword your PATH is configured for the correct architecture ลองไปดูใน System Variable โดยสำหรับ Visual Studio 2022 ที่ถูกต้องจะเป็น ดังรูป Reference

ผมว่ามันน่าจะขาดอะไรไปนะ

เรื่องมีอยู่ว่าที่ บ มี Inhouse Training สอนเรื่องการเก็บ Requirement แหละ ผู้สอนมีบอกถึง Cost ที่ต้องเสียไปหากมี Defect หลุดไปแต่ละช่วงตามรูปด้านล่าง ซึ่งมันถูกต้อง ถ้าในช่วงของ Project หรือ SDLC (ไม่ว่าจะเป็น Waterfall / Agile) ทำให้ทุกอย่างชัดเจน และ Test ได้ตั้งแต่ช่วง Requirement จะดีที่สุดครับ แก้ในเอกสาร ช่วงอื่นๆ กระทบไป Code / Architecture หรือ สอนงานไปแล้ว (Field Operation) ยิ่งหลุดไปเท่าไหร่คนที่เกี่ยวข้องจะเยอะขึ้น แต่ในการทำงานจริง ผมว่าเพิ่มช่วง Pre-Sale / Sale / Marketing นี่แหละ มันเป็นจุดที่ต้องสนใจ หลายครั้งที่มี Commit อะไรไว้ + ไม่ได้ส่งสัญญาให้ Review แล้วมันเกิดปัญหากับทีมที่มารับช่วงต่อ ดังนี้ จากเคสที่ยกตัวอย่างมาทั้งหมด เราจะพบว่า การสื่อสาร / Sync ข้อมูลสำคัญมาก รวมถึง Empathy เห็นอกเห็นใจคนอื่น จากตัวอย่างข้างต้น ถ้าช่วง Pre-Sale ทาง Marketing หรือใครก็ตามที่ทำ Pre-Sale เข้าใจคนข้างหลังก็จะดีมาก หลายๆที่กำหนด Policy คนที่ทำ Sale /Pre-sale / Marketing ได้ค่าคอมหลังจบ Project จะช่วยสะกิดตรงนี้ได้เยอะ แต่ที่ บ ผม ได้ยินว่า ถ้าลูกค้า Sign แล้วถือว่าได้ค่าคอมเลยครับ เลยมีเคสลด แลก แจกแถม กันเยอะ เพื่อให้ลูกค้า Sign ก่อน ปัญหาอื่นปล่อยไป ดังนั้นภาพในส่วน High…