Chương 6 – 6.1 – Các loại công cụ Kiểm thử – Phần 5/8

6.1.5 Hỗ trợ công cụ để thực hiện kiểm tra và ghi nhật ký

Các công cụ thực hiện kiểm thử

Khi mọi người nghĩ về “công cụ kiểm thử”, họ thường nghĩ đến một công cụ thực thi kiểm thử (test execution tool), là một công cụ có thể chạy việc kiểm thử. Loại công cụ này còn được gọi là “công cụ chạy kiểm thử”. Hầu hết các công cụ thuộc loại này đều cung cấp một cách để bắt đầu bằng cách chụp hoặc ghi lại các bài kiểm thử thủ công; do đó chúng còn được gọi là công cụ “chụp/phát lại” (capture/playback hoặc capture/replay), hoặc công cụ “ghi/phát lại” (record/playback).

Tương tự với việc ghi lại một chương trình truyền hình và phát lại. Tuy nhiên, các bài kiểm thử không phải là thứ được phát lại chỉ để ai đó xem các bài kiểm thử tương tác với hệ thống, điều này có thể phản ứng hơi khác khi các bài kiểm thử được lặp lại. Do đó, các bài kiểm thử không phù hợp nếu bạn muốn đạt được thành công lâu dài với công cụ thực hiện kiểm thử.

Công cụ thực thi kiểm thử sử dụng ngôn ngữ kịch bản để điều khiển công cụ. Ngôn ngữ kịch bản thực sự là một ngôn ngữ lập trình. Vì vậy, bất kỳ người kiểm thử nào muốn sử dụng trực tiếp công cụ thực hiện kiểm thử sẽ cần sử dụng các kỹ năng lập trình để tạo và sửa đổi các tập lệnh. Ưu điểm của tập lệnh có thể lập trình là các kiểm thử có thể lặp lại các hành động (trong vòng lặp) cho các giá trị dữ liệu khác nhau (tức là đầu vào kiểm thử), chúng có thể thực hiện các lộ trình khác nhau tùy thuộc vào kết quả của việc kiểm thử (ví dụ: nếu kiểm thử thất bại, hãy chuyển đếncác  bộ kiểm thử khác nhau) và chúng có thể được gọi từ các tập lệnh khác đưa ra một số cấu trúc cho bộ kiểm thử.

Khi một người lần đầu tiên gặp một công cụ thực hiện kiểm thử, họ có xu hướng sử dụng nó để “thu/phát lại”, điều này nghe có vẻ thực sự thú vị khi bạn lần đầu tiên nghe về nó. Lý thuyết là trong khi bạn đang chạy kiểm thử thủ công, bạn chỉ cần bật chức năng “chụp”, giống như một máy quay video cho một chương trình truyền hình. Tuy nhiên, lý thuyết bị phá vỡ khi bạn cố gắng phát lại các bài kiểm thử đã chụp (phương pháp này không mở rộng quy mô cho số lượng lớn bài kiểm thử). Lý do chính cho điều này là rất khó duy trì tập lệnh đã ghi vì:

  • Nó gắn liền với luồng và giao diện được trình bày bởi GUI.
  • Có thể dựa vào hoàn cảnh, trạng thái và ngữ cảnh của hệ thống tại thời điểm ghi script. Ví dụ: một tập lệnh sẽ ghi lại số thứ tự mới do hệ thống chỉ định khi xét nghiệm được ghi lại. Khi phát lại bài kiểm thử đó, hệ thống sẽ chỉ định một số thứ tự khác và từ chối các yêu cầu tiếp theo có chứa số thứ tự đã chụp trước đó.
  • Thông tin đầu vào của bài kiểm thử được “mã hóa cứng”, tức là nó được nhúng trong tập lệnh riêng cho từng bài kiểm thử.

