Các kỹ thuật kiểm thử phần mềm được thiết kế để tạo ra các Test Case hiệu quả và phổ biến nhất bao gồm: Phân vùng tương đương (Equivalence partitioning), Phân tích giá trị biên (Boundary value analysis), Bảng quyết định (Decision Tables), Đoán lỗi (Error guessing), Chuyển đổi trạng thái (State Transition). Bằng cách sử dụng những kỹ thuật này một cách hiệu quả, các nhà kiểm thử có thể tạo ra các Test Case toàn diện và có hiệu suất cao để đảm bảo chất lượng của phần mềm.
1. Phân vùng tương đương (Equivalence partitioning)
Phân vùng tương đương là một kỹ thuật trong kiểm thử phần mềm, trong đó đầu vào của hệ thống được chia thành các nhóm tương đương. Ý tưởng cơ bản là nếu một giá trị trong một nhóm hoạt động đúng, thì tất cả các giá trị khác trong nhóm đó cũng được giả định là hoạt động đúng, và ngược lại.
Quy trình thiết kế Test Case bằng phân vùng tương đương thường bao gồm hai bước chính: Xác định các lớp tương đương và Xác định các ca kiểm thử. Trong quá trình này (Equivalence partitioning), đầu vào được chia thành các lớp, bao gồm:
- Lớp các giá trị lớn hơn: Bao gồm các giá trị lớn hơn giá trị mong đợi.
- Lớp các giá trị nhỏ hơn: Bao gồm các giá trị nhỏ hơn giá trị mong đợi.
- Lớp các giá trị hợp lệ: Bao gồm các giá trị nằm trong khoảng mong đợi và được coi là hợp lệ.
Bằng cách này, kỹ thuật phân vùng tương đương giúp tối ưu hóa quá trình kiểm thử bằng cách chọn ra một tập hợp các giá trị đại diện từ mỗi nhóm, thay vì kiểm tra từng giá trị một.
Phân vùng tương đương là kỹ thuật chia đầu vào thành những nhóm tương đương nhau.
Ví dụ: Mật khẩu chỉ được nhập Zip code 5 số. Coi đầu vào là X = 5, áp dụng kỹ thuật phân vùng tương tương ta có 3 lớp giá trị đầu vào: Lớp giá trị hợp lệ X = 5, lớp giá trị không hợp lệ X < 5 và X > 5. Từ các lớp tương đương phát triển thành Test Case như sau:
- Nhập Zip Code = 5 => Hợp lệ
- Nhập Zip Code < 5 => Không hợp lệ
- Nhập Zip Code > 5 => Không hợp lệ
2. Phân tích giá trị biên (Boundary value analysis)
Phân tích giá trị biên là một phương pháp trong kiểm thử phần mềm, tập trung vào việc kiểm tra các giá trị ở vùng biên của dữ liệu đầu vào và dữ liệu đầu ra. Thay vì kiểm thử toàn bộ phạm vi dữ liệu, các tester tập trung vào các giá trị biên để đảm bảo hệ thống hoạt động đúng trong các trường hợp cực đoan nhất.
Ví dụ, nếu một trường dữ liệu yêu cầu nhập số từ 1 đến 100, thì phân tích giá trị biên sẽ tập trung vào các giá trị như 1, 100, 0 (giá trị dưới biên), và 101 (giá trị trên biên). Bằng cách này, tester chỉ cần kiểm tra một số lượng nhỏ các trường hợp (từ 4 đến 6 trường hợp) để đảm bảo rằng hệ thống hoạt động chính xác trong các trường hợp quan trọng nhất.
Phương pháp này giúp tối ưu hóa quá trình kiểm thử bằng cách tập trung vào các trường hợp có thể gây ra lỗi nhiều nhất, từ đó giảm thiểu thời gian và công sức cần thiết cho quá trình kiểm thử.
Boundary conditions là các vị trí ở giữa, trên và dưới các biên của lớp tương đương. Khi áp dụng kỹ thuật phân tích giá trị biên, người kiểm thử sẽ chọn các giá trị:
- Giá trị nhỏ nhất
- Giá trị ngay dưới giá trị nhỏ nhất
- Giá trị bình thường
- Giá trị lớn nhất
- Giá trị ngay trên giá trị lớn nhất
Boundary value analysis phân chia dữ liệu thành 5 giá trị cơ bản
Ví dụ: Số lượng sản phẩm cần mua chỉ được phép điền từ [0-10]. Áp dụng kỹ thuật phân tích giá trị biên ta sẽ có các giá trị:
- Giá trị nhỏ nhất: 0
- Giá trị ngay dưới giá trị nhỏ nhất: -1
- Giá trị bình thường: 5
- Giá trị ngay trên giá trị lớn nhất: 11
- Giá trị lớn nhất: 10
Từ các giá trị phát triển thành các Test Case như sau:
- Nhập số lượng sản phẩm = 0 => Hợp lệ
- Nhập số lượng sản phẩm = 5 => Hợp lệ
- Nhập số lượng sản phẩm = 10 => Hợp lệ
- Nhập số lượng sản phẩm = -1 => Không hợp lệ
- Nhập số lượng sản phẩm = 11 => Không hợp lệ
3. Bảng quyết định (Decision Tables)
Bảng quyết định (Decision table) là một kỹ thuật quan trọng trong việc viết Test Case, đặc biệt là khi cần xử lý nhiều trường dữ liệu và điều kiện. Kỹ thuật này giúp phân loại và định hình các kịch bản kiểm thử một cách rõ ràng và hiệu quả.
Đầu tiên, để tạo Decision table, người kiểm thử cần liệt kê tất cả các điều kiện hoặc dữ liệu đầu vào. Sau đó, họ tính toán số lượng kết hợp có thể (Rules) và đặt các kết hợp này trong bảng quyết định. Cuối cùng, người kiểm thử giảm thiểu các trường hợp kết hợp và quyết định các Test Case cần thiết.
Ví dụ, xét trường hợp của màn hình Login với 2 trường “User Name” và “Password”. Để đăng nhập thành công, cần nhập đúng cả 2 trường này. Các trường hợp khác sẽ dẫn đến thông báo lỗi “Nhập không chính xác. Vui lòng nhập lại”. Áp dụng Bảng quyết định giúp xác định các kịch bản kiểm thử một cách tổ chức và bao quát, giúp đảm bảo rằng tất cả các trường hợp quan trọng đều được kiểm tra.
Áp dụng kỹ thuật Decision Tables, ta xây dựng được bảng kết hợp sau:
(Mỗi giá trị đầu vào sẽ có 2 dạng: T (True – Đúng) và F (Fail – Sai)
Input | Giá trị 1 | Giá trị 2 | Giá trị 3 | Giá trị 4 |
User Name | T | T | F | F |
Password | T | F | T | F |
Output | Login thành công | Login không thành công | Login không thành công | Login không thành công |
Từ bản kết hợp, các tester phát triển thành các Test Case như sau:
- Nhập đúng cả hai field “User Name” và “Password” => Login thành công
- Nhập đúng field “User Name”, nhập sai field “Password” => Login không thành công
- Nhập sai field “User Name”, nhập đúng field “Password” => Login không thành công
- Nhập sai cả hai field “User Name” và “Password” => Login không thành công
4. Đoán lỗi (Error guessing)
Đoán lỗi là kỹ thuật mô tả hành động phỏng đoán lỗi thường gặp của hệ thống dựa trên trực giác và kinh nghiệm của các tester. Người kiểm thử sẽ liệt kê các loại lỗi có thể xảy ra và cho vào Test Case để kiểm tra xác minh vấn đề.
Phương pháp này đặc biệt dựa vào kinh nghiệm và kiến thức của tester. Kỹ thuật đoán lỗi không tuân theo bất kỳ quy tắc cụ thể nào, Test Case có thể được thiết kế tùy thuộc vào nhiều yếu tố như: Đặc trưng hoạt động của phần mềm, lỗi đã xuất hiện ở các dự án tương tự khác…
Các yếu tố mà người kiểm thử hay sử dụng để đoán lỗi:
- Trực giác kiểm thử.
- Có kiến thức liên quan, hiểu rõ về hệ thống.
- Bài học rút ra từ các lần kiểm thử phần mềm trước, các lỗi thường gặp…
- Tập trung test theo từng phần, từng chức năng sẽ giúp tester chú trọng và lý giải những vấn đề xảy ra ở vùng nào.
Ví dụ:
- Dự đoán trường hợp nhập khoảng trắng vào các field văn bản
- Kiểm tra xử lý hệ thống khi click button khi chưa nhập giá trị
- Lường trước lỗi xảy ra khi thiết định lại cài đặt của thiết bị kiểm thử
5. Chuyển đổi trạng thái (State Transition)
Kỹ thuật chuyển đổi trạng thái trong kiểm thử phần mềm là việc thay đổi các điều kiện đầu vào để gây ra sự biến đổi trong trạng thái của ứng dụng đang được kiểm tra (Application under Test – AUT). Các tester thực hiện kỹ thuật này bằng cách nhập các điều kiện đầu vào khác nhau, nhưng vẫn tuân theo một trình tự được thiết lập trước đó. Các giá trị đầu vào này thường bao gồm các trường hợp tích cực và tiêu cực, nhằm đánh giá hành vi của hệ thống một cách chuẩn xác nhất.
Kỹ thuật chuyển đổi trạng thái thường được áp dụng khi các tester muốn kiểm tra ứng dụng cho một tập hợp giới hạn các giá trị đầu vào. Nó cũng hữu ích khi nhóm tester muốn kiểm tra chuỗi các sự kiện xảy ra trong ứng dụng để đảm bảo tính ổn định và đáng tin cậy của hệ thống trong mọi tình huống.
Sơ đồ minh họa kỹ thuật chuyển đổi trạng thái.
Ví dụ:
Nếu user nhập mật khẩu hợp lệ trong 3 lần thử bất kỳ đầu tiên, hệ thống xử lý đăng nhập thành công. Nếu user nhập mật khẩu không hợp lệ trong lần thử đầu tiên hoặc lần thứ hai, hệ thống sẽ báo nhập lại mật khẩu. Khi user nhập sai mật khẩu lần thứ 3, hệ thống sẽ không cho nhập lại mật khẩu và tiến hành khóa tài khoản.
Một số Test Case được tạo từ chuỗi sự kiện trên như sau:
a. Nhập sai mật khẩu lần 1 => Hệ thống báo nhập lại mật khẩu
b. Nhập sai mật khẩu lần 2 => Hệ thống báo nhập lại mật khẩu
c. Nhập sai mật khẩu lần 3 => Hệ thống báo khóa tài khoản
d. Nhập sai mật khẩu lần 1, đúng lần 2 => Đăng nhập thành công
e. Nhập sai mật khẩu 2 lần, đúng lần 3 => Đăng nhập thành công
Kết luận
Việc đảm bảo bộ Test Case luôn đạt độ bao phủ tốt và được tối ưu để tiết kiệm thời gian và chi phí là một thách thức lớn đối với các Tester. Vì vậy, việc nắm vững các kỹ thuật kiểm thử là điều quan trọng và thiết yếu. Hy vọng rằng với bài viết trên, blog đã giúp các bạn hiểu rõ hơn về 5 kỹ thuật kiểm thử chính: Phân tích giá trị biên, phân vùng tương đương, bảng quyết định, chuyển đổi trạng thái và đoán lỗi. Sử dụng thành thạo những kỹ thuật này sẽ giúp các tester tạo ra bộ Test Case chất lượng cao, đóng góp tích cực vào việc đảm bảo chất lượng phần mềm.