Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang

1. Khái niệm kiểm thử

• Là mấu chốt của đảm bảo chất lượng

phần mềm

• Là tiến trình (và là nghệ thuật) nhằm

phát hiện lỗi bằng việc xem xét lại đặc

tả, thiết kế và mã nguồn.

• Kiểm thử thành công là phát hiện ra

lỗi; kiểm thử không phát hiện ra lỗi là

kiểm thử dở

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 1

Trang 1

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 2

Trang 2

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 3

Trang 3

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 4

Trang 4

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 5

Trang 5

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 6

Trang 6

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 7

Trang 7

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 8

Trang 8

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 9

Trang 9

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 27 trang xuanhieu 6940
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang

Bài giảng Công nghệ phần mềm - Phần V: Kiểm thử và bảo trì - Vũ Thị Hương Giang
chương trình 5 
 2.1. Kiểm thử tĩnh 
 • Kiểm thử trên bàn: giấy và bút trên 
 bàn, kiểm tra logic, lần từng chi tiết 
 ngay sau khi lập trình xong. 
 • Đi xuyên suốt (walk through) 
 • Thanh tra (inspection) 
 6 
 3 
 10/20/2011 
2.2. Kiểm thử trên máy 
• Gỡ lỗi bằng máy (machine debug) hay kiểm thử 
 động: Dùng máy chạy chương trình để điều tra 
 trạng thái từng động tác của chương trình 
• 9 bước của trình tự kiểm thử bằng máy: 
 7 
Trình tự kiểm thử bằng máy 
1. Thiết kế trường hợp thử 5. Nhập dữ liệu đã thiết kế 
 theo thử trên bàn cho trường hợp kiểm thử 
2. Trường hợp thử phải có cả 6. Điều chỉnh môi trường 
 kết quả kỳ vọng sẽ thu thực hiện module tải (tạo 
 được thủ tục đưa các tệp truy 
3. Dịch chương trình nguồn cập tệp vào chương trình) 
 và tạo module tải để thực 7. Thực hiện module tải và 
 hiện ghi nhận kết quả 
4. Khi trường hợp thử có xử 8. Xác nhận kết quả với kết 
 lý tệp vào-ra, phải làm quả kỳ vọng 
 trước trên bàn việc xác 9. Lặp lại thao tác (5)-(8) 
 định miền của các tệp 
 8 
 4 
 10/20/2011 
3. Kỹ thuật thiết kế trường hợp thử 
• Kỹ thuật thiết kế trường hợp thử dựa trên đặc tả 
 bề ngoài của chương trình: Kiểm thử hộp đen 
 (Black box test): WHAT ? 
• Kỹ thuật thiết kế trường hợp thử dựa trên đặc tả 
 bên trong của chương trình: Kiểm thử hộp trắng 
 (white box test): HOW ? 
• Kiểm thử Top-Down hay Bottom-Up 
 9 
3.1. Kiểm thử hộp đen 
• Phân đoạn tương đương 
• Phân tích giá trị biên 
• Đoán lỗi 
• Và 1 số kỹ thuật khác 
 Input 
 Results 
 Black Box 
 Black box Data Testing Strategy 
 10 
 5 
 10/20/2011 
a. Phương pháp phân đoạn tương 
đương (Equivalence Partition) 
• Mục đích: giảm số lượng test bằng cách chọn các 
 tập dữ liệu đại diện 
• Thực hiện: Chia dữ kiệu vào thành các đoạn, mỗi 
 đoạn đại diện cho một số dữ liệu => việc kiểm 
 thử chỉ thực hiện trên đại diện đó 
• Ưu điểm: Test theo mức trừu tượng hơn là 
 trường. 
• Áp dụng: màn hình, menu hay mức quá trình. 
• Ví dụ: 
 11 
b. Phương pháp phân tích giá trị biên 
(Boundary value analysis) 
• Là 1 trường hợp riêng của phân đoạn 
• Thí dụ: nếu miền dữ liệu là tháng thì giá trị 0 hay 
 >12 là không hợp lệ 
