DATA-DRIVEN TESTING

Trước đó mình đã giới thiệu về Keyword-Driven Testing, phần này sẽ đi tiếp tới kỹ thuật Kiểm thử hướng dữ liệu (Data-Driven testing)

1.    Kiểm thử hướng dữ liệu (Data-Driven testing)

Kiểm thử hướng dữ liệu (Data-Driven testing) là một phương pháp kiểm thử phần mềm nâng cao, trong đó dữ liệu kiểm tra được lưu trữ dưới dạng định dạng bảng hoặc bảng tính. Kiểm thử hướng dữ liệu cho phép kiểm thử viên sử dụng một kịch bản kiểm thử được lập trình để có khả năng thưc thi được tự động (Test script) có thể thực hiện kiểm tra cho tất cả dữ liệu kiểm thử và kết quả mong đợi trong cùng một bảng dữ liệu đầu vào.

Kiểm thử hướng dữ liệu hướng tới mục tiêu là sinh bộ dữ liệu kiểm thử (Test data) tự động từ phân tích các dữ liệu lưu trữ hoặc đặc tả yêu cầu phần mềm liên quan tới dữ liệu vào ra dựa trên các kỹ thuật kiểm thử hộp đen: Phân lớp tương đương; Phân tích giá trị biên; Bảng quyết định; Đoán lỗi. Phương pháp tiếp cận này là rất cần thiết vì kiểm thử viên thường có nhiều tập dữ liệu cho một kịch bản kiểm thử duy nhất và việc tạo các kịch bản kiểm thử riêng lẻ cho từng tập dữ liệu sẽ gây tốn nhiều thời gian.

Ví dụ: Thực hiện kiểm tra hệ thống đăng nhập với 1000 bộ dữ liệu khác nhau.

Để kiểm thử tự động với yêu cầu này sẽ có các cách tiếp cận khác nhau sau như:

Cách tiếp cận 1) Tạo 1000 tập lệnh một cho mỗi tập dữ liệu và chạy từng bài kiểm tra riêng rẽ.

Cách tiếp cận 2) Thay đổi thủ công giá trị trong tập lệnh thử nghiệm và chạy nó nhiều lần.

Cách tiếp cận 3) Gợi ý cách tiếp cận nhập dữ liệu từ trang tính Excel. Tìm nạp dữ liệu kiểm thử theo từng hàng một và thực thi tập lệnh.

Có thể thấy trong ba cách tiếp cận vừa nêu trên, hai kịch bản đầu tiên là tốn nhiều công sức và thời gian. Do đó, lý tưởng nhất là làm theo cách tiếp cận thứ ba và nó còn được gọi là cách tiếp cận hướng dữ liệu (Data-Driven testing). Tuy nhiên, mặt hạn chế của phương pháp này là nó phụ thuộc vào kỹ năng tự động hóa của kiểm thử viên, nó yêu cầu cần có hiểu biết về ngôn ngữ lập trình.

2.    Tích hợp kiểm thử hướng dữ liệu và từ khóa

Như đã giới thiệu ở phần trước, nếu như kiểm thử hướng từ khóa xuất hiện đã loại bỏ được những nhược điểm của kiểm thử tự động hướng dữ liệu thì việc áp dụng cả hai giải pháp này sẽ giúp tạo ra một khung làm việc có tất cả các ưu điểm của hai giải pháp và hạn chế nhược điểm của từng giải pháp.

Như minh họa, trong khung làm việc tích hợp giữa kiểm thử hướng dữ liệu và từ khóa, dữ liệu kiểm thử được lưu trữ riêng rẽ ra khỏi mã nguồn kiểm thử. Khi có thay đổi về mặt dữ liệu kiểm thử, chỉ ảnh hưởng đến việc sửa đổi dữ liệu mà hạn chế ảnh hưởng đến mã nguồn. Mã nguồn kiểm thử được phát triển theohướng từ khóa, mỗi bài kiểm thử sẽ được ghép lại bởi nhiều từ khóa, tận dụng tối đa việc tái sử dụng các từ khóa.

Việc áp dụng giải pháp kiểm thử tự động hướng từ khóa và hướng dữ liệu có rất nhiều lợi ích như sau:

- Tận dụng thế mạnh của từng thành viên trong đội kiểm thử
Hầu hết các thành viên trong tổ kiểm thử nắm vững chắc qui tắc nghiệp vụ của hệ thống cần kiểm thử, nhưng có ít kinh nghiệm trong lập trình. Còn những thành viên chuyên thực hiện vai trò kỹ sư kiểm thử tự động thường là các thành viên có kinh nghiệm về lập trình hoặc khoa học máy tính, nhưng lại ít có kinh nghiệm trong kiểm thử, hoặc nghiệp vụ và khó khăn trong việc thiết kế ra các bài kiểm thử có chất lượng cao. Việc áp dụng giải pháp kiểm thử hướng từ khóa sẽ giúp cho tất cả các thành viên trong tổ kiểm thử đều có thể tham gia vào qui trình kiểm thử tự động bằng cách thiết kế các từ khóa ở mức tương ứng. Đó là kiểm thử viên có kỹ năng kiểm thử tốt sẽ thiết kế các bài kiểm thử cùng với các từ khóa mức cao. Việc tiếp theo các kiểm thử viên có kỹ năng lập trình sẽ thực hiện viết các từ khóa kiểm thử ở mức thấp. Cách tiếp cận này cho phép kiểm thử viên tập trung vào việc tạo ra những bài kiểm thử có chất lượng tốt, trong khi kỹ sư kiểm thử tự động sẽ tập trung vào các khó khăn thách thức về kỹ thuật khi thực hiện viết mã nguồn kiểm thử.

- Giảm thiểu tối đa việc bảo trì kiểm thử tự động

Bên cạnh lợi ích của kiểm thử hướng dữ liệu về việc giảm thiểu bảo trì mã nguồn khi dữ liệu kiểm thử thay đổi, kiểm thử hướng từ khóa cũng giúp giảm bảo trì kiểm thử tự động bằng cách cho phép người sử dụng định nghĩa những bài kiểm thử của họ ở mức nghiệp vụ. Thay vì định nghĩa các bài kiểm thử như là một chuỗi các hoạt động tương tác với giao diện, kiểm thử viên có thể định nghĩa các bài kiểm thử như là một chuỗi các hoạt động nghiệp vụ. Ví dụ một ứng dụng ngân hàng có thể bao gồm hành động “Mở tài khoản mới”, “Rút tiền”, “Gửi tiền”. Mặc dù nếu giao diện của hệ thống thay đổi, qui trình thực hiện nghiệp vụ vẫn như vậy, do đó kiểm thử viên thiết kế kiểm thử không cần phải thay đổi bài kiểm thử. Mà đó là công việc của kiểm thử viên tự động phải cập nhật các từ khóa do ảnh hưởng bởi thay đổi của giao diện, và việc này thông thường chỉ diễn ra ở một nơi.

- Nâng cao chất lượng kiểm thử tự động

Trong kiểm thử tự động hướng từ khóa, kiểm thử viên thiết kế các bài kiểm thử tuân theo hướng tiếp cận từ trên xuống (Top-down) để đảm bảo rằng có mục tiêu cho mỗi bài kiểm thử.

Bước thứ nhất đó là xác định xem làm thế nào toàn bộ bài kiểm thử tự động có thể được chia nhỏ thành các mô-đun kiểm thử riêng biệt. Sau đó định nghĩa yêu cầu cho mỗi mô đun. Yêu cầu này rất quan trọng bởi nó giúp cho lập trình viên xem xét cái gì đang được kiểm thử ở mỗi mô đun và có thể ghi chú lại chính xác. Sau khi đã định nghĩa yêu cầu kiểm thử, kiểm thử viên tự động – lập trình viên có thẻ bắt đầu viết các ca kiểm thử sử dụng các từ khóa đã được xác định trước hoặc định nghĩa mới. Kiểm thử viên có thể thiết kế bài kiểm thử của họ tương ứng với các qui trình nghiệp vụ mức cao, điều đó khiến cho bài kiểm thử dễ đọc hơn các bài kiểm thử thiết kế sử dụng các tương tác ở mức thấp.

