การทดสอบซอฟต์แวร์ software...

Post on 18-Oct-2019

5 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

การทดสอบซอฟต์แวร์ SOFTWARE TESTING

ความรู้เบื้องต้นของการทดสอบซอฟต์แวร์

การทดสอบซอฟต์แวร์ (Software Testing) เป็นกิจกรรมที่จัดทำ

ข้ึนเพื่อประเมินและปรับปรุงคุณภาพของซอฟต์แวร์โดยการตรวจหาข้อ

ผิดพลาดและปัญหาที่เกิดข้ึน

การที่จะตรวจสอบหาข้อผิดพลาดของซอฟต์แวร์ให้ได้มากที่สุด

นั้น ข้ึนอยู่กับกรณีทดสอบ (Test Case) ที่ทีมงานออกแบบไว้ ซ่ึงไม่ใช่

เพียงการรันซอฟต์แวร์แล้วดูว่ามีข้อผิดพลาดหรือไม่ แต่ทีมงานยังต้อง

พยายามค้นหาข้อผิดพลาดที่ไม่แสดงให้เห็น

ความรู้เบื้องต้นของการทดสอบซอฟต์แวร์(ต่อ)

ความรู้พื้นฐานที่จำเป็นต่อการทำความเข้าใจการทดสอบซอฟต์แวร์

คำศัพท์ที่ควรทราบ เช่น Error คือ การกระทำผิด Fault หรือ Defect คือ ความผิดพลาดหรือข้อบกพร่อง Failure คือ ล้มเหลว

ระดับการทดสอบซอฟต์แวร์

สามารถจำแนกระดับการทดสอบซอฟต์แวร์ออกเป็น 3 ระดับสำคัญ ได้แก่

1. การทดสอบระดับหน่วย (Unit Testing)

2. การทดสอบระดับรวมหน่วย (Integration Testing)

3. การทดสอบระบบ (System Testing)

ระดับการทดสอบซอฟต์แวร์

ระบบ

(Software System Product)

Sub-System 2Sub-System 1

Module 2 Module 1

Sub-System 3

Module 3

Unit 1 Unit 2 Unit 3 Unit 4

แสดงภาพจำลองของส่ิงที่ต้องทดสอบ

แนวทางการทดสอบซอฟต์แวร์

การทดสอบซอฟต์แวร์เริ่มต้นโดยทีมงานต้องออกแบบ กรณี

ทดสอบ (Test Case) หมายถึง ข้อกำหนดของข้อมูลนำเข้าและผลลัพธ์ที่

ต้องการจากการทำงานของโปรแกรมในสถานการณ์ต่างๆ จากนั้น ทีม

งานจะนำกรณีทดสอบที่ออกแบบไว้มากำหนดชุดข้อมูลทดสอบ (Test

Data) ให้สอดคล้องกัน เพื่อนำไปใช้ในการประมวลผลของโปรแกรม

ข้ันต่อมาเริ่มทำการทดสอบโดยการรันโปรแกรม แล้วนำผลลัพธ์ที่ได้ไป

เปรียบเทียบกับกรณีทดสอบที่ได้ออกแบบไว้ และสรุปเป็นรายงานผล

การทดสอบ

ออกแบบ กรณีทดสอบ

เตรยีมขอ้มลู ทดสอบ

ทดสอบโปรแกรม

แสดงข้ันตอนการทดสอบซอฟต์แวร์

เปรยีบเทยีบผลการ ทดสอบ

รายงานการทดสอบ

กรณีทดสอบ (Test)

ขอ้มลูทดสอบ (Test Data)

ผลการทดสอบ

วิธีการทดสอบซอฟต์แวร์

วิธีการทดสอบซอฟต์แวร์ในแต่ละระดับจะมีจุดมุ่งเน้นที่แตกต่าง

กันโดยการทดสอบหน่วยส่วนใหญ่จะมุ่งเน้นที่โค้ดโปรแกรมและเม่ือ

ทดสอบในระดับรวมหน่วยก็จะมุ่งเน้นที่ส่วนประสานการทำงาน

ระหว่างโมดูลว่าเกิดปัญหาข้ึนหรือไม่หรือทำงานได้ถูกต้องหรือไม่