• Thường sử dụng trong kiểm thử module 
 12 
 6 
 10/20/2011 
c. Phương pháp đoán lỗi 
(Error Guessing) 
• Dựa vào trực giác và kinh nghiệm 
• Thí dụ lỗi chia cho 0. Nếu module có phép chia 
 thì phải kiểm thử lỗi này 
• Nhược điểm: không phát hiện hết lỗi 
 13 
d. Phương pháp đồ thị nguyên nhân - 
kết quả (Cause-effect Graphing) 
 SEQUENCE 
 AND 
 NOT 
 DO UNTIL 
 OR 
 14 
 7 
 10/20/2011 
3.2. Kiểm thử hộp trắng 
• Là phương pháp kiểm thử dựa vào cấu trúc điều 
 khiển của các thủ tục để thiết kế các trường hợp 
 kiểm thử. 
 Input 
 Results 
   
   
 White Box Data Testing Strategy 
 15 
Kiểm thử hộp trắng (tiếp) 
• Người KSPM có thể đảm bảo: 
 – Kiểm tra tất cả các lộ trình độc lập bên trong 1 mô đun 
 ít nhất 1 lần 
 – Kiểm tra tất cả các nhánh đúng/sai của lựa chọn 
 – Kiểm tra việc thực hiện của vòng lặp tại các biên và bên 
 trong vòng lặp 
 – Kiểm tra các cấu trúc dữ liệu để đảm bảo tính hợp thức. 
• Các kỹ thuật: 
 – Kiểm thử theo lộ trình (Basis path testing) 
 – Kiểm thử theo cấu trúc điều khiển. 
 16 
 8 
 10/20/2011 
a. Kiểm thử theo lộ trình 
• Là kỹ thuật do Tom McCabe đề xuất cho phép 
 nhà kiểm thử tiến hành 1 số đo về độ phức tạp lô 
 gic của các thủ tục và số đo này được sử dụng để 
 giúp cho việc định nghĩa các lộ trình cơ bản sao 
 cho các lệnh trong chương trình được thực hiện ít 
 nhất 1 lần trong quá trình kiểm thử. 
• Sử dụng Ký pháp đồ hoạ luồng/ đồ thị chương 
 trình: 
 – Mỗi nút đồ thị biểu diễn 1 lệnh/ 1 dãy lệnh liên tiếp 
 – Cung của đồ thị biểu diễn luồng điều kiện (trình tự thực 
 hiện). 
 17 
Ví dụ: lưu đồ khối chương trình 
 1 
 11 2 
 3 
 6 4 
 7 8 5 
 9 
 10 
 18 
 9 
 10/20/2011 
Ví dụ: Đồ thị chương trình 
 1 
 2,
 3 
 4,
 6 
 3 5 
 7 2 8 1 
 9 10 
 4 
 11 
 19 
Chú ý 
• Một cung bao giờ cũng phải kết thúc tại 1 nút (có 
 thể nút này không tương ứng với bất kỳ lệnh nào 
 trong thủ tục). 
• Vùng bao bởi các cung và nút gọi là Region (khi 
 tính, ta phải tính cả vùng bao ngoài). 
• Thí dụ đồ thị chương trình ở slide trước gồm 4 
 vùng (các số in nghiêng). 
• Với điều kiện phức tạp (nhiều hơn 1 phép so 
 sánh) thì mỗi so sánh lại tách thành 1 nút riêng. 
• Thí dụ: If a OR b then X else Y Endif 
 20 
 10 
 10/20/2011 
Độ phức tạp lặp (Cyclomatic 
Complexity) 
• Độ phức tạp lặp là 1 số đo phần mềm, cung cấp 1 đơn 
 vị đo định lượng về độ phức tạp lô gic của CT. 
