Refresh ข้อมูลในกรณีที่ฐานข้อมูลมีการอัพเดทใน LINQ และ Entity Framework (Refresh Query in LINQ)

จากปัญหาที่เคยเจอในกรณีที่ฐานข้อมูลมีการอัพเดทไปแล้ว พอ Select ข้อมูลออกมาข้อมูลไม่ refresh ในกรณีนี้จะยกตัวอย่างการใช้งานฟังก์ชัน reload ของ System.Data.Entity.Infrastructure public class DbEntityEntry where TEntity : class // Summary:// Reloads the entity from the database overwriting any property values with values // from the database. The entity will be in the Unchanged state after calling this// method.public void Reload(); โดยการใช้งานนั้นจะยกตัวอย่างตามโค้ดด้านล่าง ProjectEntities pe = new ProjectEntities(); var project = pe.PROJECT.Where(w => w.ID == projectID && w.YEAR == year).FirstOrDefault(); if (project != null) { pe.Entry(project).Reload(); } หวังว่าคงจะได้ช่วยโปรแกรมเมอร์ทีมีปัญหาเรื่องการ refresh ข้อมูลผ่าน LINQ และ Entity Framework

Read More »

การสร้างเงื่อนไขแบบหลายตัวแปรในการค้นหาข้อมูลผ่าน LINQ (Multiple Search In LINQ)

การสร้างเงื่อนไขแบบหลายตัวแปรในการค้นหาข้อมูลผ่าน Linq เพื่อให้เห็นภาพชัดเจน จะยกตัวอย่างโดย กำหนดเงื่อนไข 3 ตัวแปร ดังนี้ ตัวแปร “ชื่อ/นามสกุล/เลขประจำตัวประชาชน” โดยใช้ control TextBox ที่ชื่อ ID=”txtSearch” ตัวแปร “โครงการรับ” โดยใช้ control DropDownList ที่ชื่อ ID=”ddProject” ตัวแปร “สถานะการตรวจเอกสาร” โดยใช้ control DropDownList ที่ชื่อ ID=”ddStatus” จากนั้นเราสร้าง Entity ยกตัวอย่างเป็น UploadEntities ซึ่งในที่นี้ สร้าง DbSet ที่เชื่อมต่อฝั่งฐานข้อมูลยกตัวอย่างเป็น V_REGISTRATION_UPLOAD ผ่าน Entity Framework 4.5 จากนั้นใช้ LINQ ในการเขียนเงื่อนไข ยกตัวอย่างตามโค้ดด้านล่าง project = ddProject.SelectedValue; status = ddStatus.SelectedValue; search = txtSearch.Text.Trim(); outList = ue.V_REGISTRATION_UPLOAD .Where(w => (w.STUD_FNAME.Contains(search) || w.STUD_LNAME.Contains(search) || w.CITIZEN_ID.Contains(search)) || string.IsNullOrEmpty(search)) .Where(x => x.PROJECT_ID == project || string.IsNullOrEmpty(project)) .Where(y => y.APPROVED_STATUS == status || string.IsNullOrEmpty(status)) .ToList(); gvUploadedList.DataSource = outList; gvUploadedList.DataBind(); สรุปได้ว่าการนำฟังก์ชัน Where ของ LINQ มาใช้งานนั้น ทำให้โปรแกรมเมอร์สะดวกและลดการเขียนโค้ดให้ง่ายขึ้นจากเมื่อก่อนที่ต้องตรวจสอบเงื่อนไขเป็นแบบทีละเงื่อนไข

Read More »

การทดสอบซอฟต์แวร์ (Software Testing) – #1 กิจกรรม และขั้นตอนการทดสอบซอฟต์แวร์

