Cân nhắc đặc biệt đối với một số loại công cụ
Công cụ thực hiện kiểm thử
“Công cụ chụp/phát lại” là một thuật ngữ gây hiểu lầm, mặc dù nó được sử dụng phổ biến. Chụp/phát lại là một chế độ sử dụng công cụ thực hiện kiểm thử và có lẽ là cách tồi tệ nhất để sử dụng nó!
Để biết những bài kiểm thử nào cần thực hiện và cách chạy chúng, công cụ thực hiện kiểm thử phải có một số cách để biết phải làm gì (đây là tập lệnh cho công cụ). Nhưng vì công cụ chỉ là phần mềm, nên tập lệnh phải hoàn toàn chính xác và rõ ràng đối với máy tính (điều này không có ý nghĩa thông thường). Điều này có nghĩa là tập lệnh trở thành một chương trình, được viết bằng ngôn ngữ lập trình. Ngôn ngữ kịch bản có thể dành riêng cho một công cụ cụ thể hoặc nó có thể là ngôn ngữ chung hơn. Các ngôn ngữ viết kịch bản không chỉ được sử dụng bởi các công cụ thực thi kiểm thử mà các tập lệnh được công cụ này sử dụng được lưu trữ điện tử để chạy khi các bài kiểm thử được thực hiện dưới sự kiểm soát của công cụ.
Có những công cụ có thể tạo tập lệnh bằng cách xác định nội dung trên màn hình thay vì ghi lại việc kiểm thử thủ công, nhưng chúng vẫn tạo tập lệnh để sử dụng trong quá trình thực thi; chúng không phải là không có kịch bản.
Có nhiều cấp độ khác nhau của kịch bản. Năm được mô tả trong [Fewster và Graham, 1999]:
- Các tập lệnh tuyến tính (có thể được tạo thủ công hoặc được ghi lại bằng cách ghi lại quá trình kiểm thử thủ công)
- Tập lệnh có cấu trúc (sử dụng cấu trúc lập trình lựa chọn và lặp)
- Các tập lệnh được chia sẻ (trong đó một tập lệnh có thể được gọi bởi các tập lệnh khác để có thể được sử dụng lại. Các tập lệnh được chia sẻ cũng yêu cầu một thư viện tập lệnh chính thức dưới sự quản lý cấu hình)
- Tập lệnh hướng dữ liệu (trong đó dữ liệu kiểm thử nằm trong tệp hoặc bảng tính để đọc bởi tập lệnh kiểm soát)
- Tập lệnh dựa trên từ khóa (trong đó tất cả thông tin về bài kiểm tra được lưu trữ trong một tệp hoặc bảng tính, với một số tập lệnh kiểm soát thực hiện các bài kiểm thử được mô tả trong tệp).
Việc ghi lại kiểm thử thủ công có vẻ là một ý tưởng hay để bắt đầu, đặc biệt nếu bạn hiện đang chạy kiểm thử theo cách thủ công. Nhưng một bài kiểm thử đã ghi lại (một kịch bản tuyến tính) không phải là một giải pháp tốt, vì một số lý do, bao gồm:
- Tập lệnh không biết kết quả mong đợi là gì cho đến khi bạn lập trình nó (nó chỉ lưu trữ các đầu vào đã được ghi lại, không phải trường hợp kiểm thử).
- Một thay đổi nhỏ đối với phần mềm có thể làm mất hiệu lực của hàng chục hoặc hàng trăm tập lệnh.
- Kịch bản đã ghi chỉ có thể đối phó với các điều kiện chính xác giống như khi nó được ghi. Các sự kiện không mong muốn (ví dụ: tệp đã tồn tại) sẽ không được công cụ diễn giải chính xác.
Tuy nhiên, đôi khi việc ghi lại các đầu vào kiểm thử (tức là ghi lại việc kiểm thử thủ công) là hữu ích. Ví dụ: nếu bạn đang thực hiện kiểm thử thăm dò hoặc nếu bạn đang chạy kiểm thử không theo mô tả với người dùng doanh nghiệp có kinh nghiệm, thì việc ghi nhật ký mọi thứ đã được thực hiện như một bản kiểm thử có thể rất hữu ích. Đây là một dạng tài liệu về những gì đã được kiểm thử (mặc dù việc phân tích nó có thể không dễ dàng). Dấu vết kiểm thử này cũng có thể rất hữu ích nếu xảy ra lỗi không thể tái tạo dễ dàng (bản ghi lỗi cụ thể có thể được chuyển cho nhà phát triển để xem chính xác trình tự nào gây ra sự cố).
Dữ liệu đầu vào kiểm thử đã thu thập có thể hữu ích trong thời gian ngắn khi bối cảnh vẫn còn hiệu lực. Đừng mong đợi phát lại chúng dưới dạng kiểm thử hồi quy (khi ngữ cảnh của kiểm thử có thể khác). Các bài kiểm thử được ghi lại có thể chấp nhận được đối với vài chục bài kiểm thử, trong đó nỗ lực cập nhật chúng khi phần mềm thay đổi không lớn lắm. Đừng mong đợi cách tiếp cận kịch bản tuyến tính có thể mở rộng tới hàng trăm hoặc hàng nghìn bài kiểm thử.
Vì vậy, các bài kiểm thử cũng có một vị trí, nhưng nó không phải là một vị trí lớn về mặt tự động hóa việc thực hiện kiểm thử.
Tập lệnh theo hướng dữ liệu cho phép dữ liệu (tức là đầu vào kiểm thử và kết quả dự kiến) được lưu trữ riêng biệt với tập lệnh. Điều này có lợi thế là người kiểm thử không biết cách sử dụng ngôn ngữ kịch bản có thể điền vào tệp hoặc bảng tính dữ liệu cho một bài kiểm thử cụ thể. Điều này đặc biệt hữu ích khi có một số lượng lớn các giá trị dữ liệu cần được kiểm thử bằng cách sử dụng cùng một tập lệnh điều khiển.
Các tập lệnh hướng từ khóa không chỉ bao gồm dữ liệu mà còn bao gồm cả từ khóa trong tệp dữ liệu hoặc bảng tính. Điều này cho phép người kiểm thử (không phải là người lập trình tập lệnh) nghĩ ra nhiều loại kiểm thử khác nhau (không chỉ dữ liệu đầu vào kiểm thử cho cùng một bài kiểm thử, như trong các tập lệnh dựa trên dữ liệu). Người kiểm thử cần biết những từ khóa nào hiện có sẵn để sử dụng (bởi ai đó đã viết tập lệnh cho nó) và dữ liệu mà từ khóa đang mong đợi, nhưng sau đó người kiểm thử có thể viết các bài kiểm thử, chứ không chỉ là kiểm thử dữ liệu. Người kiểm thử cũng có thể yêu cầu thêm các từ khóa bổ sung vào bộ tập lệnh được lập trình sẵn khi cần thiết. Từ khóa có thể xử lý cả đầu vào kiểm thử và kết quả mong đợi.
Tất nhiên, ai đó vẫn cần có khả năng sử dụng công cụ trực tiếp và có thể lập trình bằng ngôn ngữ tập lệnh của công cụ để viết và gỡ lỗi các tập lệnh sẽ sử dụng bảng dữ liệu hoặc bảng từ khóa. Một số ít chuyên gia tự động hóa có thể hỗ trợ một số lượng lớn người kiểm thử, những người này sau đó không cần phải học để trở thành người lập trình tập lệnh (trừ khi họ muốn).
Các tệp dữ liệu (dựa trên dữ liệu hoặc dựa trên từ khóa) bao gồm các kết quả mong đợi cho các bài kiểm thử. Kết quả thực tế từ mỗi lần chạy kiểm thử cũng cần được lưu trữ, ít nhất là cho đến khi chúng được so sánh với kết quả mong đợi và bất kỳ sự khác biệt nào cũng được ghi lại.
Có thể tìm thêm thông tin về kịch bản hướng dữ liệu và hướng từ khóa trong [Fewster và Graham, 1999].