• Trong ngữ cảnh áp dụng kiểm thử theo lộ trình, giá trị 
 này sẽ cung cấp số lượng các lộ trình (path) độc lập 
 trong 1 chương trình và đó được coi như là cận trên 
 của số lượng test phải tiến hành để đảm bảo mọi lệnh 
 đều được thực hiện ít nhất 1 lần. 
• Lộ trình độc lập? 1 phần của CT bao gồm ít nhất 1 tập 
 lệnh hay 1 điều kiện mới. 
• Đồ thị CT trên có 4 lộ trình độc lập: 1-11; 1-2-3-4-5-
 10-1-11; 1-2-3-6-8-9-10-1-11; 1-2-3-6-7-9-10-1-11 
 21 
Độ phức tạp lặp 
• Có 3 cách tính độ phức tạp lặp ký hiệu V(G): 
 – V(G) = E – N +2, với E là số cung, N là số nút của G 
 – V(G) = số vùng (region) 
 – V(G) = P +1, với P là số lượng nút Predicat (nút giả 
 định, không có thật). 
 22 
 11 
 10/20/2011 
Thí dụ: chương trình viết bằng PDL 
 i = 1 
 1 TotalInput = TotalValid = 0 2 
 Sum = 0 
 While value(i) -999 And TotalInput < 100 Do 3 
 4 TotalInput = TotalInput +1 
 If Value(i) >= Minimum And value(i) <= Maximum 5 
 6 Then TotalValid = TotalValid +1 
 Sum = Sum + value(i) 7 
 Else Skip 
 Endif 
 i = i +1 8 
 EndDo 9 
 10 If TotalValid > 0 Then Average = Sum / TotalValid 11 
 Else Average = -999 12 
 Endif 
 13 
LastUpdate 8-07 Dept. of SE, 2001 SE-V. 23 
Lời giải 
• Số lộ trình độc lập (độ phức tạp lặp) = 6 
 – 1-2-10-11-13; 1-2-10-12-13 
 – 1-2-3-10-11-13; 1-2-3-4-5-8-9-2  
 – 1-2-3-4-5-6-8-9-2; 1-2-3-4-5-6-7-8-9-2 
 – : có nghĩa là phần tiếp theo còn lại đồ thị là chấp nhận 
 được. 
• Đồ thị chương trình ? 
• Số test phải thực hiện: 6 
 24 
 12 
 10/20/2011 
3.3. Trình tự thiết kế 
• Kiểm thử module 
• Kiểm thử tích hợp 
 – Kiểm thử tích hợp trên xuống 
 – Kiểm thử tích hợp dưới lên 
 – Kiểm thử hồi qui 
 25 
4. Kiểm thử module 
• Kiểm thử tích hợp module 
 – Kiểm thử dưới lên (Bottom-up Test) 
 – Kiểm thử trên xuống (Top-down Test) 
 – Kiểm thử cột trụ (Big bang Test) 
 – Kiểm thử kẹp (Sandwich Test) 
 26 
 13 
 10/20/2011 
a. Bottom-up Test 
• Các module mức thấp được tổ hợp vào các chùm 
 thực hiện một chức năng con 
• Viết trình điều khiển phối hợp vào/ ra và kiểm 
 thử 
• Kiểm thử chùm/bó 
• Loại bỏ trình điều khiển và chuyển lên mức trên 
 27 
Bottom-up Test (Tiếp) 
 Mức 4 
 Mức 3 
 Mức 2 
 Mức 1 
 28 
 14 
 10/20/2011 
b. Top-down Test 
• module điều khiển chính được dùng như trình 
 điều khiển kiểm thử, gắn các nút con trực tiếp 
 vào nó 
• Thay các nút con bằng các module thực tại (theo 
 chiều sâu / ngang) 
• Kiểm thử từng module được gắn vào 
• Các 1 nút thử xong được thử tiếp nút khác 
• Kiểm thử hồi quy 
 29 