Bất kỳ điều nào trong số này có thể được khắc phục bằng cách sửa đổi tập lệnh, nhưng chúng ta không còn chỉ ghi và phát lại nữa! Nếu mất nhiều thời gian hơn để cập nhật một bài kiểm thử đã chụp hơn là chạy lại bài kiểm thử tương tự theo cách thủ công, thì các tập lệnh có xu hướng bị loại bỏ và công cụ trở thành “kệ đồ” (shelf-ware).

Có nhiều cách tốt hơn trong việc sử dụng các công cụ thực hiện kiểm thử để làm cho chúng hoạt động tốt và thực sự mang lại lợi ích của việc chạy kiểm thử tự động không giám sát. Có ít nhất năm cấp độ kịch bản và các kỹ thuật so sánh khác nhau. Tập lệnh theo hướng dữ liệu là một cải tiến so với tập lệnh đã chụp nhưng tập lệnh theo hướng từ khóa mang lại nhiều lợi ích hơn đáng kể. [Fewster và Graham, 1999], [Buwalda và cộng sự, 2001]. [Mosley và Posey, 2002] mô tả “kiểm soát kiểm thử dựa trên dữ liệu được đồng bộ hóa”.

Có nhiều cách khác nhau để sử dụng công cụ thực hiện kiểm thử và bản thân các công cụ này đang tiếp tục đạt được các tính năng hữu ích mới. Ví dụ: một công cụ thực thi kiểm thử có thể giúp xác định các trường đầu vào sẽ tạo thành các đầu vào kiểm thử và có thể xây dựng một bảng, đây là bước đầu tiên hướng tới tập lệnh theo hướng dữ liệu.

Mặc dù chúng thường được gọi là công cụ kiểm thử, nhưng chúng thực sự được sử dụng tốt nhất để kiểm thử hồi quy (vì vậy chúng có thể được gọi là “công cụ kiểm thử hồi quy” thay vì “công cụ kiểm thử”). Một công cụ thực hiện kiểm thử thường chạy các bài kiểm thử đã được chạy trước đó. Một trong những lợi ích quan trọng nhất của việc sử dụng loại công cụ này là bất cứ khi nào một hệ thống hiện có được thay đổi (ví dụ: sửa lỗi hoặc cải tiến), tất cả các bài kiểm thử đã chạy trước đó đều có thể được chạy lại, để đảm bảo rằng những thay đổi đã không làm xáo trộn hệ thống hiện có bằng cách giới thiệu hoặc tiết lộ một khiếm khuyết.

Các tính năng hoặc đặc điểm của các công cụ thực hiện kiểm thử bao gồm hỗ trợ cho:

  • Nắm bắt (ghi) đầu vào kiểm thử trong khi việc kiểm thử được thực hiện thủ công
  • Lưu trữ kết quả dự kiến ở dạng màn hình hoặc đối tượng để so sánh vào lần chạy kiểm thử tiếp theo
  • Thực hiện các bài kiểm thử từ các tập lệnh được lưu trữ và các tệp dữ liệu tùy chọn được truy cập bởi tập lệnh (nếu sử dụng tập lệnh dựa trên dữ liệu hoặc theo từ khóa)
  • So sánh động (trong khi bài kiểm thử đang chạy) màn hình, thành phần, liên kết, điều khiển, đối tượng và giá trị
  • Khả năng bắt đầu so sánh sau khi thực hiện
  • Ghi nhật ký kết quả chạy kiểm thử (đạt/không đạt, sự khác biệt giữa kết quả mong đợi và kết quả thực tế)
  • Lọc các tập hợp con của kết quả thực tế và dự kiến, ví dụ như loại trừ ngày và giờ hiện tại được hiển thị trên màn hình không được quan tâm đối với một bài kiểm thử cụ thể
  • Đo thời gian cho các bài kiểm thử
  • Đồng bộ hóa đầu vào với ứng dụng đang kiểm thử, ví dụ: đợi cho đến khi ứng dụng sẵn sàng chấp nhận đầu vào tiếp theo hoặc chèn độ trễ cố định để thể hiện tốc độ tương tác của con người
  • Gửi kết quả tóm tắt đến công cụ quản lý kiểm thử.

Ezami

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *