การเปลี่ยนแปลง Coded UI Test ใน Visual Studio 2019

Microsoft ได้ประกาศว่า Visual Studio 2019 จะเป็น Visual Studio รุ่นสุดท้ายที่มีฟังก์ชัน Coded UI test ทำไมถึงเลิกใช้ Coded UI Test Coded UI tests ถูกใช้งานสำหรับการทดสอบการทำงานแบบอัตโนมัติของ web apps และ desktop apps โดยที่ในช่วงหลายปีหลังมานี้ Open source UI testing tools เช่น Selenium และ Appium ที่มีแรงสนับสนุนจาก community ที่เข้มแข็งและกลายเป็นมาตราฐานกลาง ซึ่ง Coded UI tests นั้นก็มีพื้นฐานอยู่บน Selenium นอกจากนี้ทั้ง Selenium และ Appium ยังทำงานข้ามแพลตฟอร์มและรองรับภาษาการเขียนโปรแกรมหลายภาษา Microsoft จะยังคงให้การสนับสนุน Coded UI tests ใน Visual Studio … Read more

Notebook Tips – ประหยัด ยืดอายุแบตเตอรี่

มีคำถามมากมายเกี่ยวกับแบตเตอรี่ ไม่ว่าจะเป็นการชาร์จ, แบตเสื่อม ประหยัดแบต โน๊ตบุ๊คและอีกมากมาย เนื่องด้วยในบรรดาอุปกรณ์ภายในโน๊ตบุ๊คของเราส่วนมาก สิ่งที่จะมีปัญหาอันดันแรก นั้นก็คือแบตเตอรี่ ซึ่งหากใช้งานไม่ถูกต้อง ซื้อมาเพียงไม่กี่เดือนแบตก็เสื่อมแล้ว ทำให้เป็นปัญหาเวลาใช้นอกสถานที่เป็นอย่างมาก 1.ปล่อยให้แบตเตอรี่หมดก่อนแล้วค่อยชาร์จ เรื่องความร้อนนั้นเป็นของคู่กับโน้ตบุ๊คด้วยเลยก็ว่าได้ ส่วนสำหรับแบตเตอรี่นั้นหากได้รับความร้อนนานๆ อายุก็จะสั้นลงแน่นอน แต่เอ๊ะ!! แล้วจะให้ทำยังไงหละในเมื่อการชาร์จทุกเครื่องมันก็ร้อนนิหน่า ถูกไหม? แต่มีวิธีแนะนำ นั้นก็คือ อย่าปล่อยให้แบตเตอรี่อยู่ต่ำกว่าประมาณ 20% ซึ่งถ้าจะให้ดีควรอยู่ในระดับ 20-30% หรืออาจจะ 40% ก็ได้ แต่ก็อย่าเกินนี้ เพราะยิ่งแบตเหลือน้อยมากๆ การชาร์จมันก็จะนาน ทำให้เกิดความร้อนมากกว่านั้นเอง และที่สำคัญอย่าให้แบตเตอรี่หรือตัวเครื่องโน้ตบุ๊คเราอยู่ใกล้กับสิ่งของร้อนๆ ด้วย 2.ถอดแบตเตอรี่ออกขณะเล่นเกมหรือเวลาอยู่บ้าน ถามกันว่าต้องถอดแบตเตอรี่หรือเปล่า? ต้องใส่ไว้ตลอดไหม? วันนี้ก็มีคำตอบให้ หากเราถอดไว้แล้ว แต่เกิดปัญหา ไฟดับ ไฟกระชาก มันก็อาจจะทำให้อุปกรณ์หรือโน้คบุ๊คของเราเสียหายได้ครับ ซึ่งอันที่จริงหากเราถอดแบตเตอรี่ออกมามันจะช่วยให้ยืดอายุการใช้งานได้จริง แต่มันก็เพียงเล็กน้อย แล้วมันจะคุ้ม? กับสิ่งที่เราอาจจะเสียไป ดูแล้วมันก็คงได้ไม่คุ้มเสีย 3.ถอดแบตเตอรี่เก็บไว้ ไม่ต้องใช้ ไม่เสื่อม ปกติแบตเตอรี่ อายุประมาณ 1 ปีหรืออาจจะน้อยหรือมากกว่า ตามลักษณะการใช้งาน … Read more

