เขียนโปรแกรมเสร็จแล้วทำไรบ้าง


เขียนเสร็จแล้วก็นำใช้ไง :D
ในการพัฒนา software ขั้นตอนที่สำคัญมากๆ ก็คือการทดสอบโปรแกรม โดยบริษัททั่วไปก็จะจ้างคนไว้ 1 ตำแหน่งเพื่อทำทดสอบการใช้งานโดยเฉพาะ ชื่อตำแหน่งที่เป็นผู้ทดสอบก็จะมีหลายๆชื่อ แต่สิ่งที่ต้องทำจะเหมือนๆกันคือการทดสอบโปรแกรมที่ถูกเขียนขึ้นมาว่าสามารถทำงานได้ถูกต้อง ชื่อที่ได้ยินบ่อยๆ เช่น QA (Software Quality Assurance), Software Tester
เนื้อหา
- เนื้อหา
- การทดสอบโปรแกรม
- แบ่งตาม environment
- DEV (Development)
- SIT (System Integration Testing)
- UAT (User Acceptance Testing)
- Production
- ความแตกต่างระหว่าง SIT กับ UAT
การทดสอบโปรแกรม
ในบทความนี้จะยังไม่ได้เขียนอธิบายว่าถ้าเป็น QA หรือ Tester วันนึงจะได้ทำงานอะไรบ้าง
หลังจากเขียนโปรแกรมเสร็จแล้วงานต่อไปคือ ทดสอบโปรแกรม
จะดูว่ามันทำงานถูกต้องตามที่ต้องการหรือไม่ ไม่ว่าจะเป็น Web, App หรือจะเป็น software อะไรก็ตามที่ถูกเขียนขึ้นมา
การที่จะทดสอบโปรแกรมได้ โปรแกรมจะต้องถูกเขียนจนเสร็จแล้ว ลักษณะการทดสอบอาจจะแบ่งย่อยเป็น feature หรือ function เล็กๆเพื่อดูผลการทำงานว่าทำงานถูกต้องตามที่ได้ออกแบบไว้
โดยตำแหน่งงานนี้ไม่จำเป็นต้องเขียนโปรแกรมเลย แต่ต้องรู้ flow หรือการทำงานของ function นั้นๆว่ามันทำงานอย่างไร กดแล้วได้อะไร ผลลัพธ์ที่ถูกต้องหรือสิ่งที่คาดหวังเป็นยังไงเพื่อที่จะตัดสินได้ว่าอะไรถูกอะไรผิด
การพัฒนาโปรแกรมโดยทั่วไปแล้ว โปรแกรมเมอร์มีหน้าที่แค่เขียนโปรแกรมและทดสอบจากสิ่งที่ตนเองเขียน ซึ่งเป็นการทดสอบตามความเข้าใจอยู่ฝ่ายเดียวเท่านั้น หลักจากที่เขียนเสร็จแล้ว ขั้นต่อไปก็คือการทดสอบโปรแกรม โดยผู้ทดสอบจะเป็น QA หรือ Tester เพื่อทดสอบการทำงานตั้งแต่ input ว่าสิ่งที่ใส่เข้าไปจะทำให้เกิดผลลัพธ์อะไรได้บ้าง output ที่ได้ตรงตามที่ออกแบบไว้ไหม หรือก็คือหา Bug และหาความเป็นไปได้ที่จะเกิด Bug
แบ่งตาม environment
สิ่งที่เจอจากการพัฒนา software จะแบ่งออกเป็นหลายสภาพแวดล้อมหรือเรียกว่า environment จะให้อธิบายง่ายๆก็จะประมาณว่า แบ่งออกเป็นหลายๆ server
เช่น 1.server dev ที่ให้โปรแกรมเมอร์เขียนและทดสอบ
2.server sit ที่ใช้ทดสอบภายในบริษัทเอง
3.server uat ที่ผ่านการทดสอบมาแล้วรอบนึงและให้ user ทั่วไปได้ทดสอบรอบสุดท้ายก่อนนำไปใช้งานจริง
4.server prod ใช้งานจริง
แต่ละ server จะใช้โค้ดชุดเดียวกัน ต่างกันไม่มากเช่น database และ api ที่เรียกใช้
DEV (Development)
เหมือนเป็นพื้นที่ playground สำหรับโปรแกรมเมอร์ สามารถเขียนและทดสอบได้ทุกรูปแบบเลย จะใส่ข้อมูลทดสอบอะไรลงไปแบบไหนก็ได้ไม่จำเป็นต้องกลัวว่ามันจะพัง ยิ่งทอสอบให้พังได้ยิ่งดี เหมือนโปรแกรมเมอร์สามารถควบคุมได้ทุกอย่างในพื้นที่นี้ เพราะไม่ได้นำไปใช้งานจริงๆ
SIT (System Integration Testing)
เป็นการทดสอบภายในองค์กร ทดสอบโดย QA หรือ Tester ของเราเอง หากพบว่ามีปัญหาต้องให้โปรแกรมเมอร์แก้ไขในส่วนนั้นก่อน แล้วทำการทดสอบและเก็บผลใหม่ จนกว่าจะผ่านและไม่ติดปัญหาอะไรจึงจะนำขึ้น server UAT ต่อไป
- ทดสอบแต่ละ function ย่อยๆที่จะมีผลกระทบจากการเขียนเพิ่มหรือจากการแก้ไขโปรแกรมเดิม
- ทดสอบภาพรวมของระบบว่ายังสามารถทำงานได้ตามปกติ เพราะการเขียนเพิ่มหรือจากการแก้ไขโปรแกรมเดิม อาจส่งผลกระทบไปถึง function อื่นๆที่คิดว่าไม่เกี่ยวข้องได้
- เขียน Test cases ออกมาเป็นข้อๆ เพื่อช่วยทดสอบระบบ ตรวจสอบว่าระบบที่ออกมานั้นตรงตามผลการทดสอบที่คาดหวังหรือไม่
- การทดสอบในขั้นนี้ อาจจะพบว่า UI ผิดหรือ flow การทำงานผิดได้
UAT (User Acceptance Testing)
เมื่อ QA หรือ Tester ได้ทดสอบผ่านแล้วใน SIT ในขั้นตอนนี้จะเป็นการส่งโปรแกรมให้ ลูกค้าหรือผู้ใช้ปลายทางเป็นคนทดสอบอีกครั้ง เพื่อดูว่าโปรแกรมทำงานได้ถูกต้องหรือไม่ หากไม่มี Bug และทดสอบผ่านจะ freeze code เพื่อรอนำขึ้น server Production หากพบ Bug จะต้องแก้ไขและทดสอบใหม่ทันทีเพื่อเตรียมขึ้น Production
- ทดสอบโดยการใส่ข้อมูลเหมือนกับการใช้งานจริงๆ เช่น ข้อมูลที่ใส่ต้องใส่ตามจริง
- เขียน Test cases และใช้ข้อมูลจริงๆ ในการทดสอบ
Production
ใช้งานจริง
คือปลายทางของการพัฒนา software แล้ว เย่
ถ้ามี Bug เจ็บจริงแล้วนะ ถ้าเจอต้องประเมินความเสี่ยงและความเสียหายที่จะเกิดขึ้นแล้วแก้ไขทันที ถ้าเป็น software เกี่ยวกับการเงินก็จะเสี่ยงมาก
ความแตกต่างระหว่าง SIT กับ UAT
SIT | UAT |
---|---|
ทดสอบโดย testers และ developers | ทดสอบโดย ผู้ใช้ปลายทาง และ ลูกค้า |
ทดสอบโดย function ทั้งหมดที่มีผลกระทบกับระบบ | ทดสอบ function โดยรวมที่ผู้ใช้ต้องการจริงๆ |
ทดสอบตามความต้องการของ testers | ทดสอบตามการใช้งานจริงว่าผู้ใช้จะใช้ function อะไรเป็นหลัก |
SIT จะทอบสอบให้ได้ผลลัพธ์ตามต้องการ | UAT จะทดสอบจนกว่าจะได้ผลลัพธ์ที่ดีที่สุดก่อน |