12/08/2018, 16:17

Tìm hiểu kỹ thuật phân tích bao phủ testcase trong kiểm thử White-Box

1 Định nghĩa Trong ngành kiểm thử phần mềm có 2 chiến lược kiểm thử tiêu biểu là black box testing và whitebox testing. Black box testing là thực hiện quá trình kiểm thử khi không biết source code của chương trình. Còn whitebox testing được sử dụng khi đã có source code của chương trình và có thể ...

1 Định nghĩa

Trong ngành kiểm thử phần mềm có 2 chiến lược kiểm thử tiêu biểu là black box testing và whitebox testing. Black box testing là thực hiện quá trình kiểm thử khi không biết source code của chương trình. Còn whitebox testing được sử dụng khi đã có source code của chương trình và có thể thực hiện kiểm thử tính logic của chương trình thông qua việc truy cập vào cấu trúc dữ liệu và giải thuật bên trong chương trình. Test cases của kỹ thuật white box thường được viết theo các rẽ nhánh câu lệnh, các điểm quyết định (cả quyết định đúng và quyết định sai), các vòng lặp khác nhau và kiểm tra cấu trúc data bên trong của ứng dụng với mục tiêu test bao phủ nhiều nhất có thể các câu lệnh, điểm quyết định và các rẽ nhánh trong code . Nhờ đó sẽ giúp ích rất nhiều cho tester tạo testcase hướng automation. Vậy test bao phủ trong whitebox test là gì?

  • Độ bao phủ test là tỉ lệ (tính theo %) test case đã được thực hiện trên tổng số test case cần thiết cho ứng dụng. Nếu tỉ lệ này càng cao thì ứng dụng càng được test kỹ. Mặc dù việc đảm bảo ứng dụng có test coverage là 100% trong một số trường hợp là bất khả thi, nhưng ta vẫn sẽ luôn cố gắng để đạt được kết quả gần với con số đó nhất.
  • Độ bảo phủ test ( the test coverage) giúp QA-tester đo được bộ testcase họ tạo ra đã đảm bảo được đầy đủ cho tất cả các trường hợp xử lý khi chạy chương trình chưa.

2, Các công thức tính:

Công thức cơ bản: độ bao phủ = Số item bao phủ được thực hiện/ Tổng số item bao phủ * 100% Công thức khác:

  • Độ bao phủ số testcase đã test = Số testcase( pass/Fail)/ Tổng số testcase
  • Độ bao phủ số đã test thành công = Số TC pass/ Tổng số TC test – N/A
  • Độ bao phủ dòng lệnh = Số dòng code được test đến/tổng số dòng code của phần mềm

3. Các tiêu chuẩn của điều kiện bao phủ:

Có 2 loại điều kiện bao phủ cơ bản:

  • Code coverage
  • function coverage

3.1 Code coverage Là phương pháp thống kê dựa vào số lương code được kiểm tra. Trong code coverage có thể phần chia thành các loại sau:

  • Bao phủ dòng lệnh(Statement coverage)
  • Bao phủ các nhánh (Branch/Decision coverage)
  • Bao phủ điều kiện (Condition coverage)
  • Bao phủ đường dẫn (Path coverage)
  • Bảng so sánh ưu nhược điểm của các loại điều kiện bao phủ:

Mối liên quan giữa các loại điều kiện bao phủ:

  1. 100% Linear Code Sequence and Jump (LCSAJ) coverage thì bao gồm 100% Branch/Decision coverage
  2. 100% Path coverage thì bao gồm 100% Branch/Decision coverage
  3. 100% Branch/Decision coverage thì bao gồm 100% Statement coverage
  4. 100% LCSAJ coverage thì bao gồm 100% Statement coverage
  5. 100% Path coverage thì bao gồm 100% Statement coverage

Note: Line code sequence and Jump (LCSAJ) coverage: là bao phủ luồng dữ liệu. 3.2 Functional coverage Function coverage dựa trên việc thực thi các chức năng. Là phương pháp đánh giá mức độ bao phủ của thiết kế dựa trên tính năng đã được kiểm tra. Đối với phương pháp này, việc định ra những tính năng nào cần kiểm tra sẽ quyết định chất lượng của function coverage. Ví dụ: ta có các hàm cộng, trừ, nhân, chia và hàm tính toán. Ta phải thực hiện test case cho hàm tính toán để các hàm cộng trừ nhân chia phải được gọi ít nhất 1 lần. Lúc này test suite sẽ thỏa được bao phủ chức năng Vậy, một bộ testcase dạng whitebox tốt là biết:

  • Chọn phương pháp hoặc tiêu chuẩn bao phủ thích hợp (bao phủ lệnh, nhánh, ...)
  • Đặt mức % bao phủ tối thiểu
  • Sử dụng nhiều hơn một tiêu chuẩn bao phủ
  • Không nên chỉ dựa vào bao phủ mã lệnh, cần kết hợp các kỹ thuật khác nữa.

Kết luận: Phương pháp kiểm thử hộp trắng cũng có thể được sử dụng để đánh giá sự hoàn thành của một bộ kiểm thử mà được tạo cùng với các phương pháp kiểm thử hộp đen. Điều này cho phép các nhóm phần mềm khảo sát các phần của 1 hệ thống ít khi được kiểm tra và đảm bảo rằng những điểm chức năng quan trọng nhất đã được kiểm tra. Năng xuất kiểm thử tốt nhất khi chúng ta tìm được nhiều lỗi nhất với công sức (nỗ lực) bỏ ra ít nhất. Việc nỗ lực được đo bằng thời gian để tạo các ca kiểm thử, thêm chúng vào bộ kiểm thử để chạy các bộ kiểm thử. Nên cần sử dụng chiến lược phân tích bao phủ để tăng mức bao phủ càng của bộ testcase càng nhanh càng tốt. Điều này cho xác xuất tìm lỗi cao nhất và được xử lý càng sớm càng tốt.

0