Bạn có thể ước rằng mình có một công cụ kỳ diệu có thể tự động hóa tất cả các phần kiểm thử cho bạn. Nếu vậy, bạn sẽ thất vọng. Tuy nhiên, có một số công cụ rất hữu ích có thể mang lại lợi ích đáng kể. Trong chương này, chúng ta sẽ thấy rằng có nhiều công cụ hỗ trợ cho nhiều khía cạnh khác nhau của kiểm thử phần mềm. Chúng ta sẽ thấy rằng thành công với các công cụ không được đảm bảo, ngay cả khi có được một công cụ thích hợp (cũng có những rủi ro khi sử dụng các công cụ). Có một số cân nhắc đặc biệt được đề cập trong Syllabus đối với một số loại công cụ: công cụ thực hiện kiểm thử, công cụ kiểm thử hiệu suất, công cụ phân tích tĩnh và công cụ quản lý kiểm thử
Nội dung sẽ có trong bài thi ISTQB Foundation (CTFL)
- Phân loại các loại công cụ kiểm thử theo bài kiểm thử các hoạt động quy trình. (K2)
- Nhận biết các công cụ có thể giúp các nhà phát triển trong quá trình thử nghiệm của họ. (K1)
Trong phần này, chúng tôi sẽ mô tả các loại công cụ khác nhau về chức năng chung của chúng, thay vì đi sâu vào chi tiết. Lý do cho điều này là nhìn chung, các loại công cụ sẽ khá ổn định trong thời gian dài hơn, mặc dù sẽ có các nhà cung cấp mới trên thị trường, các công cụ mới và cải tiến, và thậm chí cả các loại công cụ mới trong những năm tới.
Chúng ta sẽ không đề cập đến bất kỳ công cụ thương mại nào trong chương này.
Phân loại công cụ kiểm thử
Các công cụ được nhóm theo các hoạt động kiểm thử hoặc các lĩnh vực được hỗ trợ bởi một bộ công cụ, ví dụ: công cụ hỗ trợ hoạt động quản lý, công cụ hỗ trợ kiểm thử tĩnh…
Không nhất thiết phải có mối quan hệ một đối một giữa loại công cụ được mô tả ở đây và công cụ được cung cấp bởi nhà cung cấp công cụ thương mại hoặc công cụ nguồn mở.
Một số công cụ thực hiện một chức năng rất cụ thể và hạn chế (đôi khi được gọi là “giải pháp điểm”), nhưng cũng có nhiều công cụ thương mại cung cấp hỗ trợ cho một số chức năng khác nhau (bộ công cụ hoặc họ công cụ). Ví dụ: công cụ “quản lý kiểm thử” có thể cung cấp sự hỗ trợ để quản lý kiểm thử (giám sát tiến độ), quản lý cấu hình của phần mềm kiểm thử, quản lý sự cố, quản lý yêu cầu và truy xuất nguồn gốc; một công cụ khác có thể cung cấp cả phép đo phạm vi và hỗ trợ thiết kế kiểm thử.
Có một số việc mà con người có thể làm tốt hơn hoặc dễ dàng hơn nhiều so với máy tính. Ví dụ, khi bạn nhìn thấy một người bạn ở một nơi không ngờ tới (chẳng hạn như ở sân bay), bạn có thể nhận ra khuôn mặt của họ ngay lập tức. Đây là một ví dụ về nhận dạng mẫu mà con người rất giỏi, nhưng không dễ để viết phần mềm có thể nhận dạng khuôn mặt.
Có những thứ khác mà máy tính có thể làm tốt hơn hoặc nhanh hơn nhiều so với con người. Ví dụ: bạn có thể cộng nhanh 20 số có ba chữ số không? Điều này không dễ đối với hầu hết mọi người, vì vậy bạn có thể mắc một số lỗi ngay cả khi các con số được viết ra. Một máy tính làm điều này một cách chính xác và rất nhanh chóng. Một ví dụ khác, nếu mọi người được yêu cầu làm đi làm lại chính xác cùng một nhiệm vụ, họ sẽ nhanh chóng cảm thấy nhàm chán và bắt đầu phạm sai lầm.
Vấn đề là nên sử dụng máy tính để làm những việc mà máy tính thực sự giỏi và con người không giỏi lắm. Vì vậy, công cụ hỗ trợ rất hữu ích cho các tác vụ lặp đi lặp lại (máy tính không cảm thấy nhàm chán và có thể lặp lại chính xác những gì đã làm trước đó). Bởi vì công cụ sẽ nhanh, điều này có thể làm cho các hoạt động đó hiệu quả hơn và đáng tin cậy hơn nhiều. Các công cụ này cũng có thể thực hiện những việc có thể khiến một người bị quá tải, chẳng hạn như so sánh nội dung của một tệp dữ liệu lớn hoặc mô phỏng cách hệ thống sẽ hoạt động.
Một công cụ đo lường một số khía cạnh của phần mềm có thể có tác dụng phụ không mong muốn đối với phần mềm đó.
Ví dụ: một công cụ đo lường thời gian cho kiểm thử phi chức năng (hiệu suất) cần phải tương tác rất chặt chẽ với phần mềm đó để đo lường nó.
Ví dụ: một công cụ hiệu suất sẽ đặt thời gian bắt đầu và thời gian kết thúc cho một giao dịch nhất định để đo thời gian phản hồi. Nhưng hành động thực hiện phép đo đó (tức là lưu trữ thời gian tại hai điểm đó) thực sự có thể khiến toàn bộ giao dịch mất nhiều thời gian hơn một chút so với nếu công cụ không đo thời gian phản hồi. Tất nhiên, thời gian bù giờ là rất nhỏ nhưng nó vẫn có. Hiệu ứng này được gọi là “hiệu ứng thăm dò” (probe effect).
Một ví dụ khác về hiệu ứng thăm dò xảy ra với các công cụ đo độ bao phủ. Trước tiên, để đo độ bao phủ, công cụ phải xác định tất cả các yếu tố cấu trúc có thể được thực hiện để xem liệu một bài kiểm thử có thực hiện nó hay không. Điều này được gọi là “công cụ đo code” (instrumenting the code). Sau đó, các bài kiểm thử được chạy thông qua công cụ đo code để công cụ có thể cho biết liệu một nhánh nhất định đã được thực hiện hay chưa. Nhưng công cụ đo code không giống với mã thực (nó cũng bao gồm công cụ đo code mã). Về lý thuyết, mã này giống nhau (nhưng trên thực tế thì không).
Bởi vì các công cụ đo độ bao phủ khác nhau hoạt động theo những cách hơi khác nhau, bạn có thể nhận được một kết quả độ bao phủ hơi khác nhau trên cùng một chương trình do hiệu ứng thăm dò. Ví dụ: các công cụ khác nhau có thể đếm các nhánh theo những cách khác nhau, vì vậy tỷ lệ phần trăm bao phủ sẽ được so sánh với tổng số nhánh khác nhau. Thời gian phản hồi của công cụ đo code cũng có thể kém hơn đáng kể so với code không có thiết bị đo. (Cũng có những công cụ đo độ bao phủ không xâm nhập, quan sát các khối bộ nhớ chứa mã đối tượng để có được phép đo sơ bộ mà không cần công cụ đo, ví dụ: đối với phần mềm nhúng.)
Một ví dụ khác về hiệu ứng thăm dò là khi một công cụ sửa lỗi được sử dụng để cố gắng tìm ra một lỗi cụ thể. Nếu mã được chạy với trình gỡ lỗi, thì lỗi sẽ biến mất; nó chỉ xuất hiện lại khi trình gỡ lỗi bị tắt (do đó khiến nó khó tìm hơn nhiều). Chúng đôi khi được gọi là “Heizenbugs” (theo nguyên lý bất định của Heizenberg).
Trong phần mô tả các công cụ bên dưới, chúng ta sẽ chỉ ra các công cụ có nhiều khả năng được các nhà phát triển sử dụng hơn trong quá trình kiểm thử thành phần và kiểm thử tích hợp thành phần. Ví dụ, các công cụ đo lường mức độ phù hợp thường được sử dụng nhiều nhất trong kiểm thử thành phần, nhưng các công cụ kiểm thử hiệu suất thường được sử dụng nhiều hơn trong kiểm thử hệ thống, kiểm thử tích hợp hệ thống và kiểm thử chấp nhận.
Lưu ý rằng đối với kỳ thi Foundation Certificate, bạn chỉ cần nhận biết các loại công cụ khác nhau và chức năng của chúng; bạn không cần hiểu chi tiết về chúng (hoặc biết cách sử dụng chúng).