สุดท้ายคือ การทดสอบระบบ ซ่ึงเป็นการทดสอบที่อยู่นอกเหนืองาน

วิศวกรรมซอฟต์แวร์

System Testing

Integration Testing

Unit Testing

Alpha Beta Perform Recovery Stress Security!Top Down Bottom Up Regression Validation

Black Box White Box

แสดงวิธีที่ใช้ในการทดสอบซอฟต์แวร์แต่ละระดับ

การสง่มอบ

สว่นประสาน

โคด้โปรแกรม

การทดสอบระดับหน่วย

การทดสอบระดับหน่วย (Unit Testing) เป็นการทดสอบหน่วย

ย่อยที่ดีที่สุดของซอฟต์แวร์ทีละหน่วยอย่างอิสระต่อกัน เพื่อค้นหาข้อ

ผิดพลาดหรือจุดบกพร่องของแต่ละหน่วย ซ่ึงหน่วยย่อยต่าง ๆ อาจ

เป็นไปได้ทั้งโปรแกรมย่อยแอปพลิเคชั่น หรือโมดูลก็ได้ ข้ึนอยู่กับการ

จำแนกของแต่ละทีมงาน

การทดสอบระดับนี้จะทดสอบด้านต่างๆ ของแต่ละหน่วย

(ภายในขอบเขตของหน่วยนั้น) ซ่ึงทีมงานสามารถทดสอบหลาย ๆ

หน่วยได้พร้อมๆ กัน พารามิเตอร์ หรือส่ิงที่ทีมงานต้องทดสอบ ใน

ระดับหน่วยมี ดังนี้

1. โครงสร้างข้อมูล (Data Structure)

2. เง่ือนไขขอบเขต (Boundary Condition)

3. เส้นทางการประมวลผลอิสระ (Independent Process Path )

4. เส้นทางการประมวลข้อผิดพลาดและการแสดงข้อผิดพลาด

(Error Processing Path)

การทดสอบระดับหน่วย

การทดสอบแบบกล่องขาว (White Box Testing)

การทดสอบแบบกล่องขาว (White Box Testing) เรียกอีกอย่างหนึ่งว่า กล่องแก้ว (Glass Box Testing) เป็นวิธีที่ใช้เส้นทางควบคุมการทำงาน และโครงสร้างควบคุมที่ได้จากการออกแบบ มาช่วยทดสอบเพื่อช่วยทดสอบส่ิงต่อไปนี้

1. ทดสอบว่าทุกเส้นทางในกระบวนการจะต้องสามารถทำงานได้อย่างถูกต้อง

2. ทดสอบการตัดสินใจทางตรรกะทุกการตัดสินใจทั้งค่าที่เป็นจริงและเท็จ

3. ทดสอบการทำงานภายในลูปทุกลูปตามจำนวนครั้งของการวนลูป

4. ทดสอบโครงสร้างข้อมูลภายในให้ถูกต้อง

การทดสอบระดับหน่วย

Function f1( ) {

1 While A { 2 Process X; 3 if B 4 if C 5 Process Y; 6 else process z; else { 7 process V; 8 process w; } 9 } // while

} // function 10 ตัวอย่างโปรแกรมที่ต้องการทดสอบ

การทดสอบระดับหน่วย

State

1 (A)

2(X)

4 (C)

3 (B)

6(Z)5(Y) 8(W)

7(V)

State

910

(a) Flow Chart

1

2,3

4

5 6

7,8

10 9

X,B

V,W

A

C

Y

(b) Flow Graph

แสดงตวัอยา่งผงังานและกราฟกระแสงานของโปรแกรม

เส้นการการทดสอบโปรแกรม 1. 1, 10 2. 1, 2 , 3, 4, 6, 9, 1, 10 3. 1, 2 , 3, 4, 5, 9, 1, 10 4. 1, 2 , 3, 7, 8, 9, 1, 10

การทดสอบแบบกล่องดำ (Black Box Testing) การทดสอบแบบกล่องคำ (Black Box Testing) บางครั้งเรียกว่า

การทดสอบเชิงพฤติกรรม เนื่องจากเป็นการทดสอบผลการทำงานของซอฟต์แวร์ ในแต่ละหน้าที่ตามข้อกำหนดความต้องการเท่านั้น

