บทที่ 13 การทดสอบซอฟต์แวร์ ( Software Testing )
การทดสอบซอฟท์แวร์ ( Software Testing ) “ Testing is the process of executing a program with the intent of finding errors ” Glen Myers
Software Testing Methods Strategies white-box methods black-box
Test Case Design "Bugs lurk in corners and congregate at boundaries ..." Boris Beizer OBJECTIVE CRITERIA CONSTRAINT to uncover errors in a complete manner with a minimum of effort and time
White-Box Testing เป็น Structured Testing ดูโครงสร้างของโปรแกรม พยายามให้ทุกๆ Statement ถูก Execute อย่างน้อย 1 ครั้ง
White-Box Testing
Basis Path Testing เป็น idea ที่ช่วยในการทำ White-box ให้ง่ายขึ้น เปลี่ยน Flowchart ให้เป็น Graph ที่ประกอบด้วย Vertices และ Edge
1 3 2 6 8 7 4 5 9 10 11
1 2, 3 6 4, 5 7 8 9 10 11
Independent Path มี 4 Path
Cychomatic Complexity : V(G) เป็นวิธีที่ช่วยหา Basis Path V(G) = E - V + 2 เมื่อ V : Vertices E : Edge
Black-Box Testing เป็น Functional Testing มี Input แล้วต้องรู้ว่า Output มีรูปแบบใดบ้าง
Black-Box Testing Input Output
Equivalence Partitioning เป็น idea ที่ช่วยในการทำ Black-box ให้ง่ายขึ้น พยายามแบ่งประเภทของ Input , Output Test ทีละประเภท
Testing Strategy integration test unit test validation system test
Unit Testing Test ทีละ Component * Function * Procedure ไม่มี Response อื่นมาเกี่ยวข้อง
Unit Testing module to be tested results test cases software engineer
Unit Testing module to be tested interface local data structures boundary conditions independent paths error handling paths test cases
Integration Test Module Testing @ Test ทีละ Module Sub-System Testing @ Test Module ที่เกี่ยวข้องกัน @ ระวังการ Interface ระหว่าง Module
Integrate Testing Top-down Testing Bottom-up Testing Thread Testing Stress Testing Incremental Testing
Top-down Testing Test จากบนลงล่าง Sub-system Module Unit
Top Down Integration top module is tested with stubs stubs are replaced one at a time, "depth first" as new modules are integrated, some subset of tests is re-run A B C D E F G
ข้อดีของ Top-down Testing เจอ errors เร็ว ลด Cost ป้องกันการ Redesign เห็นภาพรวมง่าย สาธิตให้ User ดูได้เร็ว มีผลดีต่อผู้ร่วมงาน
ข้อเสียของ Top-down Testing ทำได้แต่เฉพาะ Level ล่างๆ ( Unit , Module )
Bottom- Up Integration F G drivers are replaced one at a time, "depth first" C worker modules are grouped into D E builds and integrated cluster
Bottom-up Testing Test จาก ระดับล่างขึ้นบน ข้อดีคือ ข้อเสียของ Top-down
Thread Testing Test ทุกๆ Process ใน level เดียวกัน อาจรวม Top-down และ Bottom-up เข้าด้วยกัน
Stress Testing ทดสอบพฤติกรรมการ Fail ของระบบ เมื่อมีอะไรมากระทบ Soft Fail Hard Fail
Incremental Testing เป็นการเพิ่ม Module ที่ Test แล้วมาไว้ รวมกัน
System Testing Test ทั้งระบบ ( รวม Sub-system ต่างๆเข้าด้วยกัน )
Validation or Acceptance Testing Test จาก Data จริงๆ ของลูกค้า ตรงกับ System Requirement Definition หรือไม่
… … การเงิน System Sub- ค่าตำแหน่ง เงินเดือน System ทางวิชาการ Module ค่าล่วงเวลา ภาษี ณ ที่จ่าย เสาร์, นัก เย็น โสด Unit สมรส หย่าร้าง อาทิตย์ ขัตฤกษ์
การกำหนดมาตรฐานของกระบวนการในการ ทดสอบ เพื่อ Test Planning การกำหนดมาตรฐานของกระบวนการในการ ทดสอบ เพื่อ ครอบคลุม Errors Minimum Cost
Test Plan ประกอบด้วย Testing Process Requirement Traceability Tested Items Testing Schedule Test Recording Procedure H/W and S/W Require Constraints
Test Phase Earlier Phase Program Defect Laster Phase V&V
Verification & Validation V&V เพื่อหาข้อผิดพลาดของระบบ เพื่อประเมิน/สอบสวนว่า ระบบสามารถอยู่ในสถานะ ที่ใช้งานได้
การ Testing ตาม V&V แบ่งได้ 2 ประเภท Statistical Testing Defect Testing
Statistical Testing ออกแบบการ Testing เพื่อสะท้อนให้เห็นถึงปริมาณ Actual inputs/outputs รวมถึงแสดงการประมาณค่าน่าเชื่อถือของระบบที่อาจเป็นไปได้
Defect Testing ออกแบบเพื่อเปิดเผย/แสดงผลกระทบ (Errors) ในระบบ
Test Data & Test Case Test Data เป็นการ Test Data ที่ใช้ในการ Drive Program Test Case รวมการ Test input + output + function spec. เข้าด้วยกัน
Alpha & Beta Testing Alpha Test Software Customer test Developer Site Customer Site
Alpha & Beta Testing Beta Test Software Customer test Developer reviews Software Developer Site Customer Site
Who Test Software ? Developer Independent tester Customer
บทที่ 14 เอกสารประกอบระบบงาน และการบำรุงรักษา ( Documentation and Maintenace )
Documentation เอกสารประกอบงาน เป็นเอกสารที่อธิบายถึงระบบงานทั้งทางด้านภาพรวมของระบบงาน , ด้านเทคนิค และด้านการใช้งาน
Documentation ประกอบด้วย * System Documentation * User Documentation
System Documentation ประกอบด้วย * Requirement Specification * System Achitecture * Description Of the Design * Program Achitecture * Source Code * Test Plans And Reports
User Documentation ประกอบด้วย * เอกสารองค์ประกอบของงาน * คู่มือการใช้งานเบื้องต้น * คู่มืออ้างอิงระบบงาน * เอกสารการติดตั้งระบบ * คู่มือผู้บริหารระบบ
เอกสารองค์ประกอบของงาน ( Functional description) อธิบายขอบข่ายการทำงานทั้งหมด เป็นภาพรวมที่มองได้ชัดเจน
คู่มือการใช้งานเบื้องต้น ( Introductory Manual ) แนะนำการใช้งานตั้งแต่แรก มีคำอธิบายข้อผิดพลาด มีตัวอย่างให้ผู้ใช้ทดลองทำ
คู่มืออ้างอิงระบบงาน ( Reference Manual ) อธิบายโครงสร้างการใช้งานของระบบ มีวิธีแก้ไขข้อผิดพลาด
เอกสารการติดตั้งระบบ ( Installation Document ) อธิบายวิธีการติดตั้งอย่างละเอียด อธิบายระบบฮาร์ดแวร์ที่จำเป็นต้องใช้
( System Administrator Guide ) คู่มือผู้บริหารระบบ ( System Administrator Guide ) อธิบายการทำงานของระบบ ที่ไปสัมพันธ์กับระบบงานอื่นๆ
Maintenance การพัฒนาโปรแกรมหรือระบบงานที่พัฒนาเสร็จแล้วและส่งมอบให้ผู้ใช้ ใช้งานแล้ว แต่ต้องมีการแก้ไขปรับปรุงให้ดีขึ้นและเหมาะสมกับสถานการณ์ปัจจุบัน