“How to Chang from Manual Testing to Automated Testing in Practice Workshop”
- Posted by Pissamai Numchan
- Categories การจัดการความรู้, ชุมชนนักพัฒนา
- Date July 25, 2022
Software Testing Process
Software Testing Process คือขั้นตอนในการดำเนินการทดสอบซอฟต์แวร์ โดยผู้ที่ทำหน้าที่ทดสอบ คือ Tester, Programmer, System Analyst, Business Analyst โดยจะแบ่งเป็น 2 ส่วนคือ Test Development และ Test Execution
1. Test Development ประกอบด้วย 2 เฟสคือ
1.1 Test Design: การวิเคราะห์และออกแบบ ทำโดย SA, BA, Programmer
– Identify Tested Conditions ซึ่งจะต้องใช้คนทำโดยมาหาจาก Requirement เพื่อหาเงื่อนไขที่ถูกทดสอบ
– Specify Test Case จะได้ Test Case ในระดับ Unit Test
– Specify Test Scenarios นำ Test Case มาร้อยเรียงเป็น Test Scenarios (End to End)
1.2 Develop Test Scenarios: การสร้าง Test Scenarios
– Prepare Test Data
– Prepare Test Environment
2. Test Execution ที่เป็น Automate
2.1 Execute Test Scenarios
2.2 Report Bugs and Defects
2.3 Execute Retest
2.4 Execute Regression Testing
ยกเว้น Fix Bugs and Defects ที่ไม่ได้เป็น Automate

ภาพที่ 1 Software Testing Process
วัตถุประสงค์ของการทำ Automation Testing
วัตถุประสงค์ของการทำ Automation Testing คือการ Repeat งานซ้ำๆ เพื่อลดกำลังคน ลดทรัพยากร สร้างความคุ้มค่า เนื่องจากมีการลงทุนสูงมากในการหาเครื่องมือ และการเตรียม Environmental ซึ่งการรัน Automation Testing ที่สามารถใช้งานได้บ่อยจะทำให้รู้ว่าเมื่อมีการปรับเปลี่ยนแล้วระบบยังสามารถทำงานได้ถูกต้อง ช่วยให้ประหยัดเวลาหลังจากขึ้น Production ไปแล้ว และลดจำนวนคนในการทดสอบระบบ ซึ่งต้องมีการกำหนดผลลัพธ์ของการทำ Automation Testing ที่สามารถวัดผลได้
Automated Testing กับกระบวนการพัฒนาระบบ
ในกระบวนการทดสอบจะให้ความสำคัญกับกระบวนการศึกษา Requirements ที่ต้องทำความเข้าใจปัญหาที่ต้องการแก้คืออะไร จากปัญหาต้องใช้ Features อะไรที่มาช่วยปัญหา และมี Solution อะไรที่ไปตอบโจทย์ ซึ่งเป็นจุดตั้งต้นที่จะไปทำ Automation Test
ประเภทของ Requirement
Requirement จะประกอบด้วย Functional และ Non-Functional

ภาพที่ 2 ประเภทของ Requirement
Test Mapping
จากประเภทของ Requirement จะประกบคู่มาเป็น Functional Tests และ Non-Functional Tests 2 ส่วนรวมกันเรียกว่า Acceptance Tests