แนวทางการเขียน Unit Tests ที่ดีสำหรับ C # (2)

ในบทความก่อนหน้า ได้พูดถึงการเลือก Testing framework ที่เหมาะสม การเขียน unit test โดยใช้แนวคิดแบบ “AAA” (Arrange, Acr, Assert) และการกำหนดชื่อ method ที่สื่อความหมายเข้าใจได้ง่าย Test Initialize & Cleanup เมื่อ unit tests ทำการทดสอบ methods ภายใน class ก็จำเป็นต้องสร้าง instance ของ class นั้นๆขึ้นมาก่อน ซึ่งจะเกิดขึ้นหลายๆครั้งใน unit test เพื่อประหยัดเวลาและทรัพยากรของระบบ เราสามารถใช้ [TestInitialize] attribute ของ MSTest เพื่อบอกว่า method นั้นใช้สำหรับกำหนดค่าเริ่มต้น สร้าง instance ของ class ก่อนที่จะเริ่ม run unit tests (หรือ [SetUp] ใน … Read more

แนวทางการเขียน Unit Tests ที่ดีสำหรับ C #

ในความคิดของผู้เขียน ผู้พัฒนาส่วนใหญ่มักไม่ชอบที่จะเขียน Unit testing บางคนอาจจะคิดว่ามันน่าเบื่อ หรือบางคนก็ไม่เห็นคุณค่าในการเขียน code เพื่อตรวจสอบการทำงานของ code อื่นๆ Unit testing คือแนวทางในการเขียน code เพื่อตรวจสอบว่าหน่วยการทำงานใน แอปพลิเคชันซอฟต์แวร์ ว่าทำงานตามที่ตั้งใจไว้หรือไม่ เช่น หากตั้งใจที่จะให้ตัวอักษรตัวแรกของคำเป็น พิมพ์ใหญ่ unit test จะต้องสามารถตรวจสอบว่าตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่โดยไม่สนใจอักษรตัวอื่นๆ ข้อดีอย่างหนึ่งของการเขียน unit tests ใน C # คือ เราสามารถใช้ Test Explorer ใน Visual Studio เพื่อตรวจสอบว่าการทดสอบทั้งหมดผ่านหรือไม่ โดยที่ไม่ต้องกังวลว่าการเปลี่ยนแปลงล่าสุดที่เขียน จะทำให้ระบบทำงานไม่ได้หรือไม่ การเลือก Testing Framework Testing frameworks ช่วยให้เราสามารถใช้ attribute ในการเขียน unit tests [TestClass] หรือ [TestMethod] ซึ่ง attribute เหล่านี้บอกให้ Text … Read more

เขียน Unit test ทดสอบการทำงานกับฐานข้อมูลที่ใช้ Entity Framework Core

ในบทความนี้ จะนำเสนอการเขียน unit test เพื่อทดสอบการทำงานของ method ที่ใช้งาน Entity Framework Core ซึ่งตัว Entity Framework Core มาพร้อมความสามารถที่สามารถใช้งาน in-memory store ซึ่งสามารถใช้ในการทดสอบได้ หรือจะใช้ mock framework ในการทดสอบก็ได้ โดยในบทความนี้จะแสดงให้เห็นทั้งสองแนวทาง In Memory Database In Memory Database เป็นการสร้าง database จำลองขึ้นมาใช้บน memory แทนที่การใช้ database ตัวจริง ทำให้เราสามาถเขียน unit test โดยที่ไม่ไปกระทบกับ database จริงๆ โดยการเพิ่ม Microsoft.Entityframework.InMemory NuGet package เข้าไปใน test projet ในส่วนของ DbContext class จะต้องมี constructor ที่รับ … Read more