วันจันทร์ที่ 14 กรกฎาคม พ.ศ. 2557

What is testing?



What is testing?



                       โดยปกติเราจะเข้าใจกันกันว่า testing คือการ test execution เพียงแค่นั้น แต่แท้จริงแล้วมันไม่ใช่ทั้งหมดของกิจกรรมที่เราทำกันในกระบวนการ testing

                     
                    กระบวนการ testing นั้นเกิดขึ้นทั้งก่อนและหลัง การ test execution ซึ่งประกอบไปด้วย การทำแผน, การควมคุม, การเลือกเงื่อนไขในการ testing, การdesign, execute test case, ตรวจสอบผล, ประเมินผล, การทำรายการเพื่อสรุปผลการ testing และระบบภายใต้การ testing หลังจากที่ Test Phase สิ้นสุดลง
                   จุดประสงค์ของการ testing
  • หาDefect ที่เกิดขึ้นกันระบบ
  •       ขัดขวางการเกิด Defect เช่น เมื่อมีการทำแบบ ใด แล้วทำให้เกิด defect ที่ระบบเพื่อ ป้องกันการเกินขึ้น
  •  เพื่อดูว่าระบบที่ทดสอบมีคุณภาพอยู่ในระดับใด
  • เพื่อดูว่าระบบ เหมาะสม หรือเพียงพอที่จะนำไปใช้จริงได้หรือไม่
การ testing ระบบนั้น จะช่วยให้ป้องกันการเกิด defect ที่อาจจะเกิดขึ้นได้ หรือสามารถเพื่อหา แนวทางในการป้องกัน อันอาจจะเกิดได้จาก Operation การทำงานของผู้ใช้งานระบบ และเป็นแนวทางในการวาง Operation ในการทำงานให้กับระบบก่อนการใช้งานจริง
การ Test นั้น มีหลายจุดประสงค์ ขึ้นอยู่กับว่าจะTesting ในส่วนไหน จุดประสงค์ในการทดสอบก็จะต่างกันออกไปแล้วแต่ประภทของการทดสอบ

 

วันศุกร์ที่ 13 มิถุนายน พ.ศ. 2557

เมื่อโดนลดเวลา Test ระบบ เราจะแก้ปัญหานี้ยังไง



เมื่อ ทุกสิ่งอย่างเกิดปัญหาขึ้นมา แต่Project ไม่ขยาย ทุกๆๆครั้งไป หวยก็มาออก กับ Phase Test นี่แหละ
เมื่อไม่ได้เป็นต้นทาง เป็นปลายทางแล้ว สุดท้ายจะทำยังไงล่ะ ให้ทดสอบครบคุมทุกสิ่งอย่าง ที่แสนจะมากมาย
แต่ก็ไม่มีทางเลือกให้มากเท่าไหร่ สุดท้ายปัญหาเค้า ก็ถูกส่งไปหาคนทำ Test ตั้งแต่ หัวลงมาเลย จะต้องมีการ Plan งานการ Test กันใหม่ เพื่อให้ทันตาม Time line ที่โดนเบียดเบียนไป สุดท้ายก็มานั่งหาทางทำให้ Test ทัน แต่มีอะไรบ้างที่เราจะต้องคำนึงถึงบ้างล่ะเมื่อเวลาถูกแย่งไป ก็ตั้งมาเริ่ม การทำกระบวนการดงัต่อไปนี้ กัน
1.       ลดขอบเขตการทดสอบลงมา ให้ทันกับ Time line ที่มีอยู่  แล้วจะต้องลดส่วนไหนบ้างล่ะ?
เราก็ต้องมาพิจารณาจากความสำคัญของแต่ละส่วน
1.1    Function ส่วนไหนที่เป็นส่วนสำคัญ และมีการใช้งานบ่อยๆ ถ้าไม่เอาขึ้นไป มีปัญหาแน่ๆ และจะสร้างปัญหาในภายหลังถ้าระบบมีการใช้งาน
1.2    Function ส่วนไหนที่มีผลกระทบมากๆ ถ้าไม่สามารถใช้งานได้ เช่น พวกเงินๆทองๆ ที่ผิดไม่ได้เลย เป็นต้น
1.3    Function ที่Develop เสร็จและส่งให้ทำการทดสอบได้ก่อน Phase Test จะขึ้น
1.4    Function ไหน ที่ค่อนข้างจะซับซ้อน และไปไม่รอดแน่ๆ มี Defect เยอะแน่ๆ หรือ รีบๆ Develop มาเพื่อให้งานเสร็จ
2.       เมื่อได้คำตอบมาแล้วจากข้อ 1 ที่นี้เราก็มานั่งหาวิธี ที่จะทำยังไง ให้ สามารถ Test ได้มากที่สุด เพื่อให้ครบคลุมทุกสิ่งอย่างที่มีอยู่  วิธีการที่ใช้กันก็มีดังนี้
2.1    ขอคนเพิ่ม ใครนั่งว่างไม่ค่อยมีงานก็ ขอมาทำงานส่วนนี้ด้วย ทั้งนี้ทั้งนั้น Test Script ที่ทำการเขียนขึ้นจะต้องเข้าใจง่าย ประมาณว่า เด็กอ่านหนังสือออกก็สามารถทำตามได้
2.2    ลดคุณภาพการทดสอบลง ตรงไหนควรเน้นเยอะๆ ตรงไหนไม่ต้องเน้นมาก เช่น Layout ยังผิดอยู่ ก็ปล่อยผ่านๆไปก่อน แต่ถ้า Workflow ไม่สามารถส่งงานต่อได้อันนี้จะต้องเน้นมากๆเป็นต้น
2.3    หรือ ถ้า Working Day โดนแย่ง ก็ มาเพิ่มวันหยุดเข้าไปแทน แต่หลายคนในทีมที่ต้องมาทำงานคงไม่ปลืม มากนัก ถ้าไม่มีโอที ด้วยแล้วล่ะก็ คงจะต้องไม่อยากทำงานกันเป็นแน่