ภาพที่ 3 ส่วนประกอบของ Software Testing ที่จากการ Requirement
- Functional Requirement
- ระบบมี Feature อะไรบ้าง แต่ละ Feature ทำงานอย่างไร
- Non-Function Requirement
- Security test
- Performance test เช่น Load test, Stress test
Regression Tests Suite
คือกระบวนการทดสอบที่ต้องทดสอบในส่วนของ Functional ทำตั้งแต่ระดับ Function หรือ Class หรือระดับ Unit Test ขึ้นไปถึง End-to-End Business Test และ ทดสอบส่วนของ Non-Functional
1. Functional Test Suite
1.1 Unit Test เป็นพื้นฐานสำคัญที่ทำงานร่วมกับฟังก์ชันที่โปรแกรมเมอร์เขียน ที่ต้องทำ Test Case
1.2 Integration Test หลาย ๆ ตัวที่ต้องทำงานร่วมกัน และต้องทำ Test Case เช่นระหว่าง API กับ Database หรือ ระหว่าง UI กับ API
1.3 System Test เป็นการ Test ทั้งระบบที่ทำอยู่
1.4 System Integration Test เป็นการ Test ร่วมกับระบบอื่น
1.5 End-to-End Business Process Test ผ่าน API เป็นการ Test ระบบทั้งหมดผ่าน API
1.6 End-to-End Business Process Test ผ่าน UI (หรือบางที่เรียกว่า UAT) เป็นการ Test ระบบทั้งหมดผ่าน Interface
*** ซึ่ง Function Test ทั้งหมดต้องทำ Test scenario
2. Non-Function Tests
2.1 Performance Test
– Workload Model Load Test
– Workload Model Stress Test
– Workload Model Endurance Test
2.2 Security Test
ภาพที่ 4 โครงสร้างของ Automate Testing
Arrange คือ การ Setup สิ่งต่าง ๆ เช่น Data base ที่จะทดสอบกี่ครั้งข้อมูลจะต้องเหมือนเดิม
Act คือ สิ่งที่ลูกค้าทำกับระบบส่วนใหญ่จะผ่าน UI
Assert คือการตรวจสอบว่าระบบทำได้ถูกต้องตรงกับค่าที่คาดหวังหรือไม่
ตัวอย่าง การออกแบบ Automation Test Case เรื่องการคำนวนอัตราภาษีมูลค่าเพิ่ม

ภาพที่ 5 ตัวอย่างการออกแบบ Automation Test Case
ตัวอย่างโครงสร้างของ Unit Test Case สำหรับ Test Source Code

ภาพที่ 6 ตัวอย่างโครงสร้างของ Unit Test Case สำหรับ Test Source Code
Test Scenario หรือสถานการณ์ในการทดสอบ
- ต้องหาเงื่อนไขที่ต้องการทดสอบ
- เมื่อมีหลายเงื่อนไขทำให้ต้องร้อยเรียงกัน
- มีผลการทำสอบ หรือ Expected Result ร้อยเรียงมาด้วย ซึ่ง 1 เงื่อนไขอาจจะมีหลาย Expected Result
- การเตรียมการทดสอบ นำไปทำ Test Data แบบหนึ่งต่อหนึ่ง หรือ เตรียมแล้วใช้ Test Data ชุดเดียวกันได้
- สิ่งที่สามารถเขียน Code เพื่อสร้าง Automation Test คือ
- การเตรียมการก่อนทดสอบ
- ข้อมูลที่ใช้ในการทดสอบ
- ผลการทดสอบที่คาดหวัง
- ส่วนเงื่อนไขในการทดสอบโปรแกรมเมอร์จะเขียนอยู่แล้ว

ภาพที่ 7 Test Scenario
- กลุ่ม Function
- จะใช้เวลาทดสอบ ทั้ง Functional Test Suite ภายใน 5-10 นาที
- กลุ่ม Non-Functional
- Security test จะเป็นทั้ง Test Case/ Test Scenario จะรวมเวลาทดสอบกับ Function Test Suite Tool ที่ใช้เช่น OWASP
- Performance test จะกำหนดเวลาให้เหมือนการทำงานจริงมากที่สุดเช่น Performance จะสูงสุดติดต่อกัน 4 ชั่วโมง ก็ต้องใช้เวลาทดสอบ 4 ชั่วโมง
- กลุ่ม Function
Continuous Integration (CI) Pipeline
Continuous Integration Pipeline หรือ CI คือ Flow ของการพัฒนา Coding สำหรับการทำAutomation Test ที่ทำอย่างต่อเนื่องและบ่อย ๆ ซึ่งจะ re-running หรือ Execute ทั้ง Function และ Non-Function Test เพื่อให้มั่นใจว่าการพัฒนาระบบและการทดสอบยังคงถูกต้องเมื่อมีการเปลี่ยนแปลงแก้ไข ตั้งแต่ระดับ Unit Test ไปถึง End-to-End Business Test ผ่าน UI โดยใช้เวลาทั้งหมด ไม่ควรเกิน 10 นาที