เพื่อให้การออกแบบกรณีทดสอบง่ายข้ึน จึงมีวิธีการทดสอบแบบกล่องดำที่เรียกว่า Equivalence Partitioning Testing เป็นการทดสอบที่มีการแบ่งส่วนข้อมูลนำเข้าออกเป็นกลุ่ม

การทดสอบแบบกล่องดำ (Black Box Testing) ตัวอย่าง เง่ือนไขการคิดส่วนลดจากราคาสินค้า

1- 500 ไม่มีส่วนลด

501- 2000 ลด 5%

2001 – 4000 ลด 10%

ค่าข้อมูลทดสอบ ค่าตำสุด,ค่ากลาง,ค่าสูงสุดและค่าข้อมูลเกินพิสัย

1- 500 ข้อมูลทดสอบ คือ 1,270,500

501-2000 ข้อมูลทดสอบ คือ 501,1500,2000

2001-4000 ข้อมูลทดสอบ คือ 2001,3500,4000

ข้อมูลทดสอบเกินพิสัย คือ 4500

การทดสอบแบบกล่องดำ (Black Box Testing)

การทดสอบแบบกล่องคำ (Black Box Testing) จะทำให้พบข้อผิดพลาดต่างจากการทดสอบแบบกล่องขาวดังนี้

1. หน้าที่ที่ทำงานผิดพลาด

2. หน้าที่ที่ขาดหายไป

3. ความผิดพลาดของส่วนประสานกับระบบอื่น

4. ความผิดพลาดของการตัดสินใจทำงานต่อหรือการหยุดทำงาน

5. ความผิดพลาดของการประมวลผลข้อมูล

เช่น!- ข้อมูลนำเข้าถูกต้อง แล้ว ได้ผลลัพธ์ถูกต้อง ?

- ข้อมูลนำเข้าผิด แล้ว มีการแจ้งเตือน ?

- ข้อมูลนำเข้าผิด แล้ว ประมวลผลถูกต้อง ?

การทดสอบระดับรวมหน่วย

การทดสอบระดับรวมหน่วย (Integration Testing) เป็นการ

ทดสอบการทำงานของกลุ่มโปรแกรมหรือส่วนประกอบย่อยที่ถูก

ประสานเข้าด้วยกัน โดยทำงานหน้าที่ใดหน้าที่หนึ่งร่วมกัน สำหรับวิธี

การทดสอบแบบเพิ่มทีละหน่วยมีให้เลือก 2 วิธี ได้แก่

➢ การทดสอบแบบเพิ่มโมดูลจากบนลงล่าง (Top-down Approach)

➢ การทดสอบแบบเพิ่มโมดูลจากล่างข้ึนบน (Bottom-up Approach)

Module A

Module D

Module C

Module B

Module F

Module E

Top-down

การทดสอบแบบเพิ่มโมดูลจากบนลงล่าง (Top-down Approach)

A

A,B,C,D

A,B,C,D,E,F

แสดงตัวอย่างการทดสอบแบบเพ่ิมโมดูลจากบนลงล่าง (Top-down Approach)

Module A

Module C

Module B

Module F

Module E

Module D

Stub Module

แสดงตัวอย่าง Stub Module

โมดูลหลัก ทำหน้าที่ รับข้อมูลการทดสอบ

เรียกว่า Driver

โมดูลตัวแทน ในการทดสอบในกรณีที่โมดูล

จริงยังไม่เสร็จ เรียกว่า Stub

การทดสอบแบบเพิ่มโมดูลจากล่างข้ึนบน (Bottom-up Approach)

C

A Module B

Cluster Cluster

แสดงตัวอย่างการทดสอบแบบเพ่ิมโมดูลจาล่างขึ้นบน (Bottom-up Approach)

การทดสอบระบบ

การทดสอบระบบ (System Testing) เป็นการทดสอบการทำงานของ

ระบบเม่ือรวมเข้ากับองค์ประกอบอื่นๆ ได้แก่ อุปกรณ์ บุคลากร และข้อมูล

เพื่อทดสอบระบบว่าทำงานได้ถูกต้องตรงตามข้อกำหนดและความต้องการของ

ผู้ใช้

การทดสอบระบบจึงแบ่งเป็น 2 ลักษณะ ได้แก่