กระบวนการเบื้องต้นทั้งหลายเหล่านี้ อาจจะต้องใช้ความชำนาญการ ในการทราบควาทสำคัญของทาง ผู้ใช้งานเพื่อบ่งบองความสำคัญ, ตัวคนพัฒนาเองที่ต้องบอกว่าส่วนไหนทำเสร็จแล้วบ้าง เพื่อให้ทุกๆผ่านรับทราบผลที่อาจจะเกิดขึ้น

วันจันทร์ที่ 2 มิถุนายน พ.ศ. 2557

ก่อนจะทำ Pentest ต้องรู้อะไรก่อนบ้าง

  ก่อนที่จะทำ PenTest นั้น คงไม่งงกับ ความหมายของคำนี้กัน  มันคือการทดสอบระบบในเรื่องของความปลอดภุยของระบบนั่นเอง ระบบมีความปลอดภัยขนาดไหน ที่จะไม่โดน Hacker เข้ามาขโมมยข้อมูลต่างๆ ไป ก่อนที่จะทำ PemTest ได้ คุณจะต้อง มีความรู้ในเชิงลึก ดังต่อไปนี้ก่อน มันจะช่วยให้ คุณทำงานได้ง่ายยิ่งขึ้น เลยทีเดียว
1. Programing Skill
C++, C# , PHP ต่างๆ ที่เกี่ยวกับ Web Application
2. Operating System Proficiency
ระบบปฏิบัติการแต่ละระบบ ไม่ว่าจะเป็นWindow หรือแม้แต่ Mac OS ว่ามีข้อจำกัดอะไรบ้าง
3. Network Infrastructure & Protocols
โครงสร้างของโครงสร้างระบบ Internet, Network Protocol ที่มีวิธีการติดต่อสือสารกันอย่างไรบ้าง
บางครั้งเมื่อเราเข้าใจในส่วนนี้แล้วอาจจะมีตัวช่วย เพื่อให้ง่ายต่อการทำงาน
อย่างเช่น Wireshark เพื่อเข้าถึงระบบในเชิงลึกได้ง่ายมากขึ้น
4. Security Tools
5. Methodology

วันพฤหัสบดีที่ 24 เมษายน พ.ศ. 2557