ภาพที่ 8 Continuous Integration Pipeline
ตัวอย่างการ นำ Requirement มาทำ Requirement spec
- ขึงภาพระบบตามความต้องการในมุมมองของลูกค้า
- ดู Internal Design ประกอบด้วย API หรือ Function ใดบ้าง เพื่อเตรียมการทดสอบ
- ดูการเชื่อมต่อกับระบบอื่น เช่น ระบบในหน่วยงานภายใน ระบบของหน่วยงานภายนอก พิจารณาการทดสอบที่เราควบคุมได้ ควรทำ System integrate test ก่อน

ภาพที่ 9 แสดงการทำ Requirement spec แบบ End-to-End Business Process
การทำ End to End Business Process
นำมาแยก End-to-End Business Process เพื่อเห็นขอบเขตของงาน โดยแตกเป็น business scenario

ภาพที่ 10 End-to-End Business Process เพื่อเห็นขอบเขตของงาน
ทำข้อมูลเพื่อทำการทดสอบ และผลลัพธ์ที่คาดหวังในแต่ละ process ดังตัวอย่าง Feature Search มี Use Case ค้นหา “ชื่อของเล่น” เลือก วิธีส่ง “Kerry”…. ต้องมีการเตรียมข้อมูล ดังภาพ

ภาพที่ 11 การทำข้อมูลเพื่อทำการทดสอบ และผลลัพธ์ที่คาดหวังในแต่ละ process
กรณีทำสำเร็จ
ควรทำให้ครบ ตาม End-to-End Business Process

ภาพที่ 12 ภาพรวมการทำข้อมูลเพื่อทำการทดสอบ และผลลัพธ์ที่คาดหวังในแต่ละ process ทั้ง End-to-End Business Process กรณีทำสำเร็จ
กรณีทำไม่สำเร็จ
กรณีไม่สำเร็จจะไม่ทำ End-to-End Business Process จะดูว่าเกิดจากอะไรได้บ้างที่ทำไม่สำเร็จ เช่นการจ่ายเงินไม่สำเร็จ เพราะวงเงินไม่พอจะอยู่ในบริเวณ PAYMENT จะต้องเตรียมการอย่างไรให้บัตรเครดิตมีเงินไม่พอ

ภาพที่ 13 สาเหตุของการทดสอบแล้วไม่สำเร็จ
ออกแบบ End to End Business Process ผ่าน UI
การออกแบบต้องตกลงกันในทีมว่า อะไรบ้างจะเป็น Automate อะไรจะเป็น Manual ควรทำ Automate น้อยที่สุด และควรทำเคสที่เป็น Positive

ภาพที่ 14 แสดงการออกแบบ End to End Business Process ผ่าน UI
ออกแบบ End to End Business Process ผ่าน API
จะเป็นการออกแบบ Integration Test เช่น Integration Test ระหว่าง Web สำหรับ Search Toy กับ APIs โดยต้อง Return ค่ากรณี Success, Client Errors, Server Errors โดยผู้ดำเนินการทดสอบคือ Developer, Programmer และ CI Tools ซึ่ง Tools จะวิ่งทดสอบแบบ Headless คือไม่มีการเปิดหน้าเว็บ ซึ่ง Developer, Programmer จะเป็นผู้ทดสอบก่อน และ CI Tools ใช้ทดสอบเป็นระยะ ๆ

ภาพที่ 15 แสดงการออกแบบ End to End Business Process ผ่าน API
ออกแบบการเชื่อมต่อไปที่ Data Store (Integration Test)
เป็นการทดสอบ API กับข้อมูลที่เก็บในรูปแบบต่าง ๆ ซึ่ง Developer จะต้องเป็นผู้ทดสอบ
ออกแบบการเชื่อมต่อไปที่ Data Store (Integration Test)
เป็นการทดสอบ API กับข้อมูลที่เก็บในรูปแบบต่าง ๆ ซึ่ง Developer จะต้องเป็นผู้ทดสอบ
ออกแบบ System Test
เป็นการเชื่อมต่อระบบไปยังระบบอื่นที่จำลองขึ้นมา (Mock หรือ Stub)