Top-down Test (tiếp) 
 Mức 1 
 Mức 2 
 Mức 3 
 Mức 4 
 30 
 15 
 10/20/2011 
c. Big bang Test 
• Tích hợp không tăng dần 
• Tất các các module đều được tổ hợp trước 
• Toàn bộ chương trình được kiểm thử tổng thể 
• Khó khăn: khó cô lập lỗi, khi chữa xong lỗi này có 
 thể lỗi mới lại phát sinh 
 31 
d. Sandwich Test 
• Tích hợp trên xuống cho các mức trên cấu trúc 
 chương trình 
• Tích hợp dưới lên cho các mức phụ thuộc 
 32 
 16 
 10/20/2011 
5. Kiểm thử hệ thống 
• Kiểm thử phục hồi: bắt buộc phần mềm hỏng 
 nhiều cách để kiểm chứng phục hồi 
• Kiểm thử an toàn: kiểm chứng cơ chế bảo vệ 
• Kiểm thử gay cấn 
• Kiểm thử hiệu năng 
 33 
6. Kiểm thử chấp nhận 
• Mục đích: để bàn giao PM cho khách hàng 
• Đối tượng: Cần có sự tham gia của ND 
• Trình tự: Dựa vào Yêu cầu PM 
 34 
 17 
 10/20/2011 
 PHẦN V: 
 KIỂM THỬ VÀ BẢO TRÌ 
 I. Kiểm thử 
 II. Bảo trì 
 1. Khái niệm 
 2. Quy trình nghiệp vụ 
 3. Các vấn đề còn tồn tại 
 4. Bảo trì trong các phương pháp phát triển 
 phần mềm 
 35 
1. Khái niệm 
• Bảo trì là công việc tu sửa, thay đổi phần mềm 
 đã được phát triển (chương trình, dữ liệu, JCL, 
 các loại tư liệu đặc tả, . . .) theo những lý do nào 
 đó. 
• Các hình thái bảo trì: bảo trì để 
 – Tu chỉnh 
 – Thích nghi 
 – Cải tiến 
 – Phòng ngừa 
 36 
 18 
 10/20/2011 
a. Bảo trì để tu sửa 
• Là bảo trì khắc phục những • Kỹ nghệ ngược (Reverse 
 khiếm khuyết có trong Engineering): dò lại thiết 
 phần mềm. kế để tu sửa. 
• Một số nguyên nhân điển • Những lưu ý 
 hình – Mức trừu tượng 
 – Kỹ sư phần mềm và khách – Tính đầy đủ 
 hiểu nhầm nhau. – Tính tương tác 
 – Lỗi tiềm ẩn của phần mềm – Tính định hướng 
 do sơ ý của lập trình hoặc 
 khi kiểm thử chưa bao quát 
 hết. 
 – Vấn đề tính năng của phần 
 mềm: không đáp ứng được 
 yêu cầu về bộ nhớ, tệp, . . . 
 Thiết kế sai, biên tập sai . . 
 . 
 – Thiếu chuẩn hóa trong phát 
 triển phần mềm (trước đó). 
 37 
b. Bảo trì để thích hợp 
• Là tu chỉnh phần mềm theo thay đổi của môi 
 trường bên ngoài nhằm duy trì và quản lý phần 
 mềm theo vòng đời của nó. 
• Thay đổi phần mềm thích nghi với môi trường: 
 công nghệ phần cứng, môi trường phần mềm. 
• Những nguyên nhân chính: 
 – Thay đổi về phần cứng (ngoại vi, máy chủ,. . .) 
 – Thay đổi về phần mềm (môi trường): đổi OS 
 – Thay đổi cấu trúc tệp hoặc mở rộng CSDL 
 38 
 19 
 10/20/2011 
c. Bảo trì để cải tiến 
• Là việc tu chỉnh hệ phần • Còn gọi là tái kỹ nghệ (re-
 mềm theo các yêu cầu engineering) 
 ngày càng hoàn thiện hơn, • Mục đích: đưa ra một thiết 
 đầy đủ hơn, hợp lý hơn. kế cùng chức năng nhưng 