Testing Level



    ก่อนที่จะมีการปล่อยโปรแกรมสักตัวออกสู่ผู้ใช้งาน เราจะแน่ใจได้อย่างไรบ้างว่า มันสามารถใช้งานได้จริงนั้น ก็ต้องมำกระบวนการทดสอบระบบ(Testing) กันเสียก่อน เพื่อให้มันใจได้ว่า โปรแกรมที่นักพัฒนาสร้างขึ้นมานั้น สามารถใช้งานได้จริงนั้นเอง

   กระบวนการการทดสอบระบบนั้นแบ่งออกเป็น 4 ส่วนส่วนด้วยกัน ก่อนที่จะปล่อยไปสู้ผู้ใช้งาน โดย 4 ส่วนนั้นมีดังนี้


  • Unit testing
  • Integration testing
  • System testing
  • Acceptance testing
    หลายคนคงคิ้วโก่ง กันไปล่ะ แล้ว " Regression testing" หายไปไหนล่ะ ในส่วนนี้  Regression testing ไม่ใช่ Level ของการทดสอบนั้นเอง แต่  Regression testing เป็นชนิดของการทดสอบ ของทั้ง 4 Level ข้างต้นเลยต่างหาก   Regression testing เป็นการ Endure ว่าที่เราทำการทดสอบมาเนี่ย ได้ผลตามนั้นจริงๆๆนะ ซึ่งสามารถเกิดขึ้นได้ทั้ง 4 Level ของการทดสอบรพบบเลย


      ทีนี้ เรามาดูกันว่าทั้ง 4 Level นั้นแต่ละส่วนเค้าทำอะไร หรือมีกระบวนการอย่างไรบ้าง
  1. Unit testingในส่วนนี้ถ่อเป็นการทดสอบระดับแรกเลยก็ว่าได้ จะเป็นการทดสอบที่เจอาะจงลงไปแต่ละ Unit ของตัวโปรแกรม หรือส่วนประกอบของตัวโปรแกรมว่าครบถ้วนหรือไม่ ซึ่ง Unit Test อาจจะมากไประดับของ Function เลยก็ว่าได้ และในส่วนนี้เราอาจะใช้การทดสอบแบบ  White-box Testing method ก็ได้  ในส่วนนี้เมื่อมีการเปลี่ยนแปลง Code จะส่งผลมายังส่วนนี้ เพราะฉะนั้น ควรที่จะทำส่วนนี้ให้เสร็จโดยเร็วถ้าเป็นไปได้ และส่วนนี้เองผู้ทำการทดสอบจะต้องเป็นโปรแกรมเมอร์ หรือผู้พัฒนาระบบนั้นเองที่จะเป็นผู้ทำการทดสอบในส่วนนี้ให้ถูกเสียก่อนที่จะส่งมอบงานให้ทาง Tester ทพการทดสอบระบบต่อไป
  2. Integration testing หลังจากที่นักพัฒนาระบบทำการทดวอบ Unit Test เรียบร้อยแล้ว และพร้อมที่จะส่งให้กับ Tester เพื่อทำงานต่อนั้น  Tester หรือ นักทดสอบระบบ จะทำการทดสอบในส่วนของ Unit Testing แอบแฝงอยู่ด้วยนั้นเอง แต่การทดสอบในส่วนหลักๆคือ การทดสอบในแต่ละFunction/Module ว่าสามารถทำงานได้หรือไม่นั้นเอง เมื่อมีการส่งค่าของแต่ละ Field ไปตาม Function/Module แล้ว มีผลกระทบอะไรหรือไม่ ซึ่งจะต่างจาการทำ Unit Testing ของ โปรแกรมเมอร์ ในส่วนนี้จะใช้วิธีการทดสอบที่หลายหลายวิธีในการทดสอบ แล้วแต่ผู้ทดสอบเห็นสมควร เนื่องจากแต่ละระบบมีการจัดการหรือกระบวนการไม่เหมือนกัน
  3. System testing ในส่วนนี้ถือเป็นด่านแรกของการ การทดสอบทั้งหมดของโปรแกรม เพื่อดูว่าโปรแกรมสามารถทำได้คสามความต้องการของผู้ใช้งานหรือไม่ ในส่วนนี้เราจะเริ่มมองเห็นความเป็นมาตราฐานของโปรแกรม มีการแบ่งผู้ใช้งานในการเข้าระบบให้เห็น เหมือนการใช้ระบบจริง มีการจะลองสภาพแวดล้อมการทำงานให้เหมือนกับการทำงานจริงๆ ทั้งทางด้านArchitecture หรือแม้แต่ตัว Software อื่นๆ ที่ต้องติดตั้ง ในเครื่องของผู้ใช้งานเอง   ในส่วนนี้จะมีความสำคัญมาก เนื่องจากจะเป็นจังหวะที่ มีการรวมเอา Technical,Architecture,Functional และ Business requirement มาทำการทดสอบให้เหมือนกับผู้ใช้งานจริงๆ ทำการใช้งาน  
  4. Acceptance testing ในส่วนนี้เป็นขั้นตอนสุดท้ายในการทดสอบ ในระหว่าง SDLC นี้อาจจะมีบางขั้นตอนที่มีความต้องการของผู้ใช้หายไปในระหว่างกระบวนการ ขั้นตอนนี้ ผู้ใช้งานจริงๆ จะเข้ามามีสาวนร่วมในการทดสอบระบบก่อนที่จะใช้งานจรืง ว่ามีส่วนไหนไม่เหมาะสมกับความต้องการหรือไม่ ถ้าตัวโปรแกรมตอบสนองตามความต้องการหรือเสร็จเรียบร้อยก็จะนำเอาตัวโปแกรมนี้ไปใช้งานจริง

      สุดท้ายนี้ การที่ผ่านการทดสอบระบบนี้จะทำให้ตัวโปรแกรมมีคุณภาพเพิ่มมากขึ้น แต่ก็ไม่ได้มายความว่า Defect ที่เเกิดขึ้นหลังจากนี้จะมีอีกไม่ได้ แน่นอนถ้าการทดสอบดีอาจจะไม่เกิดขึ้นหลายคนคงคิดแบบนี้ แต่เมื่อมี Technology ที่สูงขึ้น มีระบบ หรือมีSoftware บางตัวที่มีผลกับโปรแกรมก็อาจจะเกิดขึ้นได้ จากหลายปัจจัย เช่น บางครั้งอาจจะมีการ Update ตัว Software บางตัวในเครื่อง ผู้ใช้งานก็อาจจะมีผลต่อหน้าจอของโปรแกรมก็ได้ บางครั้งโปรแกรมที่พัฒนาขึ้นต่างมีข้อจะกัดที่แตกต่างกันไปนั่นเอง หากจะให้ดีแล้ว ควรจะมีการทดสอบระบบเพื่อเป็นการการันตีได้ระดับนึงว่า ระบบที่ท่านจะนำเอาไปใช้นั้น จะได้ไม่ใช้งานได้จริง และไม่ผิดวุ๖ถุประสงค์