ภาพที่ 16 แสดงการออกแบบ System Test
ออกแบบ System Integration Test
เป็นการเชื่อมต่อระบบไปยังระบบอื่นที่เป็นระบบจริง Server จริง ทั้งภายในและภายนอกองค์กร

ภาพที่ 17 แสดงการออกแบบ System Integration Test กับระบบอื่น
ภาพรวมการทดสอบ
ควรทำให้เห็นภาพเดียวกัน ทำข้อตกลงการดำเนินงานก่อนลงมือทำงานร่วมกัน

ภาพที่ 18 การออกแบบภาพรวมของการทดสอบ
ตัวอย่างการทำ Arrange ในส่วนของ Unit Test
ขั้นตอนการทำงานของ API คำนวนคะแนน ในตัวอย่างนี้จะสนใจเฉพาะ การคำนวนคะแนน จะไม่สนใจสินค้า หรือการตัด Stock ดังนั้นจึงมีการเตรียม Data ดังภาพ

ภาพที่ 19 ตัวอย่างการทำ Arrange ส่วนของการเตรียมข้อมูลสำหรับ Unit Test
Data จะไหลมาจาก End to End มาทำ API Test และ Unit Test และใส่ Data เพิ่มเติ่มรายละเอียดในการทดสอบเพื่อความถูกต้องมากขึ้น ใน Unit Test ดังนั้นตอนทดสอบ End to End ก็จะไม่ต้องทดสอบการคำนวนคะแนนในหลาย ๆ แบบ เพราะทำตอน Unit Test ไปแล้ว
ถ้ามี Function อื่น ๆ ที่ต้องการทดสอบก็จะมีกรอบ Unit Test อีกเรื่อย ๆ โดยใช้ข้อมูล จาก End to End และใส่ข้อมูลอื่นที่สนใจ ตอนทำ Unit Test
ตัวอย่าง Code ในการทำ UI Automation Test ด้วย Tool ชื่อ Robot frame work ซึ่งเป็น Open Source โดยเทียบคำสั่งที่ลูกค้าเข้าใจกับรายละเอียด

ภาพที่ 20 ตัวอย่าง Code ในการทำ UI Automation Test ด้วย Robot frame work
ตัวอย่าง Web Site สำหรับทดสอบ API

