Nội dung cơ bản của chương 5 Xác minh và thẩm định thuộc bài giảng Công nghệ phần mềm trình bày các kiến thức cơ bản như: mục đích của thẩm định và xác minh, khái niệm về thẩm định và xác minh tĩnh, thẩm định và xác minh động, thử nghiệm chức năng và thử nghiệm cấu trúc.
Trang 1Ths Nguyễn Khắc Quốc Email:quoctv10@gmail.com
CÔNG NGHỆ PHẦN MỀM
Chương 5 XÁC MINH VÀ THẨM ĐỊNH
Trang 2Xác minh và thẩm định:
- Là sự kiểm tra việc phát triển phần mềm
-Công việc xuyên suốt quá trình phát triển phần mềm
- Kiểm tra xem sản phầm có đúng với đặc tả không,
- Có đáp ứng được nhu cầu của người dùng không,
- Có hoạt động hiệu quả không,
* Tức là chú trọng vào việc phát hiện lỗi phân tích, lỗi thiết kế.
5.1 Đại cương
Trang 3Tóm lại, mục đích của thẩm định và xác minh là:
• Phát hiện và sửa lỗi phần mềm
• Đánh giá tính dùng được của phần mềm
Có hai khái niệm là:
-Thẩm định/xác minh tĩnh
-Thẩm định/xác minh động
Trang 4Thẩm định và xác minh tĩnh:
- Là sự kiểm tra mà không thực hiện chương trình như:
+ Xét duyệt thiết kế, + Xét duyệt yêu cầu, + Nghiên cứu mã nguồn,
+ Sử dụng các biến đổi hình thức (suy luận)
Để kiểm tra tính đúng đắn của chương trình
- Thẩm định và xác minh tĩnh được tiến hành ở mọikhâu trong vòng đời phần mềm
- Có thể phát hiện được hầu hết các lỗi lập trình,nhưng không thể đánh giá được tính hiệu quả củachương trình
5.1 Đại cương (tt)
Trang 6Có hai loại thử nghiệm (động) là:
hiện khuyết tật của hệ thống (đặc biệt là lỗi lập trình).
tác) phổ biến của người dùng (dựa trên sự thống kê)
để đánh giá tính dùng được của hệ thống
5.1 Đại cương (tt)
Trang 7Thử nghiệm cần phải có:
hiện thêm lỗi và kiểm tra xem lỗi đã được sửa haychưa
một cách có hệ thống để đảm bảo kiểm thử đượcmọi trường hợp, nếu tiến hành thử nghiệm mộtcách ngẫu nhiên thì không đảm bảo được điều này
được thực hiện, kết quả như thế nào
Trang 8Một phép thử được gọi là thành công nếu nó phát hiện
ra khiếm khuyết của phần mềm.
Phép thử chỉ chứng minh được sự tồn tại của lỗi trong
hệ thống chứ không chứng minh được hệ thống không có lỗi.
Một phép thử (ca thử nghiệm) bao gồm:
- Tên của mô đun thử nghiệm
- Dữ liệu vào
- Dữ liệu ra mong muốn (đúng)
- Dữ liệu ra thực tế (khi đã tiến hành thử nghiệm)
Các ca thử nghiệm nên được thiết kế khi tạo các tài liệuphân tích và thiết kế, không phải khi đã viết xong mãnguồn
5.2 Khái niệm về phép thử
Trang 9Có hai kỹ thuật thử nghiệm tìm khuyết tật:
-Thử nghiệm chức năng
-Thử nghiệm cấu trúc.
Trang 10Thử ngiệm chức năng (functional testing) còn gọi là thử nghiệm hộp đen (black box testing)
- Là sự thử nghiệm sử dụng các ca thử nghiệm đượcthiết kế dựa trên đặc tả yêu cầu,
- Tài liệu người dùng nhằm mục đích phát hiện ra cáckhiếm khuyết
- Thử nghiệm chức năng nhìn nhận mô đun được thử
nghiệm như là một hộp đen, và chỉ quan tâm đến
chức năng (hành vi) của mô đun, tức là kiểm tra
xem có hoạt động đúng với đặc tả hay không.
5.3.1 Hộp đen - Thử nghiệm chức năng
Trang 11Các ca kiểm thử bao gồm:
- Các trường hợp bình thường
- Và không bình thường (dữ liệu không hợp lệ ) của
mô đun
- Thông thường, không thể thử nghiệm với mọi dữ liệu,
- Chiến lược chung khi thiết kế dữ liệu thử nghiệm là
phân hoạch (dữ liệu) tương đương.
- Phân hoạch tương đương chia miền dữ liệu vào rathành các vùng, mà mỗi vùng chứa các dữ liệu có cùnghành vi
Trang 12-Do đó, đối với mỗi vùng dữ liệu chỉ cần xây dựng một
ca thử nghiệm
-Thêm vào đó là các ca sử dụng đối với biên giới củacác vùng
-Theo kinh nghiệm, các sai sót về lập trình thường
sảy ra đối với các dữ liệu biên.
5.3.1 Hộp đen - Thử nghiệm chức năng (tt)
Trang 13và số 0.
Trang 14Ví dụ:
Để kiểm chứng chương trình giải phương trình bậc 2theo phương pháp hộp đen, chúng ta chia không gianthử nghiệm thành ba vùng như sau:
Vô nghiệm
Có 2 nghiệm phân biệt
Có nghiệm kép
5.3.1 Hộp đen - Thử nghiệm chức năng (tt)
Trang 15Ngoài các ca thử nghiệm trên, thông thường còn cầnkiểm tra với các dữ liệu đặc thù như:
- Biên của số trong máy tính (ví dụ -32768, 32767)
- Số 0, số âm, số thập phân
- Không có input
- Input ngẫu nhiên
- Input sai kiểu
Trang 16Thử nghiệm chức năng có thể giúp chúng ta
- Phát hiện sự thiếu sót chức năng
- Phát hiện khiếm khuyết
- Sai sót về giao diện giữa các mô đun
- Sự không hiệu quả của chương trình
- Lỗi khởi tạo, lỗi kết thúc
5.3.1 Hộp đen - Thử nghiệm chức năng (tt)
Trang 17-Thử nghiệm chức năng chỉ dựa trên đặc tả nên:
+ Không thể kiểm thử được các trường hợpkhông được khai báo trong đặc tả,
+ Không đảm bảo thử hết được các khối mãnguồn của mô đun
- Thử nghiệm chức năng cũng không phát hiện được
các đoạn mã yếu (có khả năng sinh lỗi với một trạng thái đặc biệt nào đó của hệ thống), và trong nhiều
trường hợp việc đảm bảo xây dựng đầy đủ các cathử nghiệm là khó khăn
Trang 18= 0 : nếu không tìm thấy
≠ 0 : nếu tìm thấy, giá trị kết quả chính là chỉ sốcủa phần tử đầu tiên được tìm thấy
5.3.1 Hộp đen - Thử nghiệm chức năng (tt)
Trang 20Bước 2: Chọn các phần tử đại diện
5.3.1 Hộp đen - Thử nghiệm chức năng (tt)
Trang 21Theo phương pháp này chúng ta sẽ chia không gian thửnghiệm dựa vào cấu trúc của đơn vị cần kiểm tra
Đơn vị cần
- Dữ liệu cục bộ
- Các điều kiện biên
- Các con đường thực hiện
- Các ngoại lệ
Bộ thử nghiệm
Trang 22Thử nghiệm cấu trúc (structural testing)
- Là sự thử nghiệm dựa trên phân tích chương trình
- Là xác định đường đi (path) của chương trình (điều khiển) từ input đến output.
- Mục đích của thử nghiệm cấu trúc là kiểm tra tất cảcác đường đi có thể
- Tức là đảm bảo mọi lệnh đều được thực hiện ít nhấtmột lần trong một ca thử nghiệm nào đó
-Thử nghiệm cấu trúc chú trọng vào phân tích các cấu trúc rẽ nhánh và các vòng lặp.
5.3.2 Hộp trắng - Thử nghiệm cấu trúc (tt)
Trang 23- Thử nghiệm cấu trúc xem xét chương trình ở mức
độ chi tiết và phù hợp khi kiểm tra các mô đun nhỏ
- Thử nghiệm cấu trúc có thể không đầy đủ vì kiểmthử hết các lệnh không chứng tỏ là chúng ta đã kiểmthử hết các trường hợp có thể
- Có khả năng tồn tại các tổ hợp lệnh khác nhau gâylỗi
- Ngoài ra, chúng ta không thể kiểm thử hết cácđường đi đối với các vòng lặp lớn
Trang 25Các con đường thực hiện có thể có:
Trang 26Quá trình thử nghiệm có thể chia làm các giai đoạn:
chức năng (hàm) nhằm mục đích chính phát hiện lỗi lập
trình, thường sử dụng nhiều ở thử nghiệm cấu trúc
5.4 Quá trình thử nghiệm
Driver
Mô đun Stub Stub
RESULT
Test cases
Giao diện Cấu trúc dữ liệu Điều kiện biên Đường đi độc lập
Xử lý lỗi
Driver: Chương trình chính Stub: Chương trình con giả lập Test cases: Công cụ kiểm tra
Trang 27• Thử nghiệm mô đun : thử nghiệm mô đun (liên kết một số hàm)
hệ con độc lập thì đây là bước tiến hành thử nghiệmvới từng hệ con riêng biệt
Trang 28• Thử nghiệm hệ thống (tích hợp):
+ Thử nghiệm sự hoạt động tổng thể hệ thống,+ Kiểm tra tính đúng đắn của giao diện,
+ Kiểm tra tính đúng đắn với đặc tả,+ Kiểm tra tính dùng được
Chủ yếu sử dụng thử nghiệm chức năng
5.4 Quá trình thử nghiệm (tt)
Trang 29• Thử nghiệm nghiệm thu (alpha):
+ Được tiến hành bởi một nhóm nhỏ người sửdụng có sự hướng dẫn của người phát triển,
+ Sử dụng các dữ liệu thực,+ Thẩm định tính dùng được của hệ thống
+ Được tiến hành với một số lớn người sửdụng không có sự hướng dẫn của người phát triển,
+ Kiểm tra tính ổn định,+ Kiểm tra điểm tốt và không tốt của hệ thống
Trang 30- Các bước thử nghiệm ban đầu thiên về kiểm tra lỗi
lập trình (xác minh)
- Các bước thử nghiệm cuối thiên về kiểm tra tính
dùng được của hệ thống (thẩm định).
Ngoài ra còn một bước hay một khái niệm thử nghiệm
khác được gọi là thử nghiệm quay lui.
Thử nghiệm quay lui được tiến hành:
- Khi chúng ta sửa mã chương trình
- Khi sửa lỗi
- Khi nâng cấp chương trình 5.4 Quá trình thử nghiệm (tt)
Trang 31Đối với một số hệ thống quan trọng, người ta còn tiến
hành thử nghiệm gây áp lực (stress testing).
+ Được tiến hành khi đã có phiên bản làm việc,
+ Tìm hiểu hoạt động của hệ thống trong các
trường hợp tải trọng lớn (dữ liệu lớn, số người sử dụng lớn, tài nguyên hạn chế ).
-Mục đích của thử nghiệm áp lực là - tìm hiểu giới hạn chịu tải của hệ thống
Trang 32- Tìm hiểu về đặc trưng của hệ thống khi đạt và vượt
giới hạn chịu tải (khi bị sụp đổ).
- Nhằm xác định các trạng thái đặc biệt như:
+ Tổ hợp một số điều kiện dẫn đến sự sụp đổcủa hệ thống;
+ Tính an toàn của dữ liệu, của dịch vụ khi hệthống sụp đổ
5.4.1 Thử nghiệm gây áp lực (tt)
Trang 33- Khi thử nghiệm hệ con và thử nghiệm hệ thống (tích hợp), có các chiến lược thử nghiệm chính là:
+ Thử nghiệm dưới lên (bottom-up testing)
+ Thử nghiệm trên xuống (top-down testing).
Trang 34-Thử nghiệm dưới lên tiến hành thử nghiệm với các môđun ở mức độ thấp trước.
- Mô đun thượng cấp (mô đun gọi) được thay thế bằng
chương trình kiểm thử có nhiệm vụ đọc dữ liệu kiểmthử, gọi mô đun cần kiểm thử và kiểm tra kết quả
5.5.1 Thử nghiệm dưới lên
Trang 36-Tiến hành thử nghiệm với các mô đun ở mức caotrước, các mô đun mức thấp được tạm thời phát triểnvới các chức năng hạn chế, có giao diện giống nhưtrong đặc tả.
- Mô đun mức thấp có thể chỉ đơn giản là trả lại kết quảvới một vài đầu vào định trước
5.5.2 Thử ngiệm trên xuống
Trang 37+ Phát hiện sớm các lỗi thiết kế, do đó có thể thiết
kế, cài đặt lại với giá rẻ
+ Nhanh chóng có phiên bản thực hiện với cácchức năng chính
+ Có phiên bản hoạt động sớm (với tính năng hạn chế) do đó có thể sớm tiến hành thẩm định
Trang 38Ví dụ minh họa
Minh họa giai đoạn kiểm chứng của phần mềm hỗtrợ giải bài tập phương trình đại số:
Giai đoạn 6: Kiểm chứng phần mềm
- Kiểm tra tính đúng đắn của các lớp đối tượng
+ Chuẩn bị dữ liệu thử nghiệm:
Đề bài tậpĐáp ánBài giảiĐiểm số
Đã có trong thế giới thực
Trang 39+ Kiểm tra:
Kiểm tra từng lớp đối tượngKiểm tra lớp SACH_BAI_TAP (tra cứu bài tập)Kiểm tra lớp BAI_TAP (soạn đề, phát sinh đề,soạn đáp án, giải bài tập, xem đáp án, chấm điểm)
Ghi chú: Cần kiểm tra từng công việc và sau đó kiểm tra phối hợp giữa các công việc
- Kiểm tra phối hợp các lớp đối tượng: SACH_BAI_TAP
và BAI_TAP (Soạn đề thi và sau đó tra cứu bài tập)
Trang 40Xác nhận của khách hàng:
- Khách hàng sử dụng phần mềm để thực hiện cáccông việc của mình
- So sánh kết quả khi sử dụng phần mềm và kếtquả khi thực hiện trong thế giới thực
Ví dụ minh họa (tt)
Trang 41Xác minh, thẩm định là tiến hành thí nghiệm để so sánhkết quả thực tế với lý thuyết nhằm phát hiện lỗi.
Test case là dữ liệu dùng để kiểm tra hoạt động củachương trình
Nội dung của test case là:
-Tên mô đun/chức năng muốn kiểm thử
-Dữ liệu vào
+ Dữ liệu của chương trình+ Môi trường thử nghiệm+ Thứ tự thao tác
-Kết quả mong muốn
-Kết quả thực tế