วันจันทร์ที่ 21 เมษายน พ.ศ. 2557

Define Testing dictionary (1)




 วันนี้เรามานั่งดูความหมายของ คำแต่ละคำของการทดสอบร้นที่มีใช้ๆกันะบบ (Software Testing) กันว่า ในแต่ละคำที่ใช้ๆกันนั้น มีความมายว่าอะไรกันบ้าง เพื่อให้สามารถแยกความแตกต่าง และจุดประสงค์ในหารทำได้อย่างชัดแจนมากขึ้นกว่าเดิม

 Peak load testing:  เป็นการทดสอบการทำงานของระบบในช่วงเวลาหนึ่งที่ มีการทำรายการมากที่สุดที่ระบบสามารถจะรองรับได้ เพื่อทดสอบประสิทธิภาพของระบบนั้นเองว่าสามารถรองรับการประมวลได้มากแค่ไหน
Performance testing: จะเป็นการทดสอบประสิทธิภาพของระบบว่าสามารถใช้ระยะเวลามากน้อยแค่ไหน ในการทำรายการ
Recovery testing: การทดสอบการกู้ระบบ เป็นการทดสอบในกรณีที่เกิดระบบล่ม
Storage testing:  เป็นการทดสอบในการเก็บข้อมูลว่าระบบนั้นมาใสรถเก็บข้อมูลได้มากน้อยเพียงใด
Procedure testing: การทดสอบกระบวนการ การจัดทำคู่มือเอกสารการใช้งาน ว่าผู้ใช้งานสามารถที่จะเข้าใจเอกสารที่ได้ทำขึ้นมากน้อยแค่ไหน
User testing: เป็นการทดสอบการใช้งานจริง โดยมีผู้ใช้งานเป็นผู้ทดสอบเอง เพื่อให้แน่ใจว่าผู้ทดสอบนั้นสามารถแก้ปัญหา หรือสามารถทำอย่างไรได้บ้างเมื่อพบปัญหาที่เกิดขึ้น
Validation Test: เป็นการตรวจสอบระบบที่ทำงานขึ้นมานั้นถูกต้องหรือไม่ ในส่วนนี้จะถูกเริ่มหลังจากที่มีการพัฒนาระบบเรียบร้อยแล้ว พร้อมที่ทีม Tester จะเข้ามาทำการทดสอบระบบ ในส่วนนี้เราจะตรวจสอบว่า ระบบทำงานถูกต้อง ตรงกับที่ Requirement ที่  user ต้องการ เช่นการทำ unit Testing, Integration Testing และ System Testing
Verification:การตรวจสอบว่าการพัฒนาสร้างระบบทำอย่างถูกต้องหรือไม่ จะถูกเริ่มขึ้นตั้งแต่การพัฒนาระบบและจะดำเนินไปจนระบบถูกพัฒนาจนเสร็จ คือตั้งแต่ ความถูกต้องครบถ้วนของ requirement ของ user ขั้นตอนการเก็บ requirement ของ user, การออกแบบระบบงานเป็นไปตาม requirement ที่ user ต้องการ และ ความถูกต้องของการพัฒนาโปรแกรมว่ามาสามารถพัฒนาโปรแกรมเป็นไปตามเอกสารที่ได้ทำการออกแบบหรือไม่นั้นเอง
Black Box Testing:เป็นการทดสอบโดยไม่คำนึงถึงCoding ภายในโปรแกรม สเป็นการทดสอบในส่วนของ Functionต่างๆ ของโปรแกรมว่าทำงานได้ถูกต้องหรือไม่ เช่น สามารถคิดคำนวณ ค่าต่างๆได้ถูกต้อง ในส่วนนี้เราจะดูแค่ ค่า Input ที่กรอกลงในโปรแกรม และค่า Output ที่เป็นผลที่ได้ออกมา ว่าโปรแกรมสามารถทำงานได้ถูกต้องหรือไม่
White Box Testing:เป็นการทดสอบเพื่อดูโครงสร้างของโปรแกรม
      ทั้งหมดนนี้เป็นส่วนหนึ่งเท่านั้นที่เป็นศัพท์ที่ใช้ในการทดสอบระบบ ซึ่งส่วนมากผู้ที่ทำงานเกี่ยวกับการทดสอบระบบจะมีการแบ่งส่วนมนกรทดสอบที่แยกลึกๆ ออกไปอีก ขึ้นอยู่กับการใช้งาน และความต้องการของแต่ละระบบ และองค์กรนั้นเอง