- Chiến lược kiểm thử tự động thuận lợi

Kiểm thử hướng từ khóa cung cấp một khung làm việc mà tích hợp toàn bộ tổ chức kiểm thử trong việc hỗ trợ để kiểm thử tự động đạt hiệu quả. Như nhân viên phân tích nghiệp vụ (Business Analysts), kiểm thử viên, kỹ sư tự động hóa, nhóm trưởng…có thể làm việc chung trong cùng một khung làm việc để hoàn thành việc lập kế hoạch kiểm thử, thiết kế kiểm thử cũng như thực thi kiểm thử.

- Cho phép hợp tác hiệu quả giữa các đội kiểm thử làm việc phân tán

Với việc các đội kiểm thử thường được phân bổ ở nhiều nơi trong một quốc gia hay trên toàn thế giới, thách thức trong việc chia sẻ thông tin, các bài kiểm thử và thư viện kiểm thử tự động được nhân lên gấp nhiều lần. Kiểm thử hướng từ khóa cung cấp một khuôn khổ đã được chứng minh trong việc tổ chức các tài liệu kiểm thử, thư viện kiểm thử tự động với cấu trúc rõ ràng, ngăn chặn sự gián đoạn có thể xảy ra bởi sự khác biệt múi khoảng cách và thời gian.

3. Ví dụ

Xây dựng kịch bản kiểm thử cho ca kiểm thử hệ thống đăng nhập không thành công. Tuy nhiên theo Bảng dưới đây có thể thấy có bốn trường hợp đăng nhập không thành công (được trình bày ở Phụ lục), điều này tương ứng với việc kiểm thử viên sẽ phải viết bốn kịch bản kiểm thử tự động với các bước thực hiện là như nhau với bộ dữ liệu khác nhau. Do đó có thể ứng dụng kỹ thuật kiểm thử hướng dữ liệu (Data-Driven testing) bằng cách xây dựng bộ dữ liệu kiểm thử được lưu dưới dạng bảng như Bảng :

Sau khi đã xây dựng được bộ dữ liệu đầu vào, dưới đây sẽ xét đoạn kịch bản mô phỏng kiểm thử chức năng đăng nhập vào hệ thống.

1. *** Test Cases ***

2. Đăng nhập không thàng công

3. Open Workbook    TestData/user.xlsx

4. Switch Sheet    acc_invalid

5. @{all}= Read Sheet Data

6. @{data}= Get Slice From List  ${all}  1

7. FOR ${i}    IN    @{data}

8. Open Browser    ${URL} chrome

9. ${i[0]}= Convert To String    ${i[0]}

10.${i[1]}= Convert To String    ${i[1]}

11.Clear Element Text    //*[@id="username"]

12.Input Text    //*[@id="username"]    ${i[0]}

13.Clear Element Text    //*[@id="password"]

14.Input Text    //*[@id="password"]    ${i[1]}

15.Sleep 3s

16.Page Should Contain    ${i[2]}

17.END

Dòng 1: Dòng đầu tiên là tên bảng TestCases chứa một hoặc nhiều ca kiểm thử

Dòng 2: Tên của ca kiểm thử được sử dụng trong các báo cáo và các bản ghi.

Dòng 3: Thiết lập tác vụ, mở file dữ liệu trong thư mục TestData có tên file là user.xlsx

Dòng 4: Thiết lập tác vụ, điều hướng tới trang tính có tên sheet là acc_invalid

Dòng 5: Thực hiện lấy dữ liệu bằng từ khóa Read Sheet Data và gá vào mảng có tên @{all}

Dòng 6: Thiết lập tác vụ, chọn lấy dữ liệu từ hàng thứ 1 (Bỏ hàng 0-đầu tiên)

Dòng 7-17: Sử dụng vòng lặp For để duyệt qua tất cả các bộ dữ liệu. Với mỗi vòng lặp sẽ đều chạy lần lượt theo các bước tương tự như ví dụ trên.

Trần Hà

Trần Hà