สวัสดีค่ะ … ถึงเวลาซ๊ากที ฤกษ์งามยามดี กลิ่นดอกพญาสัตบรรณเลือนหาย แสงแดดสาดส่องแทนที่ ฤดูร้อนถามหา ณ เพลานี้เราได้พบกัน 🌼🌼 ก็ว่ากันตามหัวข้อของบทความ เรื่องราวเหมือนจะไม่เครียดแต่จริง ๆ ก็วิชาก๊านน วิชาการอยู่นะคะ ฮาา 😉ผู้เขียนจำได้ว่าสมัยเรียนป. ตรี (ก็ผ่านมายังไม่กี่ปีหรอกค่ะ ฮรี่ ๆ) Software Testing เป็น หัวข้อหนึ่งที่ผู้เขียนต้องเรียนด้วยค่ะ .. และผ่านมาไม่กี่ปีปัจจุบันผู้เขียนก็ได้มีโอกาส (ที่เรียกว่าบทบาทหน้าที่) เป็นผู้ทดสอบซอฟต์แวร์มาแล้วหลาย ๆ โปรแกรมค่ะ (อ๊ะไม่กี่ปีเหรอ ?) จึงได้รวบรวมข้อมูลและประสบการณ์เอาไว้ และถือโอกาสนี้มาเขียนบทความแชร์ให้กับผู้อ่านเพื่อเป็นแนวทางและ/หรือความรู้เล็ก ๆ น้อย ๆ ได้นำไปใช้ในการทดสอบซอฟต์แวร์ซึ่งถือเป็นขั้นตอนหนึ่งที่สำคัญไม่น้อยไปกว่าขั้นตอนอื่นในกระบวนการพัฒนาซอฟต์แวร์กันค่ะ สำหรับเนื้อหาหลักของบทความนี้ (ตอนที่ 1) ผู้เขียนจะนำเสนอข้อมูลและแชร์ประสบการณ์ให้กับผู้อ่านทราบเกี่ยวกับกิจกรรมและขั้นตอนต่าง ๆ ของการทดสอบซอฟต์แวร์กันก่อนค่ะ ในตอนต่อไปเราจะลงลึกไปแต่ละขั้นตอนพร้อมตัวอย่าง และประสบการณ์ที่ผู้เขียนอยากจะแชร์ให้ผู้อ่านได้ทราบกันนะคะ (เผื่อว่าเราจะได้มาระดมสมอง ช่วยแสดงความคิดเห็นกันเข้ามา และ/หรือผู้อ่านจะมีข้อเสนอแนะให้กับผู้เขียน ถือว่าเป็นการแลกเปลี่ยนกันค่ะ)การทดสอบซอฟต์แวร์ที่ผู้เขียนจะมาแชร์นั้น จะเป็นการทดสอบแบบ Functional Testing โดยใช้เทคนิค Blackbox Testing และทดสอบแบบ Manual นะคะ แต่ก่อนที่เราจะเข้าสู่เนื้อหาหลักของบทความนี้กันนั้น ผู้เขียน (ขอ) อธิบายนิยาม/ความหมายของ Software Testing รวมถึง Manual Testing, Functional Testing และ Blackbox Testing กันก่อนนะคะ เพื่อทั้งผู้อ่านและผู้เขียนจะได้ทบทวนกันซักหน่อย และทำความเข้าใจไปพร้อม ๆ กันค่ะ (อิอิอิ) 😊 Software Testing หรือการทดสอบซอฟต์แวร์ คืออะไรกันน่ะ ? การทดสอบซอฟต์แวร์ หรือ Software Testing ก็คือ กระบวนการในการประเมินและปรับปรุงคุณภาพของซอฟต์แวร์โดยการค้นหาข้อผิดพลาดและ/หรือจุดบกพร่องของซอฟต์แวร์ที่มีอยู่ให้ปรากฏออกมา แล้วสามารถระบุแนวทางที่ทำให้เกิดขึ้นได้และก็ทำการแก้ไข ค่ะ Manual Testing คืออะไร ? Manual Testing ก็คือ การทดสอบที่ดำเนินการโดยไม่ได้ใช้เครื่องมืออัตโนมัติ (Automated Tool) หรือสคริปต์ (Script) โดยผู้ทดสอบจะ Run Test ตาม Test Plan, Test Case หรือ Test Scenarios ด้วยมือของผู้ทดสอบเองนั่นแหละค่ะ[Manual คำศัพท์ทางวิศวกรรม ความหมาย คือ คู่มือ, (งาน) ทำด้วยมือ] อ่านถึงตรงนี้ผู้อ่านบางท่านอาจตั้งคำถามในใจ และ/หรืออุทาน ออกมาว่า “เดี๋ยวนี้เค้าทำ Automated Testing กันแล้วน่ะ ทำไมยัง Manual กันนี่ ! ” ก็เพราะว่า ………….. อืม ….. ยังไงผู้เขียนก็คิดว่า การที่เราจะตัดสินใจลงมือทดสอบแบบ Automated เลยแบบสุ่มสี่สุ่มห้า (รวมถึงเรื่องอื่นในชีวิต Drama ซะงั้น ฮาาา) โดยไม่ได้ดูถึงความเหมาะสมความคุ้มค่า ไอ้ที่เค้าว่าดีนั้น ก็อาจจะไม่ดีเพราะไม่ได้เหมาะสมกับการทดสอบโปรแกรมที่เราจะทดสอบก็ได้ และผู้เขียนเชื่อว่า เราจะ Automated ได้ดีนั้น ยังไงก็ต้อง Manual ได้ดีระดับหนึ่งก่อน มีความเข้าใจ และมีประสบการณ์มาก่อน เหมือนเป็นพื้นฐานที่สำคัญค่ะ อีกอย่างสุดท้ายเมื่อเรามีประสบการณ์การทดสอบซอฟต์แวร์ไประยะหนึ่งแล้ว เราก็จะพบว่าการทดสอบโปรแกรมหนึ่ง ๆ นั้น ยังไงก็ต้องทดสอบแบบ Manual ร่วมกับ Automated อยู่ดี จะ Automated 100% เลยก็อาจจะไม่ครอบคลุมทั้งหมดได้และเอาเป็นว่า ………. ผู้เขียนจะมาเล่าเรื่องนี้ให้ละเอียดกัน (ตามที่ผู้เขียนได้ประสบพบเจอ ศึกษาหาข้อมูลมา) ซักบทความหนึ่งในโอกาสหน้านะคะ ตอนนี้ก็เริ่ม ๆ มาจับ ๆ ถู ๆ เอ้ยยยยย ศึกษา Automated Test บ้างแล้วค่ะ ส่วน Tool ตัวไหนนั้น ขออุบส์ไว้ก่อนนะคะ กลัวจะไม่เวิคคค แฮร่ ไปซะไกลแล้วววจร้าาา เรามาว่ากันด้วยเนื้อหาของตอนที่ 1 ต่อกันดีกว่า