วันอาทิตย์ที่ 20 เมษายน พ.ศ. 2557

Functional Testing Vs Non-Functional Testing



               Functional Testing : จะเป็นการทดสอบให้มีความขัดแย้งกับ Business requirement ว่า Function นั้นสามารถทำตามที่ ผู้ใช้งานต้องการได้หรือไม่ ฟังดูเหมือนงง เช่น ในหน้าจอ log in เข้าระบบ ระบบต้องการให้มี user และ Password ในการ เข้าระบบ Functional Testing จะทดสอบว่า เมื่อเราใส่ user และ password ผิด เราจะสามารถเข้าระบบได้หรือไม่นั้นเอง

            ในส่วนนี้ Functional Testing จะมีการทดสอบดังต่อไปนี้คือ

  •  Unit Testing
  • Smoke testing / Sanity testing
  • Integration Testing (Top Down, Bottom up Testing)
  • Interface & Usability Testing
  • System Testing
  • Regression Testing
  • Pre User Acceptance Testing(Alpha & Beta)
  • User Acceptance Testing
  • White Box & Black Box Testing
                Non-Functional Testing:ในส่วนนี้จะเเกี่ยวก็ป็นการทดสอบกับความต้องการใช้งานของ Client เอง เช่น มีจำนวน user มากแค่ไหนที่เข้ามาใช้ระบบ เมื่อเข้ามาใช้ระบบพร้อมกัน ระบบอ่จจะ load มาก เราก็จะทดการจะลองในส่วนนี้ หรือแม้แต่ Performance ของระบบเอง

 ในส่วนนี้ Non-Functional Testing จะมีการทดสอบดังต่อไปนี้คือ
  • Load and Performance Testing
  • Ergonomics Testing
  • Stress & Volume Testing
  • Compatibility & Migration Testing
  • Data Conversion Testing
  • Security / Penetration Testing
  • Operational Readiness Testing
  • Installation Testing
  • Security Testing (Application
  • Security, Network Security,System Security)

วันพฤหัสบดีที่ 17 เมษายน พ.ศ. 2557

Test Plan เขียนแบบไหนกัน

หลักการเบื้องต้นเพื่อเขียน Test Plan

1.       อธิบายจุดประสงค์ในการทดสอบ เช่น โปรแกรม, ระบบและ Hardware ที่คุณจะทำการทดสอบนั้นเป็นอย่างไร
2.       อธิบายรายการที่ทำการทดสอบในระบบว่าจะมีการทดสอบอย่างไร แบ่งการทดสอบในโปรแกรมเป็นอะไรบ้าง
3.       อธิบายถึงวิธีที่จะทำการทดสอบ และหลักทางด้านวิชาการที่จะใช้ทดสอบนั้นเองว่ามีอะไรบ้าง แต่ละส่วนจะทดสอบอะไรบ้าง
4.       อธิบายว่าเมื่อไหร่การทดสอบระบบถึงจะเริ่มขึ้น ตั้งแต่การจัดเตรียมข้อมูลในการทดสอบ, การทดสอบ, ผลของการทดสอบพร้อมการวิเคราะห์ผลที่ได้ ในแต่ละช่วงที่ทำการทดสอบ
5.       การลำดับความสำคัญ  Criteria for beginning of testing ว่าควรจะให้ความสำคัญกับส่วนไหนเป็นอย่างแรกก่อนที่จะเริ่มการทดสอบระบบ เช่น
-       Test Platform  เป็นอย่างแรกว่าพร้อมสำหรับการใช้งานหรือไม่
-       Functional ของโปรแกรมสามารถพัฒนาได้ทันตาม requirement ของ Functional
-       ความพร้อมของเอกสารทั้งหมดที่จะใช้ในการทดสอบจะต้องเรียบร้อยไม่มีการแก้ไข
6.       การลำดับความสำคัญ Criteria for ending of testing ว่าหลังจากที่ทำการทดสอบระบบแล้วจะได้อะไรบ้าง
-       ผลการทดสอบระบบ ที่พบว่ามีคุณภาพมากน้อยแค่ไหนโดยจะวัดได้จาก defect ที่เกิดขึ้น เช่น เมื่อได้ใช้โปรแกรมไประยะหนึ่งและไม่มีการพบdefect ที่เกิดขึ้นกับตัวโปรแกรม และไม่มีการแก้ไข source code ในช่วงเวลาดังกล่าว
-       แต่สุดท้ายแล้วจะต้องมีเอกสารเพื่อแสดงรายละเอียดเหล่านี้ด้วย
-       สภาพแวดล้อมของระบบภาพใต้การทดสอบ ว่ามีการ set up hardware อะไรบ้าง มีการติดตั้งตัว software อะไรบ้างในระบบ
-       มีการใช้ Tool อะไรบ้างในการทดสอบระบบ และตัว software เองมีการ configuration ค่าอะไรบ้าง เพื่อใช้ในการทดสอบ Automated Testing
-       การบริหารความเสี่ยง และการจัดการความเสี่ยงที่อาจจะเกิดขึ้น
นอกจากนี้ก็ยังจะมี
                                A. Master Plan or Master Test Plan:  Master Plan จะมีการเขียนล้อตามกับ Master Test Plan ซึ่ง Master Plan จะอยู่ใน level ที่สูงกว่านั้นเอง ในส่วนของ Master Test Planนั้น จะบ่งบอกเจาะจงถึงสิ่งที่จะทดสอบ, ชนิดของการทดสอบ และ ระยะเวลาที่จะใช้ในการทดสอบ ในการทำ 1 Project นั้นจะมี Master Test Plan แค่หนึ่งเดียว แต่แตกออกเป็นหลายรายละเอียด
                               
                              B. Test Plan
                              C. Product Acceptance Plan: อธิบายถึงรายละเอียดการทดสอบ หลัการทดสอบ UAT วันที่ในการทดสอบเป็นต้น

7.  Review and Approval
     ในส่วนนี้จะเป็นการเพิ่มรายชื่อสมาชิก ที่เกี่ยวข้อง เช่น Lead Tester, Test Manager (Quality Manager),
Head of Development, Project Manager เพื่อreview ผลและเอกสารที่ได้จัดทำขึ้น และเป็นการแจ้งผลเพื่อรับทราบโดยทั่วกันและรับทราบโดยทั่วกันด้วย



วันอังคารที่ 15 เมษายน พ.ศ. 2557

