การติดตั้ง Postman

โปรแกรม Postman เป็นโปรแกรมสำหรับทดสอบเรียกใช้ Rest Web Service และทดสอบ OAuth              โปรแกรมที่ได้รับความนิยมเป็นอย่างสูงในการทดสอบใช้งาน Rest และ OAuth  ตัวหนึ่งมีชื่อว่า Postman ซึ่งสามารถเรียกใช้ได้ทั้ง Windows, Linux และ Mac ซึ่งเมื่อก่อนจะเป็น Extension ของ Google Chrome แต่หลังจาก Chrome Update ครั้งใหญ่ได้มีเปลี่ยนเป็นโปรแกรมติดตั้งแยกเฉพาะ โดยมีวิธีติดตั้งดังนี้ 1) ทำการ Download โปรแกรม ที่นี่ https://www.getpostman.com/downloads/ 2) ทำการติดตั้ง Postman 3) จากนั้นจะปรากฏหน้า Login ถ้า Login ก็จะมีระบบช่วยจำค่าต่าง ๆ ที่เคยตั้งไว้ แต่ถ้าไม่ต้องการ Login ก็กดตามรูปเลยครับ 4) จะได้หน้าตาโปรแกรมดังรูป 5) ตัวอย่างการเรียกใช้งานเราสามารถใช้ URL ที่ต้องการเพื่อเรียกใช้ โดยสามารถใส่ Header,GET,POST และ Reset Web Service ดังรูป 6) ตัวอย่าง Option ในส่วนของ Authorization จะมีให้เลือกมากมายกว่า Version ก่อน ๆ ในตอนต่อไปก็จะมาทดสอบใช้ Postman ในการทดสอบการใช้งาน OAuth2 กันครับ

Read More »

เรียนรู้เทคโนโลยี OAuth2

OAuth2 คืออะไร ทำไมต้องใช้              OAuth2 คือมาตรฐานหนึ่งของระบบยืนยันตัวตน และจัดการสิทธิ์การเข้าใช้งานระบบต่าง ๆ เป็นมาตรฐาน rfc6747[1] ที่ใช้สำหรับ Client เชื่อมต่อกับ Server ที่ใช้ในการ Authen & Authorize เพื่อให้ได้รับสิ่งที่เรียกว่า Access Token เพื่อใช้แทน Username และ Password (สามารถใช้อย่างอื่นเพื่อขอ Token ก็ได้) เพื่อนำไปใช้กับบริการอื่น ๆ ทำให้มีความปลอดภัยมากขึ้น รวมถึงบอกว่าทำมีสิทธิ์ทำอะไรได้บ้างกับบริการนั้น ๆ (จริง ๆ แล้วถ้า Access Token หลุดก็เอาไปเข้าระบบอื่น ๆ ได้ อาจจะต่างตรงแค่ไม่เห็น Password) โดยแนะนำต้องใช้คู่กับ https อีกชั้นเพื่อความปลอดภัยสูงสุด โดยแสดงภาพคร่าว ๆ เป็น Protocol Flow ดังรูป[2]               โดย Access Token จะมีเวลาจำกัดในการใช้งานเมื่อ Token หมดอายุ ก็ต้องไปขอใหม่ เมื่อเลิกใช้งานก็ขอยกเลิก Token รูปแบบการใช้งานมี 4 รูปแบบหรือเรียกว่า grant_type โดยแต่ละแบบมีรายละเอียดดังนี้[3] Authorization Codeใช้สำหรับ Web Server ที่ใช้ Code ด้านหลังในการเชื่อมต่อกับ OAuth Server โดยไม่ได้เปิดเผยให้สาธารณะเห็น อธิบายเป็นลักษณะการใช้งานคือ – ผู้ใช้งานเข้า Web Site – จะมีให้กด Login Facebook, Twitter, Google หรืออื่น ๆ  – เมื่อผู้ใช้กดก็จะเด้งให้ไป Login ที่ผู้ให้บริการนั้น ๆ ถ้าเคย Login ไว้แล้วก็จะข้ามขั้นตอนนี้ไป – ถ้าผู้ให้บริการนั้น ๆ เช่น Facebook จะให้กดยอมรับข้ออนุญาต ส่วนมากจะถามเรื่องสิทธิ์ในการเข้าถึงข้อมูลส่วนตัว – เมื่อผู้ใช้กดอนุญาต ก็จะกลับมายัง Web Site โดยในเบื้องหลัง WebSite จะได้ authorization code มาเรียกร้อยแล้วจากผู้ให้บริการ – จากนั้นทาง Web Site ก็สามารถเข้าถึงข้อมูลของผู้ให้บริการนั้น ๆ ได้ตามสิทธิที่อนุญาตไว้ วิธีใช้ authorization code มีปุ่ม login ซึ่งมี link มี parameter คล้ายๆแบบนี้ https://[oauth-server]/authorize?response_type=code&client_id=testclient&client_secret=testpass&redirect_uri=http%3A%2F%2F10.1.0.20%3A32778%2F%3Fauth%3Dsso เมื่อกดปุ่ม login ระบบจะต้องแจ้งว่า จะขอใช้สิทธิเรื่องใดบ้าง เมื่อผู้ใช้กดตกลงอนุญาต หน้าจอจะถูกพาไปยัง redirect_uri ที่ระบุไว้ พร้อมทั้งส่ง authorization code มาให้ด้วย ซึ่งจะมีหน้าตาประมาณนี้ https://yoursite.com/oauth/callback?code=xxx อ่าน code ออกมาเพื่อนำไปขอ access_token กับ API ของผู้ให้บริการ login ตัวนั้นๆ POST https://api.blah.com/oauth/token?grant_type=authorization_code&code=xxx&redirect_uri=xxx&client_id=xxx&client_secret=xxx ค่า client_id, client_secret โดยมาก เจ้าของ login API (Identity provider) จะเป็นคนกำหนดมาให้ หลังจากส่ง code ด้วย HTTP method POST และบอกว่าเป็น grant_type แบบ authorization_code ไปแล้ว client จะได้ access_token กลับมา เราจะเอา access_token นั้นในการเรียก API อื่น ๆ

Read More »

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 »