• Những nguyên nhân chính: có chất lượng cao hơn. 
 – Do muốn nâng cao hiệu • Các bước thực hiện: 
 suất nên thường hay cải – Xây dựng lưu đồ phần mềm 
 tiến phương thức truy cập 
 tệp. – Suy dẫn ra biểu thức Bun 
 cho từng dãy xử lý 
 – Mở rộng thêm chức năng 
 mới cho hệ thống. – Biên dịch bảng chân lí 
 – Cải tiến quản lý kéo theo cải – Tái cấu trúc phần mềm 
 tiến tư liệu vận hành và 
 trình tự công việc. 
 – Thay đổi người dùng hoặc 
 thay đổi thao tác. 
 39 
d. Bảo trì để phòng ngừa 
• Là công việc tu chỉnh • Mục đích: sửa đổi để 
 chương trình có tính thích hợp với yêu cầu 
 đến tương lai của thay đổi sẽ có của 
 phần mềm đó sẽ mở người dùng. 
 rộng và thay đổi như • Thực hiện những thay 
 thế nào. đổi trên thiết kế 
• Thực ra trong khi thiết không tường minh. 
 kế phần mềm đã phải • Hiểu hoạt động bên 
 tính đến tính mở rộng trong chương trình 
 của nó, nên thực tế ít 
 khi ta gặp bảo trì • Thiết kế / lập trình lại. 
 phòng ngừa nếu như • Sử dụng công cụ CASE 
 phần mềm được thiết 
 kế tốt. 
 40 
 20 
 10/20/2011 
2. Quy trình nghiệp vụ 
• Quy trình bảo trì: quá trình trong vòng đời của phần 
 mềm, cũng tuân theo các pha phân tích, thiết kế, 
 phát triển và kiểm thử từ khi phát sinh vấn đề cho 
 đến khi giải quyết xong. 
• Các nhiệm vụ bảo trì: 
 – Phân tích/cô lập: phân tích tác động, phân tích những giá 
 trị lợi ích, và cô lập các thành phần cần bảo trì 
 – Thiết kế: thiết kế lại hệ thống (phải biết cách tu sửa, thay 
 đổi). 
 – Thực thi: thay thế mã nguồn và kiểm soát từng đơn vị 
 thành phần hệ thống, có tính đến thời gian lập trình. 
• Thao tác bảo trì: Gồm 2 loại 
 – Tu chỉnh cải đã có (loại 1) 
 – Thêm cái mới (loại 2) 
 41 
Sơ đồ bảo trì 
 Thực thi “trên bàn”: 
 -Nắm vững các chức năng của hệ thống 
 Hiểu phần 
 mềm đã có theo tài liệu 
 -Nắm vững đặc tả chi tiết, điều kiện 
 kiểm thử, . . . theo tài liệu 
 2 Phát triển -Dò đọc chương trình nguồn, hiểu trình 
 Loại bảo trì? phần mềm tự xử lý chi tiết của hệ thống 
 mới 
 1 -Khi thêm chức năng mới phải phát triển 
 Tu sứa phần chương trình cho phù hợp với yêu cầu 
 mềm đã có -Cần tiến hành từ thiết kế, lập trình, gỡ 
 lỗi và kiểm thử unit 
 -Phản ảnh vào giao diện của phần mềm 
Kiểm thử tính (thông báo, phiên bản, . . .) 
 nhất quán 
 -Bảo trì chương trình nguồn, tạo các 
Kiểm thử sau module mới và dịch lại. 
 bảo trì -Thực hiện kiểm thử unit và tu chỉnh 
 những mục liên quan có trong tư liệu 
 đặc tả. 