Software Development Life Cycle (SDLC)

          
            SDLC คือกระบวนการการทำงานของการพัฒนา software project ภายในองค์กร ซึ่งจะประกอบไปด้วย รายละเอียดการPlan ในการทำงาน เช่น จะมีการพัฒนาอย่างไร, มีการดูแลรักษาอย่างไร, จะมีsoftwareระบบอะไรมาใช้แทน ระบบเก่า ระบบใหม่ควรจะเป็นอย่างไร SDLC จะเป็นตัวกำหนดกระบวนการการพัฒนาและคุณภาพของตัว Software ที่ได้ทำการพัฒนาขึ้นมา โดยสามารถแบ่งการทำงานได้ดังนี้

1.       Planning and Requirement Analysis

2.       Defining Requirements

3.       Designing the product architecture

4.       Building or Developing the Product

5.       Testing the Product

6.       Deployment in the Market and Maintenance

 

                เมื่อทราบถึงขั้นตอนไปแล้วก็มาดูกันว่าในแต่ละส่วนที่มีนั้นรายละเอียดเป็นอย่างไรกันบ้าง

·         Planning and Requirement Analysis
ในส่วนนี้จะเป็นส่วนที่สำคัญมากที่สุดใน SDLC เลยก็ว่าได้ ในส่วนนี้จะเป็นการปัจจัยการพัฒนาระบบจากผู้ใช้งาน หรือ ผู้ที่มีความรู้ทางด้านธุรกิจในแต่ละสาขา ซึ่งข้อมูลในส่วนนี้จะถูกใช้เพื่อเป็นการควบคุม การผลิตความสามารถของตัวsoftwareเองที่สามารถรองรับธุรกิจ, กระบวนการ ตลอดจนเทคนิคในการพัฒนา ความเสี่ยงที่อาจจะเกิดขึ้น เมื่อนำโปรแกรมไปใช้ เพื่อให้เกิดความเสี่ยงน้อยที่สุด

·         Defining Requirements

ในส่วนนี้จะเป็นการเก็บรวบรวมข้อมูลความต้องการของระบบจากผู้ใช้งานโดยตรง โดยมีการจัดทำขึ้นเป็นเอกสาร ที่เรียกว่า Software Requirement Specification  document หรือ SRS” เอกสารจะประกอบไปด้วย ความต้องการทั้งหมดของผู้ใช้งาน  ในส่วนนี้จะถูกนำไปวิเคราะห็เพื่อ ทำการ designed และพัฒนาระบบนั่นเอง

·         Designing the product architecture

 ในส่วนนี้เราจะใช้เอกสาร SRS ในการอ้างอิงเพื่อใช้ในการ design โครงสร้างของระบบที่เรียกว่า  Design Document Specification หรือ DDS ภายในเอกสาร DDS จัมีการระบุรายละเอีดยของsoftware ว่ามีโครงสร้างเป็นอย่างไร มีการแบ่งโครงสร้างเป็นส่วนย่อยอะไรบ้าง มีการไหลของข้อมูลเมื่อใช้งานอย่างไร ไปเชื่อมกับระบบอื่นๆอย่างไรบ้าง ในส่วนไหนบ้างที่มีการเชื่อมต่อบ้าง

·         Building or Developing the Product

ในส่วนนี้จะเป็นการพัฒนาsoftware โดยจะมีการเขียน Coding ของโปรแกรม โดยอ้างอิงจาก เอกสาร DDS  เพื่อให้เป็นไปตามความต้องการของผู้ใช้งาน

·         Testing the Product

ในส่วนการทดสอบระบบจะเป็นส่วนที่ค่อนข้างจะซับซ้อนใน SDLC เนื่องจากจะมีการค้นหาข้อผิดพลาดของตัวsoftware ซึ่งก็จะมีการ reporting, Tracking, Fixed และ retested จนกว่าจะได้software ที่มีคุณภาพ ตาม SRS ที่เขียนขึ้นมา

·         Deployment in the Market and Maintenance


เมื่อsoftware ผ่านการทดสอบเรียบร้อยแล้ว จะมีการนำตัวsoftware มาทดสอบเพื่อใช้ในงานจริงในสภาพแวดล้อมที่เกิดขึ้นจริงตามแต่ละธุรกิจในส่วนนี้ จะเรียกว่าเป็นการทีสอบแบบนึงด้วยคือ UAT- User acceptance testing ซึ่งถ้าsoftware สามารถตอบโจทย์ของธุรกิจได้อย่างครบถ้วนแล้ว ก็จะมีการเอาไปใช้งานอย่างจริงจัง