1. การทดสอบแบบอัลฟ่าและเบต้า (Alpha and Beta Testing)

2. การทดสอบขณะปฏิบัติการระบบ (Runtime Operation Testing)

การทดสอบสำหรับซอฟต์แวร์เชิงวัตถุ

การทดสอบระดับหน่วย (Unit Testing) เริ่มต้นจากการทดสอบ

ซอฟต์แวร์เชิงวัตถุจะเรียกการทดสอบแบบหน่วยว่า การทดสอบคลาส

การทดสอบระดับรวมหน่วย (Integration Testing) การทดสอบแบบบน

ลงล่างหรือล่างข้ึนบนจึงไม่สามารถใช้ได้กับซอฟต์แวร์เชิงวัตถุ วิธีการ

ทดสอบระดับรวมหน่วยของซอฟต์แวร์เชิงวัตถุจึงแตกต่างไปจากเดิม

ได้แก่ Thread-based Testing และ Use- Thread-based Testing

กรณีทดสอบและการวางแผนทดสอบ

การออกแบบกรณีทดสอบ คือ การกำหนดชุดข้อมูลนำเข้า (Input)

และผลลัพธ์ที่คาดหวัง (Output) โดยมีเป้าหมายเพื่อค้นพบข้อผิดพลาดและ

ข้อบกพร่องของซอฟต์แวร์ให้ได้มากที่สุด

การวางแผนการทดสอบ (Test Planing) คือ เป็นการกำหนดราย

ละเอียดการทำงานในแต่ละข้ันตอนของกระบวนการทดสอบ

แผนการทดสอบ (Test Plan) คือ ชุดเอกสารที่ประกอบไปด้วยชุด

ข้อมูลนำเข้าของแต่ละเส้นทาง

การเขียนกรณีทดสอบ(test case) สำหรับ UAT

รหัสทดสอบ UAT-ADM-001 วันที่ทดสอบ

ระบบ/ส่วนงาน การจัดการข้อมูลผู้ใช้งาน > ข้อมูลผู้ใช้งาน/อัยการ

ชื่อการทำงาน การจัดการข้อมูลผู้ใช้งาน/อัยการ

รหัสหน้าจอ-ชื่อหน้าจอ 1. ADM001 – ค้นหาข้อมูลผู้ใช้งาน 2. ADM002 – บันทึกข้อมูลผู้ใช้งาน/อัยการ 3. ADM003 – แก้ไขข้อมูลผู้ใช้งาน/อัยการ 4. ADM004 – แสดงผลข้อมูลผู้ใช้งาน/อัยการ

คำอธิบาย เป็นส่วนในการจัดการข้อมูลผู้ใช้งาน/อัยการ ซ่ึงสามารถค้นหา , เพิ่ม , แก้ไข , แสดงผลข้อมูลได้

เง่ือนไขก่อนการทำงาน ผู้ใช้ต้องมีสิทธ์ิในการเข้าถึงผู้ใช้งาน/อัยการ

ข้ันตอนการทำงาน 1. การค้นหาข้อมูลผู้ใช้งาน/อัยการ 1.1 เลือกเมนู การจัดการข้อมูลผู้ใช้งานระบบ และเลือกเมนูย่อยข้อมูลผู้ใช้งาน/อัยการ ระบบจะ

แสดงหน้าจอค้นหาข้อมูลผู้ใช้งาน/อัยการ (ADM001)

1.2 ระบุเง่ือนไขของข้อมูลผู้ใช้งาน / อัยการที่ต้องการค้นหา โดยสามารถค้นหาได้จาก username ,

ชื่อ,นามสกุล,เลขประจำตัวประชาชน,ตำแหน่ง ซ่ึงสามารถระบุอย่างใดอย่างหนึ่ง หรือ ระบุ

ทั้งหมดได้ จากนั้นกดปุ่ม “ค้นหา”

1.3 ระบบทำการค้นหาข้อมูลตามที่ระบุและแสดงผลในช่องแสดงผลการค้นหา

การเขียนกรณีทดสอบ(test case) สำหรับ UAT2. การเพ่ิมข้อมูลผู้ใช้งาน/อัยการ 2.1 เลือกเมนู การจัดการข้อมูลผู้ใช้งาน และเลือกเมนูย่อยผู้ใช้งาน/อัยการ ระบบจะแสดงหน้าจอค้นหา