Tạo biểu quản -Chú ý theo sát tác động của module 
 lý bảo trì được sửa đến các thành phần khác trong 
 hệ thống. 42 
 21 
 10/20/2011 
 Sơ đồ bảo trì Bằng kiểm thử tích hợp 
 -Đưa đơn vị (unit) đã dược kiểm thử vào 
 hoạt động trong hệ thống 
 Hiểu phần 
 mềm đã có -Điều chỉnh sự tương tích giữa các 
 module 
 -Dùng các dữ liệu trước đây khi kiểm thử 
 2 Phát triển để kiểm thử lại tính nhất quán 
 Loại bảo trì? phần mềm ! Chú ý hiệu ứng làn sóng trong chỉnh 
 mới sửa 
 1 
 Tu sứa phần Khi hoàn thành bảo trì: 
 mềm đã có 
 -Kiểm tra nội dung mô tả có trong tư 
 liệu đặc tả 
Kiểm chứng tính -Cách ghi tư liệu có phù hợp với mô tả 
 nhất quán môi trường phần mềm mới hay không ? 
 Để quản lý tình trạng bảo trì, lập biểu: 
 Kiểm thử sau 
 bảo trì -Ngày tháng, giờ 
 -Nguyên nhân 
 -Tóm tắt cách khắc phục 
 Tạo biểu quản -Chi tiết khắc phục, hiệu ứng làn sóng 
 lý bảo trì -Người làm bảo trì 
 -Số công 43 
 3. Các vấn đề còn tồn tại 
 • Phương pháp cải tiến thao tác bảo trì: 
 – Sáng kiến trong quy trình phát triển phần mềm 
 – Sáng kiến trong quy trình bảo trì phần mềm 
 – Phát triển những kỹ thuật mới cho bảo trì 
 44 
 22 
 10/20/2011 
a. Sáng kiến trong quy trình 
phát triển phần mềm 
• Chuẩn hóa mọi khâu trong phát triển phần mềm 
• Người bảo trì chủ chốt tham gia vào giai đoạn 
 phân tích và thiết kế 
• Thiết kế để dễ bảo trì 
 45 
b. Sáng kiến trong quy trình bảo trì 
phần mềm 
• Sử dụng các công cụ hỗ trợ phát triển phần mềm 
• Chuẩn hóa thao tác bảo trì và thiết bị môi trường 
 bảo trì 
• Lưu lại những thông tin sử bảo trì 
• Dự án nên cử một người chủ chốt của mình làm 
 công việc bảo trì sau khi dự án kết thưc giai đoạn 
 phát triển. 
 46 
 23 
 10/20/2011 
c. Phát triển những kỹ thuật mới cho 
bảo trì 
• Công cụ phần mềm hỗ trợ bảo trì 
• Cơ sở dữ liệu cho bảo trì 
• Quản lý tài liệu, quản lý dữ liệu, quản lý chương 
 trình nguồn, quản lý dữ liệu thử, quản lý sử bảo 
 trì 
• Trạm bảo trì tính năng cao trong hệ thống mạng 
 lưới bảo trì với máy chủ thông minh. 
 47 
Bài tập về nhà 
• Tìm hiểu SMMM – Software Maintenance Maturity 
 Model. 
 48 
 24 
 10/20/2011 
a. Phát triển lặp 
 49 
RUP 
 50 
 25 
 10/20/2011 
Scrum 
 51 
Agile 
 52 
 26 
 10/20/2011 
b. Hướng thành phần 
• Những hoạt động bảo trì chính ở CBSD 
 – Gắn kết hóa và gói hóa 
 – May đo hóa 
 – Phát hiện lỗi và cô lập 
 – Cập nhật cấu hình thành phần 
 – Theo dõi và kiểm tra các hành vi hệ thống 
 – Kiểm thử các thành phần 
 53 
c. Mã nguồn mở 
• Sự khác biệt với bảo trì theo phương pháp truyền 
 thống 
 – Phiên bản ngày tháng 
 – Chờ đợi dịch vụ 
 54 
 27 

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_phan_v_kiem_thu_va_bao_tri_vu_t.pdf