CHƯƠNG 5 : KIỂM THỬ PHẦN MỀM
3. Các kỹ thuật kiểm thử
3.1. Kiểm thử hộp đen - Black-box Testing
Black Box Testing là gì?
Kiểm tra hộp đen (Black box testing) là một phương pháp kiểm thử phần mềm mà việc kiểm tra các chức năng của một ứng dụng không cần quan tâm vào cấu trúc
nội bộ hoặc hoạt động của nó.
Phương pháp thử nghiệm Black Box Testing
Dựa vào chức năng Kiểm thử hộp đen (Black box testing) có thể được áp dụng hầu
như đến mọi cấp độ của kiểm thử phần mềm:
• Kiểm thử đơn vị (Unit testing)
• Kiểm thử tích hợp (Integration testing)
• Kiểm thử hệ thống (System testing)
• Kiểm thử chấp nhận (Acceptance testing).
Tuy nhiên, Black box test được sử dụng thích hợp nhất trong kiểm thử hệ thống
Ưu điểm Black Box Testing
• Các Tester được thực hiện từ quan điểm của người dùng và sẽ giúp đỡ trong
việc sáng tỏ sự chênh lệch về thơng số kỹ thuật.
• Các Tester theo phương pháp black box khơng có “mối ràng buộc” nào với
code, và nhận thức của một tester rất đơn giản: một source code có nhiều lỗi.
Sử dụng nguyên tắc, “Hỏi và bạn sẽ nhận” các tester black box tìm được
nhiều bug ở nơi mà các developer khơng tìm thấy.
• Tester khơng cần phải biết ngơn ngữ lập trình hoặc làm thế nào các phần
mềm đã được thực hiện.
• Thiết kế kịch bản kiểm thử khá nhanh, ngay khi mà các yêu cầu chức năng
được xác định.
Nhược điểm Black Box Testing
Người ta nói kiểm thử hộp đen giống như là đi trong bóng tối mà khơng có bóng
đèn vậy “, bởi vì kiểm thử viên khơng biết các phần mềm được kiểm tra thực sự được xây dựng như thế nào. Đây là lý do mà một kiểm thử viên viết rất nhiều test
case để kiểm tra một thứ gì đó mà đáng lẽ ra chỉ cần 1 ca kiểm thử là đủ, và/hoặc
một số phần của phần mềm không được kiểm thử chút nào.
Vòng đời phát triển của kiểm thử hộp đen.
Kiểm thử hộp đen có chu kỳ sống riêng của nó được gọi là vịng đời kiểm thử phần
mềm( STLC) và nó liên quan đến mọi giai đoạn của Vịng đời phát triển phần mềm.
• Requirement – Đây là giai đoạn ban đầu của SDLC và trong giai đoạn này
các yêu cầu được thu thập. Kiểm thử phần mềm cũng tham gia vào giai đoạn này.
• Test Planning & Analysis – Các loại thử nghiệm áp dụng cho dự án được
xác định. Một kế hoạch thử nghiệm được tạo ra để xác định các rủi ro có thể
xảy ra của dự án và giảm thiểu sự rủi ro của chúng.
• Design – Trong giai đoạn này các trường hợp / tập lệnh thử nghiệm được tạo
trên cơ sở các tài liệu yêu cầu phần mềm
• Test Execution – Trong giai đoạn này chúng ta thực hiện các trường hợp thử
nghiệm đã chuẩn bị.
Phương pháp kiểm thử hộp đen
Đoán lỗi:
Là một kỹ năng quan trọng của tester, thậm chí có thể gọi là nghệ thuật. Một kiệt tác của trực giác. Phương pháp này đặc biệt dựa vào kinh nghiệm và kiến thức của tester. Nhiều tester cố gắng đoán xem phần nào của hệ thống mà có khả năng ẩn chứa lỗi. Với phương pháp này, họ không cần một công cụ hay một kịch bản kiểm thử nào khi bắt đầu vào việc.
Kiểm thử dựa vào đồ thị nguyên nhân – kết quả (Cause Effect Graphing): là một kỹ thuật thiết kế kiểm thử phần mềm liên quan đến việc xác định các trường hợp (điều kiện đầu vào) và các hiệu ứng (điều kiện đầu ra). Vì các hệ thống hiện nay đều
được phát triển trên nền tảng OOP, do đó, chúng ta có thể có được một đồ thị các đối tượng mà hệ thống định nghĩa và kết nối. Từ đồ thị này, chúng ta dễ dàng biết
các mối quan hệ của những đối tượng mà hệ thống xử lý, từ đó sẽ cho chúng ta các
kịch bản kiểm thử phù hợp.
Là một kỹ thuật kiểm thử phần mềm có liên quan đến phân chia các giá trị đầu vào thành các phân vùng hợp lệ và khơng hợp lệ, sau đó chúng ta sẽ viết ra các kịch
bản kiểm thử cho từng phần, chọn giá trị đại diện từ mỗi phân vùng làm dữ liệu thử
nghiệm.
• Phân vùng tương đương: là kỹ thuật thực hiện test theo từng class đồng giá
trị (tập hợp điều kiện cùng một thao tác).
• Tập hợp giá trị input có cùng một kết quả xử lý, tập hợp thời gian có cùng một kết quả xử lý, tập hợp kết quả export được xử lý cùng một giá trị nhập.
• Mục đích : Giảm đáng kể số lượng test case cần phải thiết kế vì với mỗi lớp tương đương ta chỉ cần test trên các phần tử đại diện.
• Chọn tối thiểu một giá trị đại diện từ các class đồng giá trị để tiến hành test.
Nếu có lỗi xảy ra thì các giá trị khác trong class đồng giá trị cũng sẽ có lỗi giống
nhau.
Phân tích giá trị biên (Boundary Value Analysis):
Là một kỹ thuật kiểm thử phần mềm có liên quan đến việc xác định biên (ranh giới)
của điều kiện mô tả cho các giá trị đầu vào và chọn giá trị ở biên và bên cạnh giá trị
biên làm dữ liệu kiểm thử. Phương pháp phân tích giá trị biên sẽ đưa ra các giá trị
đặc biệt, bao gồm loại dữ liệu, giá trị lỗi, bên trong, bên ngoài biên giá trị, lớn nhất
và nhỏ nhất.
Những kỹ sư nhiều kinh nghiệm chắc chắn đã từng gặp phải các lỗi của hệ thống ngay tại giá trị biên. Đó là lý do tại sao phân tích giá trị biên lại quan trọng khi kiểm thử hệ thống.
• Test giá trị biên được thực hiện theo trình tự dưới đây:
• Tìm ra đường biên
• Quyết định giá trị biên
• Quyết định giá trị để test
• Giá trị biên.
• Dưới giá trị biên. (Nếu là class đồng giá trị)
• Trên 1 giá trị biên. (Nếu là class đồng giá trị)
Sử dụng bảng quyết định (Decision Tables)
• Là dùng bảng để hiển thị danh sách các thao tác phần mềm được quyết định
trên các điều kiện khác nhau.
• Decision table testing chú trọng vào nhiều điều kiện để thực hiện test.
3.2 Kiểm thử hộp trắng - White-box Testing
White Box Testing là gì?
Kiểm thử hộp trắng (White Box Testing) là một kỹ thuật xác minh giúp các Tester có thể sử dụng để kiểm tra mã code của họ hoạt động như dự kiến. Có 2 hoạt động kiểm thử hộp trắng:
• Kiểm thử luồng điều khiển
• Kiểm thử dịng dữ liệu
Các kỹ thuật White Box Testing phổ biến
Để thực hiện được kiểm thử hộp trắng, ta cần tuân thủ các bước cơ bản sau:
• Hiểu được mã nguồn: Đây là việc cần thiết cần làm đầu tiên, vì kiểm thử
hộp trắng liên quan đến kiểm tra các hoạt động bên trong nên bắt buộc phải
hiểu được mã nguồn mà ta cần kiểm tra. Ngoài ra, ta cần phải thực hiện chặt chẽ vấn đề mã hóa an tồn vì bảo mật là cốt lỗi của việc kiểm thử này.
• Tạo và thực hiện các trường hợp kiểm thử: Việc viết thêm các đoạn mã để
kiểm tra đoạn mã nguồn của ứng dụng sẽ là việc tiếp theo cần làm. Cần phải phát triển các thử nghiệm nhỏ cho từng quy trình hoặc cho từng chuỗi quy trình trong ứng dụng.
Một ví dụ đơn giản với đoạn mã như sau:
Printme (int a, int b) { ------------ Printme is a function int result = a+ b;
If (result> 0)
Print ("Positive", result) Else
Print ("Negative", result) }
Mục tiêu đặt ra là xác định tất cả các nhánh, các vòng lặp và câu lệnh trong đoạn
mã trên.
Và các trường hợp thử nghiệm của White Box Testing sẽ là A = 1, B = 1
A = -1, B = -3
Các trường hợp thử nghiệm trên sẽ bao phủ được các điều kiện, các nhánh cũng như các lệnh trong đoạn mã.
Các loại kiểm thử hộp trắng
• Unit testing: đây là phương pháp kiểm thử đầu tiên được thực hiện để kiểm
tra một ứng dụng. Phương pháp này khá quan trọng nên ta sẽ bàn về nó ngay sau khi đọc xong phương pháp kiểm thử Black box testing.
• Testing for Memory Leaks (kiểm tra rò rỉ bộ nhớ): Rò rỉ bộ nhớ là nguyên
nhân hàng đầu khiến cho việc chạy ứng dụng trở nên chậm chạp hơn. Và khi có hiện tượng như trên thì cần phải nghĩ ngay đến trường hợp này.
Ngồi ra cũng có một số phương pháp khác như: White Box Penetration Testing và White Box Mutation Testing
Ưu điểm của White Box Testing:
• Tối ưu hóa mã nguồn bằng cách tìm ra các lỗi ẩn.
• Dễ dàng thực hiện tự động nhưng cũng kỹ lưỡng hơn
• Và việc kiểm tra có thể bắt đầu sớm ngay cả khi GUI khơng khả dụng.
Nhược điểm của White Box Testing:
• Thực hiện khá phức tạp và tốn kém chi phí.
• Địi hỏi người kiểm thử phải thực sự chuyên nghiệp và hiểu biết về lập trình.
• Tốn rất nhiều thời gian
CÂU HỎI VÀ BÀI TẬP
1. Trình bày một số khái niệm cơ bản về kiểm thử phần mềm.?
2. Trình bày các cấp độ kiểm thử phần mềm?
TÀI LIỆU THAM KHẢO
[1]. Thạc Bình Cường,Nhập mơn cơng nghệ phần mềm , NXB Giáo dục, 2008.
[2]. Trần Đình Quế, Nhập mơn cơng nghệ phần mềm, Đại học Đà Nẵng, Năm
2007.
[3]. Giáo trình nhập mơn UML, Huỳnh Văn Đức, Đoàn Thiện Ngân, NXB Lao
động Xã hội,2003.