ภาพที่ 21 ตัวอย่าง Web Site สำหรับทดสอบ API
Non-Functional Test
1. Performance Test
1.1 Load Test
ต้องมีการเป้าหมายของการทดสอบ เช่น Order จาก Business Goal ต้องการให้ มี 400,000 Order ในวันเสาร์ อาทิตย์ ภายใน 6 เดือน เพื่อหาจำนวนการสั่งซื้อมากที่สุด ทำการกระจาย พฤติกรรมการใช้งานเป็นช่วง เวลา เพื่อดูการพฤติกรรมการเข้าใช้งาน ดังตัวอย่าง ในช่วง 10-12.00 น.จะมากสุด 100,000 order/2 hours = 14 order/second หรือค่าเฉลี่ย ที่ระบบจะต้องรองรับ และวัดเรื่อง Response Time เช่น < 1 s หรือแปลงเป็นค่า Percentile 95%, 98%, 99% ซึ่งต้องไปกำหนดเรื่องทรัพยากรที่ต้องใช้ ทั้ง CPU, Memory เพื่อนำไปแปลงเป็น Automation Test
1.2 Scalability Test
จากค่าเฉลี่ย 4 order/second บางองค์กรจะเตรียมทรัพยากรให้รองรับค่าเฉลี่ยก่อน เพื่อให้ปกติทำงานได้ แล้วค่อย ๆ ขยายให้เป็น 14 order/second แล้วดูว่าระบบรองรับได้หรือไม่
1.3 Endurance Tests
ถ้าระบบมีปัญหาด้านการรันนาน ๆ เมื่อ Restart แล้วเร็วและเมื่อใช้งานก็ช้าอีก วิธีการทดสอบความคงทนของระบบให้รันเป็นเวลานานขึ้นกว่าเดิม ดูว่า CPU, Memory ใช้มากขึ้นหรือไม่แล้วนำมาหาวิธีการแก้ไขปัญหา
1.4 Stress Tests
เอาตัวเลข Order ในอนาคตมาวางแผนว่าระบบรองรับไปถึงเมื่อไหร่ ไกลแค่ไหน
1.5 Spike Tests
เมื่อเกิดเหตุการณ์ Work Load เพิ่มขึ้นมากกว่าปกติช่วงเวลาหนึ่ง และระบบอาจจะไม่ทำงานต่อได้เป็นปกติ หรือทดสอบเพื่อป้องกัน DDoS Attack
การทดสอบ Performance Test จะทำแบบ End-to-End และ Performance Test ทั้ง Loop เริ่มจาก Load Test และตัวอื่น ๆ
2. Security Test
2.1 Static Scan
จะไม่มี Environment จริง ดูจาก Source Code และ library และทำการสแกนช่องโหว่ต่าง ๆ ด้วยเครื่องมือของแต่ละภาษา ทำก่อน Dynamic Scan โดยเรียกดูความเสี่ยงจาก Risk Database เช่น Java ใช้ SonarQube, Node ใช้ Lintและ Npm Audit ร่วมกัน, Docker จะใช้ Docker Scan เพื่อสแกน image ว่าไปใช้ Library ที่มีความเสี่ยงหรือไม่
2.2 Dynamic Scan
จะต้องมี Environment จริง มีการ Start Application จริง และมี Tools เข้า Test App ซึ่งเครื่องมือจะนำข้อมูลจากรายงานที่สรุปเรื่องความปลอดภัยที่รวบรวมไว้ เช่น OWASP จะสรุป 10 ช่องโหว่ ที่เว็บโดนเจาะ และออก Spec ว่าถ้าจะป้องกันไม่ให้เว็บโดนเจาะจะต้องทำอะไรบ้าง OWASP จะพัฒนาซอฟต์แวร์ที่ช่วย Scan ช่องโหว่ที่ความความเสี่ยง ชื่อ ZAProxy ซึ่งสามารถดาวน์โหลดลงมาและ Scan เว็บได้เลย
*** Risk Database จะเก็บว่ามีความเสี่ยงที่ Library ไหนบ้าง และมี Pattern ไหนบ้างที่ต้องตรวจสอบ
*** ต้นทุนการทดสอบ
- Unit Test ต้นทุนจะต่ำมาก และมีเครื่องมือให้ใช้อยู่แล้ว เช่น Unit Test for Java
- End-to-End Test ไม่สามารถใช้ภาษาที่พัฒนาอยู่เขียนได้ ต้องหาเครื่องมือใหม่ ๆ มาช่วย เช่น Robot Framework ซึ่งจะต้องมีต้นทุนในการจัดหา และต้นทุนในการศึกษา จึงไม่ควรทำมาก ให้เลือก Use Case ที่สำคัญที่จำเป็นต้องทำ
รวบรวมและถอดบทเรียนจากการอบรมหลักสูตร
How to Change from Manual Testing to Automated Testing in Practice Workshop
วันที่ 28- 30 มีนาคม 2565
You may also like
จากการปฏิบัติงานพัสดุสำนักคอมพิวเตอร์ มหาวิทยาลัยบูรพา ที่ผ่านมาพบปัญหาเรื่องของการบริหารสัญญางานจัดจ้างเหมาทำความสะอาดอาคารสำนักคอมพิวเตอร์ และอาคารเฉลิมพระเกียรติฉลองสิริราชสมบัติครบ 60 ปี (KB) (พื้นที่ให้บริการ IT Services ชั้น 1) จำนวน 1 งาน เนื่องจากผู้ปฏิบัติงานของคู่สัญญางานจัดจ้างเหมาทำความสะอาดอาคารสำนักคอมพิวเตอร์ได้ขาดงาน ดังนั้น การจัดทำสัญญาตามพระราชบัญญัติการจัดซื้อจัดจ้างและการบริหารพัสดุภาครัฐ พ.ศ. 2560 ประกอบระเบียบกระทรวงการคลังว่าด้วยการจัดซื้อจัดจ้างและการบริหารพัสดุภาครัฐ พ.ศ. 2560 สำนักคอมพิวเตอร์ ในฐานะผู้ว่าจ้าง จะต้องจัดทำสัญญาและบริหารสัญญา ให้เป็นไปตามเงื่อนไขหรือข้อกำหนดในสัญญา เพื่อรักษาสิทธิและประโยชน์ของหน่วยงานหรือคู่สัญญา ทั้งจะต้องปฏิบัติงานตามระเบียบ ข้อกำหนดของทางราชการ และข้อกฎหมายที่เกี่ยวข้อง ด้วยความเป็นธรรม และตรวจสอบได้การบริหารสัญญาเป็นหน้าที่ของคณะกรรมการตรวจรับ ตามพระราชบัญญัติการจัดซื้อจัดจ้างและการบริหารพัสดุภาครัฐ พ.ศ. 2560 ข้อ 100 ความว่า ในการดำเนินการตามสัญญาหรือข้อตกลง …
Excel AI Insight: ปลดล็อกพลังการวิเคราะห์ข้อมูลอัจฉริยะ
Excel AI Insight: ปลดล็อกพลังการวิเคราะห์ข้อมูลอัจฉริยะ หลายครั้งที่เรามีข้อมูลจำนวนมาก และต้องใช้เวลานานในการสรุปผล สร้างกราฟ หรือหาคำตอบให้ผู้บริหาร แต่ปัจจุบัน Excel มีเครื่องมือที่ช่วยให้การวิเคราะห์ข้อมูลเป็นเรื่องง่ายขึ้น นั่นคือฟังก์ชัน Analyze Data เครื่องมือนี้เปรียบเสมือน “นักวิเคราะห์ข้อมูลส่วนตัว” ที่ใช้ AI ช่วยมองหาความสัมพันธ์ แนวโน้ม และประเด็นสำคัญจากข้อมูลให้เราโดยอัตโนมัติ …
การตรวจไวยากรณ์งานเขียนภาษาอังกฤษด้วย AI (Grammarly) ที่ให้ความแม่นยำสูงถึง 90% ขึ้นไป
Grammarly Grammarly เป็นเครื่องมือ AI ที่ถูกออกแบบมาเพื่อช่วยตรวจสอบไวยากรณ์ภาษาอังกฤษ ซึ่งได้รับความนิยมอย่างแพร่หลายทั้งในวงการการศึกษาและธุรกิจ ด้วยความสามารถในการตรวจสอบความถูกต้องของไวยากรณ์ การสะกดคำ การจัดวางประโยคและการให้คำแนะนำเกี่ยวกับสไตล์การเขียน Grammarly ยังสามารถช่วยผู้ใช้งานปรับปรุงข้อความให้เหมาะสมกับวัตถุประสงค์ เช่น การเขียนเชิงวิชาการ การสื่อสารในงานอาชีพ หรือการแสดงความรู้สึกส่วนตัว ด้วยการใช้งานง่ายผ่านแพลตฟอร์มต่าง ๆ เช่น เว็บเบราว์เซอร์ แอปพลิเคชันเดสก์ท็อป และส่วนเสริมใน Word ผู้ใช้งานจึงสามารถเขียนภาษาอังกฤษได้อย่างมั่นใจและเป็นมืออาชีพมากยิ่งขึ้น Grammarly AI เป็นเครื่องมือช่วยตรวจสอบและแก้ไขภาษาอังกฤษที่มีประสิทธิภาพสูง โดยมีจุดเด่นที่สำคัญดังนี้ 1. การตรวจสอบไวยากรณ์และการสะกดคำอย่างแม่นยำ Grammarly AI ใช้เทคโนโลยี NLP (Natural Language Processing) และ …