ข้อมูลผู้ใช้งาน/อัยการ(ADM001) 2.2 กดปุ่ม “เพิ่มข้อมูลใหม่” ระบบจะแสดงหน้าจอบันทึกข้อมูลผู้ใช้งาน/อัยการ (ADM002)

2.3 ระบุรายละเอียดของผู้ใช้งาน/อัยการ โดยต้องระบุข้อมูลให้ครบทุกช่องที่มี * กำกับด้านหลัง 2.4 กดปุ่ม “บันทึก” ระบบจะแสดงหน้าจอประมวลผลข้อมูลผู้ใช้งาน/อัยการ (ADM004)

ผลที่คาดว่าจะได้รับ 1.สามารถค้นหาข้อมูลผู้ใช้งาน/อัยการ ที่มีอยู่ในระบบได้ 2.สามารถบันทึกข้อมูลผู้ใช้งานได้ 3.สามารถแก้ไขข้อมูลผู้ใช้งาน/อัยการ ได้

ผลการทดสอบ *ผ่าน *ไม่ผ่าน หมายเหต ุ

บันทึกเพิ่มเติม

การทดสอบการทำงานแบบไม่สมบูรณ์

การกระทำ ผลการทำงานที่คาดว่าจะได้รับ ผลการทดสอบ หมายเหตุ

การเขียนกรณีทดสอบ(test case) สำหรับ UAT

การทดสอบการทำงานแบบไม่สมบูรณ์

การกระทำ ผลการทำงานที่คาดว่าจะได้รับ ผลการทดสอบ หมายเหตุ

1.การค้นหาข้อมูล เม่ือระบุเง่ือนไขที่ไม่มี

ข้อมูลในระบบ

ระบบจะแสดงข้อความแจ้ง “ไม่มีข้อมูล” *ผ่าน *ไม่ผ่าน

2.การเพิ่ม/แก้ไขข้อมูลเม่ือไม่กรอกข้อมูลที่มี

* กำกับด้านหลัง

ระบบจะแสดงข้อความเตือนและไม่อนุญาตให้

บันทึกข้อมูลลงในระบบ

*ผ่าน *ไม่ผ่าน

3.การเพิ่มข้อมูล เม่ือระบุ username ที่ซ้ำใน

ระบบ

ระบบจะแสดงข้อความเตือนและไม่อนุญาตให้

บันทึกข้อมูลลงในระบบ

*ผ่าน *ไม่ผ่าน

เครื่องมือทดสอบอัตโนมัติ

Code Analysis Tools เป็นเครื่องมือวิเคราะห์โค้ดโปรแกรม แบ่งออกเป็น 2 ประเภท ได้แก ่❑ Static Analysis ใช้วิเคราะห์โค้ดก่อนการรันโปรแกรม ❑ Dynamic Analysis ใช้วิเคราะห์โค้ดขณะรันโปรแกรม

Test Execution Tools เป็นเครื่องมือที่ใช้สร้างกระบวนการทดสอบอัตโนมัติ เครื่องมือทดสอบที่เหมาะสมกับการทดสอบลักษณะนี้ ได้แก่ ❑ Capture and Playback Tool ใช้จับหรือบันทึกข้อมูลนำเข้า

❑ Stub and Driver เป็นเครื่องมือที่ช่วยให้ทีมงานสามารถประสาน Stub กับ Driver ได้อัตโนมัติ

เครื่องมือทดสอบอัตโนมัติ (ต่อ)

☞ Automated Testing Environment เครื่องมือชนิดนี้ส่วนใหญ่จะเชื่อมต่อ

กับฐานข้อมูล เครื่องมือวัดผล เครื่องมือวิเคราะห์โค้ด

Test Case Generator เป็นเครื่องมือสร้างกรณีทดสอบอัตโนมัติ เพื่อ

ช่วยให้ทีมงานสามารถสร้างกรณีทดสอบได้ครอบคลุมทุกสถานการณ์

เครื่องมือชนิดนี้มีหลายผลิตภัณฑ์ข้ึนอยู่กับวัตถุประสงค์ของผู้ผลิต

top related