Bài giảng Bài 2: Kiểm thử phần mềm – ThS. Trần Mạnh Thắng trình bày khái niệm kiểm thử phần mềm; các phương pháp kiểm thử phần mềm; kỹ thuật thiết kế kiểm thử phần mềm; các chiến lược kiểm thử phần mềm; cấp độ kiểm thử phần mềm; xây dựng một ứng dụng có sử dụng một trong các phương pháp, kỹ thuật, chiến lược kiểm thử.
Trang 1BÀI 2 KIỂM THỬ PHẦN MỀM
Giảng viên: ThS Trần Mạnh Thắng
Trang 2TÌNH HUỐNG DẪN NHẬP
Kiểm thử phần mềm là gì? và có những phương pháp, chiến lược, kỹ thuậtvà cấp độ kiểm thử nào? Nó được áp dụng như thế nào trong quá trình sản
xuất phần mềm của công ty STT?
• Như trong bài một thì chúng ta đã có những khái niệm về công nghệ phần mềm,các pha trong tiến trình xây dựng cũng như các mô hình sản xuất các phần mềm…
để công ty STT có thể sử dụng trong quá trình sản xuất các sản phẩm phần mềmtuỳ theo quy mô và đặc điểm của từng sản phẩm;
• Tuy nhiên, phần mềm do công ty STT sản xuất ra liệu có đạt yêu cầu về chấtlượng và có đáp ứng được đúng theo yêu cầu của khách hàng cũng như việc phátsinh ra lỗi khi khách hàng đưa vào sử dụng các sản phẩm do công ty này sản xuất.Chính vì lý do này mà phải tiến hành kiểm thử phần mềm
Trang 3MỤC TIÊU
Trình bày được khái niệm kiểm thử phần mềm;
Mô tả các kỹ thuật thiết kế kiểm thử phần mềm;
Trình bày các phương pháp kiểm thử phần mềm;
Trình bày các chiến lược kiểm thử phần mềm;
Trình bày được các cấp độ kiểm thử phần mềm;
Xây dựng một ứng dụng có sử dụng một trong các phương pháp, kỹ thuật,
chiến lược kiểm thử
Trang 51 KHÁI NIỆM KIỂM THỬ PHẦN MỀM
1.1 Khái niệm
1.2 Vòng đời kiểm thử phần mềm
1.3 Phân loại kiểm thử
Trang 6và giải thích sự hoạt động chính xác (Paul Jorgensen);
• 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ở (Sue A.Conger- The New SE);
• Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần dưới nhữngđiều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đócủa hệ thống hay thành phần đó (Theo Bảng chú giải thuật ngữ chuẩn IEEE củaThuật ngữ kỹ nghệ phần mềm- IEEE Standard Glossary of Software EngineeringTerminology);
• Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là một tiến trìnhhay một tập hợp các tiến trình được thiết kế để đảm bảo mã hóa máy tính thực hiệntheo cái mà chúng đã được thiết kế để làm, và không thực hiện bất cứ thứ gì khôngmong muốn Đây là một pha quan trọng trong quá trình phát triển hệ thống, giúp cho
Trang 7Lưu ý khi tiến hành kiểm thử:
• Chất lượng phần mềm do khâu thiết kế quyết định là chủ yếu, chứ không phảikhâu kiểm thử;
• Tính dễ kiểm thử phụ thuộc vào cấu trúc chương trình;
• Người kiểm thử và người phát triển nên khác nhau;
• Dữ liệu thử cho kết quả bình thường thì không có ý nghĩa nhiều, cần có những dữliệu kiểm thử mà phát hiện ra lỗi;
• Khi thiết kế trường hợp thử, không chỉ dữ liệu kiểm thử nhập vào, mà phải thiết kếtrước cả dữ liệu kết quả sẽ có;
• Khi phát sinh thêm trường hợp thử thì nên thử lại những trường hợp thử trước đó
để tránh ảnh hưởng lan truyền sóng
1.1 CÁC ĐỊNH NGHĨA (tiếp theo)
Trang 81.2 VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE
Trang 91.2 VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE (tiếp theo)
Mô tả yêu cầu
Trang 101.3 PHÂN LOẠI KIỂM THỬ
• Theo mức độ chi tiết của các bộ phận hợp thành phần mềm:
Kiểm thử đơn vị (Unit);
Kiểm thử hệ thống (System);
Kiểm thử tích hợp (Integration)
• Theo phương pháp kiểm thử:
Kiểm thử hộp đen: Kiểm thử chức năng;
Kiểm thử hộp trắng: Kiểm thử cấu trúc
Trang 11Thiết kế kiến trúc
Thiết kế chi tiết
Lập trình
Test chấp nhận
Test
hệ thống
Test tích hợp Test đơn vị
Rà soát mã
Trang 12 Kế hoạch kiểm thử hệ thống là phải khớp với các yêu cầu phần mềm;
Các trường hợp kiểm thử cần phải hoàn thành khi các thiết kế chi tiết đã xong;
Kiểm thử hệ thống bắt đầu từ ngay trước khi lập trình
Trang 131.3.2 TIẾN TRÌNH KIỂM THỬ
Kiểm thử đơn vị Kiểm thử tích hợp Kiểm thử hệ thống chấp nhận Kiểm thử
Mỗi module Nhiều module,
hệ con
Phần cứng, phần mềm, yêu cầu hệ thống
Yêu cầu người dùng,
hệ thống
Trang 142 CÁC PHƯƠNG PHÁP KIỂM THỬ
2.1 Kiểm thử tĩnh (Static testing)
2.2 Kiểm thử động (Dynamic testing)
Trang 152.1 KIỂM THỬ TĨNH – KIỂM THỬ TRÊN BÀN
• Khái niệm: Là phương pháp kiểm thử phần mềm đòi hỏi xem xét lại thông
qua việc sử dụng giấy, bút để kiểm tra lần từng chi tiết mà không cần chạy
chương trình
• Các phương pháp kiểm thử tĩnh:
Thanh tra (Inspection);
Đi xuyên suốt (Walkthrough) hay duyệt
Trang 16• Khái niệm: Là phương pháp kiểm tra ngang hàng sản phẩm phần mềm thực hiện bởinhững người nghiên cứu riêng lẻ để tìm ra những lỗi có thể bằng một tiến trình chuẩncho trước.
• Một cuộc thanh tra bao gồm:
Đặc tả phần mềm; Kế hoạch thanh tra; Sản phẩm phần mềm;
Điều phối viên; Thanh tra viên; Tác giả phần mềm
2.1.1 KIỂM THỬ TĨNH BẰNG PHƯƠNG PHÁP THANH TRA
• Tiến trình thanh tra
Trang 17• Khái niệm: Là một phương pháp kiểm tra ngang hàng với một người thiết kế hướngnhóm phát triển đến các hoạt động chú ý của quá trình sản xuất phần mềm, tham giađặt câu hỏi và chú thích cho các lỗi có thể có.
• Khác biệt với thanh tra:
Cấu trúc mở;
Khả năng gợi ý định hướng thay đổi phần mềm
2.1.2 KIỂM THỬ TĨNH BẰNG PHƯƠNG PHÁP DUYỆT
Trang 18• Khái niệm: Phương pháp kiểm thử phần mềm thông qua việc dùng máy chạy
chương trình để điều tra trạng thái tác động của chương trình
• Các phương pháp kiểm thử động:
Kiểm thử khuyết tật;
Kiểm thử thống kê
2.2 KIỂM THỬ ĐỘNG – KIỂM THỬ TRÊN MÁY
• Đặc điểm của kiểm thử động:
Các ca kiểm thử xác định bằng sự thực thi của đối tượng kiểm thử hay
chạy các chương trình;
Kiểm tra cách thức hoạt động động của mã lệnh, tức là kiểm tra sự
phản ứng vật lý từ hệ thống tới các biến luôn thay đổi theo thời gian;
Phần mềm phải thực sự được biên dịch và chạy;
Làm việc với phần mềm, nhập các giá trị đầu vào và kiểm tra xem liệu
đầu ra có như mong muốn hay không
Trang 19Tiến trình kiểm thử động:
1 Thiết kế trường hợp thử theo thử tĩnh;
2 Trường hợp thử phải có cả kết quả kì vọng sẽ thu được;
3 Dịch chương trình nguồn và tạo modul tải để thử;
4 Xác định miền vào ra của tệp nếu cần thiết;
5 Nhập dữ liệu đã thiết kế cho truờng hợp thử;
6 Điều chỉnh môi trường thực hiện modul tải;
7 Thực hiện modul tải và ghi nhận kết quả;
8 Xác nhận kết quả với kết quả kỳ vọng;
9 Lặp lại thao tác từ 5-8
2.2 KIỂM THỬ ĐỘNG – KIỂM THỬ TRÊN MÁY (tiếp theo)
Trang 20• Khái niệm:
Phương pháp thử để tìm ra khuyết tật của phần mềm chủ yếu là lỗi lập trình;
Tiến hành dựa trên phân tích đặc tả chức năng;
Trang 21Khái niệm:
• Phương pháp thử bằng cách đánh giá tính dùng được của sản phẩm sử dụng dữ liệuthực dựa trên thống kê của số người truy cập hoặc số thao tác;
• Phương pháp này có bộ cơ sở dữ liệu thống kê rất lớn
2.2.2 KIỂM THỬ ĐỘNG BẰNG THỬ NGHIỆM THỐNG KÊ
Trang 223 CÁC KỸ THUẬT THIẾT KẾ KIỂM THỬ
3.1 Kiểm thử hộp trắng
3.2 Kiểm thử hộp đen
Trang 233.1 KIỂM THỬ HỘP TRẮNG (WHITE BOX TESTING)
Khái niệm:
• Kiểm thử hộp trắng là kiểm thử dựa vào cấu
trúc/mã lệnh chương trình (trong trường
hợp này yêu cầu người kiểm thử phải biết
ngôn ngữ lập trình);
• Đây là 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
White Box Data Testing Strategy
Kiểm thử hộp trắng để kiểm thử cái gì?
Các lệnh trong chương trìnhCác điều kiện logic
Các chu trình lặp lạiCấu trúc dữ liệuCác luồng điều khiển
Trang 243.1.1 YÊU CẦU VÀ CÁC KỸ THUẬT VỚI KIỂM THỬ HỘP TRẮNG
• Yêu cầu đối với kiểm thử hộp trắng:
Những con đường độc lập trong modul được thực hiện ít nhất một lần;
Những điều kiện logic được thực hiện với cả hai giá trị “True” và “False”;
Các chu trình đều phải thực hiện trong nội dung vòng lặp và khi đặt trong hoạtđộng của hệ thống;
Thực thi mọi cấu trúc dữ liệu để đảm bảo hiêu lực thi hàng của nó;
Thực thi các luồng điều khiển theo một tiến trình từ đầu cho đến khi kết thúc;
Thực hiện tất cả các vòng lặp ở biên của nó và cả với biên vận hành của nó;
Áp dụng giai đoạn đầu của vòng kiểm thử
• Các kỹ thuật sử dụng với kiểm thử hộp trắng:
Các câu lệnh (Statement);
Đường dẫn (Path);
Các điều kiện (Condition);
Trang 253.1.2 KIỂM THỬ HỘP TRẮNG VỚI CÁC CÂU LỆNH
• Khái niệm: Là việc thiết kế các trường hợp kiểm thử một chương trình, một phầnchương trình, một hệ thống hay một phần của hệ thống dựa vào cấu trúc/mã lệnhchương trình xem nó có đáp ứng tốt tất cả các giá trị đầu vào theo yêu cầu củachương trình;
• Các câu lệnh của chương trình phải được thực hiện ít nhất một lần
Trang 263.1.3 KIỂM THỬ HỘP TRẮNG THEO ĐƯỜNG DẪN
• Khái niệm: Là phương pháp kiểm tra bao trùm mọi đường dẫn của chương trình vàcần kết hợp với lược đồ tiến trình
• Đặc điểm:
Phụ thuộc nhiều vào các biểu thức điều kiện;
Với những trường hợp có số lượng đường dẫn quá lớn thì không nên sử dụngphương pháp này để kiểm tra tính đúng đắn của chương trình
Trang 27VÍ DỤ
If (A>B){ S1;
S2;
}elseS3;
S4;
while(A>B){
S1;
S2;
}S3;
Trang 283.1.4 KIỂM THỬ HỘP TRẮNG THEO ĐIỀU KIỆN
• Khái niệm: Là phương pháp kiểm tra các biểu thức điều kiện trên hai giá trị true
Các bộ kiểm tra { (x>0, y>0), (x<=0, y>0) } sẽ kiểm tra toàn bộ các điều kiện;
Tuy nhiên: Không thỏa mãn với mọi giá trị input, cần kết hợp cả x và y để thực hiệnbước kiểm tra
Trang 293.1.5 KIỂM THỬ HỘP TRẮNG THEO VÒNG LẶP
• Khái niệm: Là phương pháp tập trung vào tính hợp lệ của các cấu trúc vòng lặp
• Có các loại kiểm tra vòng lặp:
Trang 303.2 KIẾM THỬ HỘP ĐEN – BLACK BOX TESTING
Khái niệm:
• Là hình thức kiểm thử mà kiểm thử viên không cần biết đến cách thức hoạt động, mãnguồn, xử lý dữ liệu bên trong một thành phần/hệ thống Công việc cần làm là nhập
dữ liệu đầu vào và kiểm tra kết quả trả về có đúng như mong muốn hay không;
• Còn được gọi là kiểm thử chức năng;
• Là phương pháp tập trung về mặt yêu cầu chức năng của sản phẩm;
• Có thể tạo ra một bộ các điều kiện đầu vào để kiểm thử tất cả
Black Box Results
Input
Kiểm thử hộp đen
Trang 313.2.1 MÔ HÌNH KIỂM THỬ HỘP ĐEN
Mô hình kiểm thử hộp đen
Trang 323.2.2 ĐẶC ĐIỂM VÀ MỤC ĐÍCH CỦA KIỂM THỬ HỘP ĐEN
• Đặc điểm của kiểm thử hộp đen:
Bổ xung cho phương pháp kiểm thử hộp trắng để phát hiện ra tất cả các lỗi khácnhau mà kiểm thử hộp trắng không phát hiện ra được;
Không cần quan tâm đến thiết kế, mã nguồn mà chỉ quan tâm đến chức năng đã
đề ra của chương trình;
Chỉ dựa vào bản mô tả chức năng của chương trình;
Hướng vào các đặc tả bên ngoài;
Chủ yếu là kiểm tra giao diện;
Áp dụng vào giai đoạn sau của vòng kiểm thử
• Mục đích của kiểm thử hộp đen: Tìm các loại sai liên quan đến:
Chức năng: Đủ, đúng đắn;
Giao diện vào, ra: Đủ, phù hợp đúng và tiện lợi;
Cấu trúc truy cập dữ liệu: Thông suốt, đúng đắn;
Trang 333.2.3 CÁC KỸ THUẬT THƯỜNG DÙNG CHO KIỂM THỬ HỘP ĐEN
• Phân chia tương đương - Equivalence Partition Testing;
• Phân tích giá trị biên - Boundary Value Analysis Testing;
• Đồ thị Cause-Effect - Cause-effect Graphing Testing;
• Kiểm tra hành vi – Behavioural Testing;
• Ước lượng lỗi - Error Guessing Testing;
• Kiểm thử mọi cặp – All-pairs Testing;
• Kiểm thử fuzz – Fuzz Testing;
• Kiểm thử dựa trên mô hình – Model Based Testing;
• Ma trận dấu vết – Traceability Matrix Testing;
• Kiểm thử thăm dò – Exploratory Testing;
• Kiểm thử dựa trên đặc tả – Specification-base Testing
Trang 34KIỂM THỬ HỘP ĐEN THEO PHÂN CHIA TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITION)
• Là loại kiểm thử chia miền dữ liệu vào của chương trình thành các lớp dữ liệu đầu vàođại diện để lập ra các ca kiểm thử theo mỗi lớp đó Phân hoạch tương đương cố gắngxác định các ca kiểm thử mà không bao phủ các lớp lỗi, do đó giảm tổng số các kiểmthử sẽ được phát triển
• Thực hiện:
Chia dữ liệu vào thành các đoạn có cùng hành vi;
Mỗi đoạn lấy đại diện một số dữ liệu;
Kiểm thử chỉ thực hiện trên đại diện đó;
Nếu giá trị đại diện bị lỗi thì các thành phần còn lại cũng lỗi
• Ưu điểm: Test theo mức trừu tượng nên giảm số lượng test;
• Nhược điểm: Không thể tiến hành kiểm thử mọi trường hợp nên có thể sót lỗi
Trang 35VÍ DỤ
• Công ty STT viết chương trình trong đó có một hàm tính giá trị tuyệt đối của
một số nguyên Hãy kiểm thử xem hàm này có thực hiện đúng hay không
bằng phương pháp kiểm thử hộp đen theo phân chia tương đương
• Thực hiện: Chia các dữ liệu đầu vào thành hai lớp:
Cách chia 1:
Lớp hợp lệ là lớp có loại dữ liệu số nguyên đại diện đầu vào và ra
yêu cầu là (2/2);
Lớp không hợp lệ là lớp có loại dữ liệu số không nguyên: đại diện
đầu vào và ra yêu cầu là (2,5/2,5)
Trang 36KIỂM THỬ HỘP ĐEN THEO PHÂN TÍCH GIÁ TRỊ BIÊN - BVA
(BOUNDARY VALUE TESTING)
• BVA là kỹ thuật kiểm thử bổ sung thêm cho phân hoạch tương đương, nó dựa trêngiá trị biên của vùng dữ liệu hợp lệ;
• Thay vì chọn bất cứ phần tử nào của lớp tương đương, BVA chọn các ca kiểm thửsát với lớp tương đương;
• Thay vì tập trung vào điều kiện vào, BVA còn đưa ra các ca kiểm thử từ miền ra;
• BVA cho rằng số lớn các sai xuất hiện ở biên nhiều hơn là vùng dữ liệu trung tâm.Không những chú ý đến dữ liệu trong và sát biên mà còn chú ý đến dữ liệu ngoài
và sát biên;
• Thực hiện:
Phân đoạn tương tương tập các giá trị dữ liệu vào thành các lớp;
Chọn các giá trị ở biên của mỗi lớp;
Chọn các giá trị trên và dưới của biên
Trang 383.1.2 KIỂM THỬ HỘP TRẮNG VỚI CÁC CÂU LỆNH (tiếp theo)
Các bước kiểm thử hộp trắng với các câu lệnh:
• Dùng tài liệu thiết kế hay mã nguồn để vẽ thuật toán của chương trình hay hàm;
• Xác định đồ thị V(G);
• Từ đồ thị V(G) xác định tập đường độc lập tuyến tính lẫn nhau;
• Xây dựng trường hợp kiểm thử dựa trên tập đường độc lập tuyến tính ở trên
Trang 39ĐƯỜNG ĐỘC LẬP TUYẾN TÍNH
• Để đảm bảo các câu lệnh đều được kiểm thử ít nhất một lần, ta cần tìm tất cả cácđường điều khiển độc lập trong chương trình, tức là mỗi đường khác với các đườngkhác ít nhất một lệnh;
• Số các của một chương trình là giới hạn trên của số các kiểm thử cần phải tiến hành
Nó được gọi là độ phức tạp chu trình của chương trình;
• Một tập cơ bản con đường độc lập là tập:
Mọi cạnh của đồ thị dòng đều có mặt trong một con đường của tập này;
Mỗi con đường của tập đó đều chứa ít nhất một cung không có mặt trong mọicon đường khác của nó;
Số lượng các con đường của tập này cho ta số đo độ phức tạp chu trình của mộtchương trình
Trang 41CÁC ĐƯỜNG CƠ BẢN CỦA ĐỒ THỊ DÒNG
• Đồ thị dòng (đồ thị chương trình) gần giống dòng điều khiển
• Nó là một đồ thị cấu trúc gồm:
Mỗi nút (hình tròn) biểu thị một số (hoặc có thể là 0) câu lệnh thủ tục;
Mỗi cạnh nối hai nút biểu diễn dòng điều khiển;
Chia mặt phẳng thành nhiều miền;
Một nút là vị từ nếu nó biểu thị sự phân nhánh hoặc hội nhập của cung
• Đồ thị dòng dùng để biểu diễn thiết kế thủ tục
Trang 42s5
Trang 432 1
5
1 2 3 4 5 6
7 8
9 10
Trang 44VÍ DỤ 2 (tiếp theo)
Đồ thị bên có 5 nút quyết định nhị phân nên có độ
phức tạp C = 5 +1 = 6 6 đường thi hành tuyến tính
7 8
9 10
Trang 45 Chú ý: không thể kiểm thử đường 1 này riêng biệt mà phải khiểm thử
chung với đường 4 hay 5 hay 6
• Test case cho đường 1 2 3 10 11:
Trang 46VÍ DỤ 2 (tiếp theo)
• Test case cho đường 1 2 3 4 5 8 9:
value(i) <> -999 i <= 100;
và value(k) < min với k < I;
Kết quả kỳ vọng: (1) average = Giá trị trung bình của n giá trị hợp lệ
(2) tcnt = 100 (3) vcnt = n (số lượng giá trị hợp lệ)
• Test case cho đường 1 2 3 4 5 6 8 9:
value(i) <>-999 với i <= 100
và value(k) > max với k <= i
Kết quả kỳ vọng: (1) average = Giá trị trung bình của n giá trị hợp lệ
(2) tcnt = 100 (3) vcnt = n (số lượng giá trị hợp lệ)
• Test case cho đường 1 2 3 4 5 6 7 8 9:
value(i) <>-999 và min <= value(i) <= max với i <= 100
Kết quả kỳ vọng: (1) average = Giá trị trung bình của 100 giá trị
Trang 47KIỂM THỬ HỘP ĐEN THEO ĐỒ THỊ CAUSE-EFFECT
(CAUSE-EFFECT GRAPHING)
• Là kỹ thuật kiểm thử phân tích việc kết hợp các điều kiện vào, tạo một đồ thị kết nốinguyên nhân – kết quả (cause-effect) Trong đó, nguyên nhân (cause) là đầu vào vàkết quả (effect) là đầu ra