Skip to content

Latest commit

 

History

History
71 lines (71 loc) · 10.7 KB

11.0. Software Testing.md

File metadata and controls

71 lines (71 loc) · 10.7 KB

Software Testing

  • การทดสอบมีจุดมุ่งหมายเพื่อแสดงให้เห็นว่าโปรแกรมทำในสิ่งที่เราตั้งใจและช่วยให้ค้นพบข้อบกพร่องของโปรแกรมก่อนที่จะนำมาใช้งาน
  • การทดสอบซอฟต์แวร์เป็นเรียกใช้โปรแกรมจริงโดยใช้ข้อมูลเทียม
  • ในการทดสอบ เราตรวจสอบผลลัพธ์ของการทดสอบเพื่อหาข้อผิดพลาด ความผิดปกติต่าง ๆ หรือข้อมูลเกี่ยวกับ non-functional ของโปรแกรม
  • การทดสอบ ทำเพื่อหาข้อผิดพลาด ไม่ใช่ทำเพื่อที่จะบอกว่า โปรแกรมของเราไม่มีข้อผิดพลาด Program testing goals
  • เพื่อแสดงให้นักพัฒนาซอฟต์แวร์และลูกค้าเห็นว่าซอฟต์แวร์ตรงกับ software requirement
  • สำหรับซอฟต์แวร์ที่ลูกค้าออกแบบเอง ควรมีการทดสอบอย่างน้อยหนึ่งข้อสำหรับแต่ละ requirement
  • สำหรับผลิตภัณฑ์ซอฟต์แวร์ทั่วไป ควรมีการทดสอบคุณลักษณะระบบทั้งหมด รวมถึง combination ของคุณลักษณะเหล่านั้น
  • เพื่อค้นหาสถานการณ์ที่ซอฟต์แวร์ไม่ถูกต้องไม่พึงประสงค์หรือไม่เป็นไปตาม software requirement
  • เพื่อขจัดพฤติกรรมที่ไม่พึงประสงค์ เช่น ระบบล่ม, การโต้ตอบที่ไม่พึงประสงค์กับระบบอื่น, การคำนวณที่ไม่ถูกต้อง และความเสียหายของข้อมูล เป็นต้น Validation and defect testing
  • เป้าหมายแรกนำคือการทดสอบความถูกต้อง
  • คาดว่าระบบจะทำงานได้อย่างถูกต้องโดยใช้ test case ที่กำหนดซึ่งสะท้อนถึงการใช้งานที่คาดไว้ของระบบ
  • เป้าหมายที่สองคือการทดสอบข้อบกพร่อง
  • test case ถูกออกแบบมาเพื่อแสดงข้อบกพร่อง
  • test case ในการทดสอบข้อบกพร่องอาจทำให้เกิดความคลุมเครือและไม่จำเป็นต้องสะท้อนถึงระบบที่ใช้ตามปกติ Testing process goals
  • การทดสอบความถูกต้อง
  • เพื่อแสดงให้ผู้พัฒนาและลูกค้าระบบเห็นว่าซอฟต์แวร์มีคุณสมบัติตรงตามข้อกำหนด
  • ความสำเร็จในการทดสอบนี้คือ การแสดงให้เห็นว่าระบบทำงานตามที่ตั้งใจ
  • การทดสอบความบกพร่อง
  • เพื่อค้นหาข้อบกพร่องหรือข้อบกพร่องในซอฟต์แวร์ที่มีพฤติกรรมไม่ถูกต้องหรือไม่เป็นไปตามข้อกำหนด
  • ความสำเร็จในการทดสอบนี้คือ การทดสอบที่ทำให้ระบบทำงานได้ไม่ถูกต้องและทำให้เกิดข้อบกพร่องในระบบ An input-output model of program testing Verification vs validation
  • การยืนยัน (Verification):
  • "Are we building the product right”.
  • ซอฟต์แวร์ควรเป็นไปตามข้อกำหนด
  • การตรวจสอบ (Validation):
  • "Are we building the right product”.
  • ซอฟต์แวร์ควรทำในสิ่งที่ผู้ใช้ต้องการจริง ๆ V & V confidence
  • จุดมุ่งหมายของ V & V คือการสร้างความเชื่อมั่นว่าระบบนี้ ‘fit for purpose’.
  • ขึ้นอยู่กับวัตถุประสงค์ของระบบ ความคาดหวังของผู้ใช้ และสภาพแวดล้อมทางการตลาด
  • วัตถุประสงค์ของซอฟต์แวร์
  • ระดับความเชื่อมั่นขึ้นอยู่กับความสำคัญของซอฟต์แวร์ต่อองค์กร
  • ความคาดหวังของผู้ใช้
  • ผู้ใช้อาจมีความคาดหวังต่ำในบางประเภทของซอฟต์แวร์
  • สภาพแวดล้อมทางการตลาด
  • การปล่อยผลิตภัณฑ์สู่ตลาดในช่วงต้นอาจมีความสำคัญมากกว่าการค้นหาข้อบกพร่องในโปรแกรม Inspections and testing
  • การตรวจสอบซอฟท์แวร์เพื่อค้นพบปัญหาในการวิเคราะห์ระบบแบบคงที่ (static verification)
  • อาจจะใช้ tool-based document and code analysis
  • การทดสอบซอฟต์แวร์ที่เกี่ยวข้องกับทดสอบและการสังเกตพฤติกรรมของผลิตภัณฑ์ (dynamic verification)
  • ระบบถูกทดสอบด้วยข้อมูลเทียมและมีการสังเกตุพฤติกรรมการทำงาน Inspections and testing Software inspections
  • อาจจะใช้คนตรวจสอบ source code โดยมีวัตถุประสงค์เพื่อค้นหาความผิดปกติและข้อบกพร่อง
  • การตรวจสอบนี้ไม่จำเป็นต้อง run ระบบจึงอาจทำการตรวจสอบใช้ก่อนการใช้งานระบบจริงได้
  • สามารถนำไปประยุกต์ใช้กับการนำเสนอระบบ (requirements, design, configuration data, test data, เป็นต้น).
  • วิธีการนี้เป็นเทคนิคที่มีประสิทธิภาพสำหรับการค้นพบข้อผิดพลาดของโปรแกรม Advantages of inspections
  • ในระหว่างการทดสอบ เรามักจะพบว่าข้อผิดพลาดหนึ่งสามารถปกปิด (ซ่อน) ข้อผิดพลาดอื่น ๆ ได้
  • แต่เนื่องจากการตรวจสอบเป็นกระบวนการแบบคงที่ เราจึงไม่จำเป็นต้องสนใจการเชื่อมโยงระหว่างข้อผิดพลาด
  • สามารถตรวจสอบระบบเวอร์ชันที่ไม่สมบูรณ์ได้ (โดยไม่มีค่าใช้จ่ายเพิ่มเติม)
  • แต่หากโปรแกรมไม่สมบูรณ์เราจะต้องพัฒนา test harness ขึ้นมาโดยเฉพาะเพื่อทดสอบชิ้นส่วนที่พร้อมใช้งาน
  • ในขณะค้นหาข้อบกพร่องของโปรแกรม เรายังสามารถพิจารณาคุณลักษณะอื่น ๆ ที่แสดงคุณภาพที่สูงขึ้นของโปรแกรม เช่น การเป็นไปตามมาตรฐาน ความเป็น portability และ maintainability Inspections and testing
  • การตรวจสอบ (Inspections) และการทดสอบ (testing) เป็นส่วนเสริมซึ่งกันและกัน และไม่ใช่เทคนิคที่มีความคัดค้านกันเอง
  • ทั้งสองควรดำเนินการระหว่างกระบวนการ V & V
  • การตรวจสอบ (Inspections) สามารถตรวจสอบความสอดคล้องกับข้อกำหนด แต่อาจจะไม่สอดคล้องกับความต้องการที่แท้จริงของลูกค้า
  • การตรวจสอบไม่สามารถตรวจสอบคุณลักษณะที่เป็น non-functional เช่นประสิทธิภาพ, การใช้งาน ฯลฯ A model of the software testing process Stages of testing
  • Development testing
  • ระบบจะถูกทดสอบในระหว่างการพัฒนา เพื่อค้นหาข้อผิดพลาดและข้อบกพร่อง
  • Release testing,
  • ทำโดยทีมทดสอบที่แยกจากทีมพัฒนา จะทดสอบเวอร์ชันที่สมบูรณ์ของระบบก่อนปล่อยออกสู่ผู้ใช้
  • User testing
  • ผู้ใช้ (หรือผู้ที่อาจเป็นผู้ใช้ระบบ) ทำการทดสอบระบบในสภาพแวดล้อมของตนเอง