Read More »

มารู้จัก Web Element Locator กัน

ทำไม Tester ต้องรู้จัก Web Element Locator ก็เพราะว่าทุกสิ่งทุกอย่างที่ทุกคนเห็นบนหน้าเว็บ มันคือ Web Element และ Robot Framework ก็รู้จัก หน้าเว็บจาก  Element Locator ที่เหล่า Tester กำหนดให้ในแต่ละ Test script นั่นเองค่ะ ดังนั้น Tester ควรจะต้องรู้จัก Element Locator และวิธีการใช้งานค่ะ ตัวอย่าง Locator ของ Selenium library ดังรูป Element Locator มีหลายประเภท ดังนี้ 1. Id Element ที่มีการกำหนด id ไว้ ซึ่งเราควรจะเลือกใช้ locator นี้ค่ะ มีความเสถียรมากสุด เพราะถึงแม้ว่าจะมีการเปลี่ยนย้ายตำแหน่งของ Element นี้ จะไม่กระทบ Test script ของเราเลยค่ะ ตัวอย่าง locator ::  id=u_0_n; 2. Name Element ที่มีการกำหนด name  ไว้ ตัวอย่าง locator ::  name=lastname 3. Css Selector Css เอาไว้กำหนด style รูปแบบของ element นั้นๆ ตัวอย่าง locator :: css=input#u_0_s  4. XPath XPath คืือ เป็นเส้นทางการเข้าถึงโครงสร้างภายในส่วนต่างๆของ Web ตัวอย่าง locator :: xpath=//*[@id=”u_0_z”] *เพื่อ performance ของการทดสอบที่ดี ขอแนะนำว่า เราควรจะใช้ locator ลำดับที่ 1 จนถึง 4 ตามลำดับเลยจ้า ID –> NAME –> CSS –> XPATH ตัวอย่าง Test Script ที่ใช้ Element Locator รูปแบบต่างๆ วิธีการหา Element Locator หากเราต้องการหา Locator  ในหน้า Web สามารถทำได้ง่ายมากๆ ดังนี้ Open website ที่ต้องการจะทดสอบขึ้นมา เอาเมาส์ไปจิ้ม ตรง Element ที่ต้องการ กดปุ่ม F12 เท่านี้เราก็เริ่มเขียน Test script โดยใช้ Locator เพื่อทดสอบ Web site กันได้แล้วค่ะ

Read More »

Run automated test ด้วย Chrome แบบที่ไม่มี web browser แสดงขึ้นมา (Headless Mode)

สืบเนื่องจากการทำ Automated test แล้วรำคาญการเปิดหน้าต่างการทำงานขึ้นมา เพราะอยากจะรู้แค่ผลลัพธ์ก็เท่านั้น วันนี้เลยมาเสนอ Headless Mode feature เป็นของ Chrome สามารถ run automated test ด้วย Chrome แบบที่ไม่มี web browser แสดงขึ้นมา หรือที่เรียกกันว่า Headless Mode นั่นเองค่ะ ไม่ต้องDownload อะไรใด ๆ เลย เพียงแค่เราติดตั้ง Chrome เท่านั้นก็สามารถใช้งาน feature นี้ได้แร่ะ (Version 60 ขึ้นไป) ขั้นตอนมาดูกันเลย ในตัวอย่างนี้จะเป็นการเขียน Code ทดสอบด้วย Selenium Library จ้า การตั้งค่า Headless Mode คำสั่งดังนี้ ตัวอย่าง Test script สำหรับรันเทส web แบบ Headless mode ตามด้านล่างเลยค่ะ หาก Run แล้วจะพบว่าไม่มี Chrome Browser เปิดขึ้นมาให้กวนใจอีกต่อไป แต่เมื่อเข้าไปดูใน Test Report ก็จะพบว่ายังสามารถ Run Automated Test ได้ถูกต้องด้วยค่ะ

Read More »