Tool in Software Testing - P1 (ISTQB)

Công cụ đóng vai trò thiết yếu trong hoạt động kiểm thử (testing). Mọi người thường chỉ hiểu tool là các ứng dụng hỗ trợ trong lúc chạy test hoặc giả lập thao tác người dùng để tác động vào hệ thống. Tuy nhiên, theo ISTQB - Hội đồng kiểm định phần mềm quốc tế , tool dùng trong testing gồm nhiều loại khác nhau và chúng có mặt trong suốt vòng đời kiểm thử phần mềm. Bài viết này giải thích rõ hơn các công cụ sử dụng trong kiểm thử phần mềm mà ISTQB đã đề cập, bài viết phần 2 sẽ chỉ rõ lợi ích và rủi ro khi sử dụng tool cũng như áp dụng tool như thế nào trong một tổ chức.

1. Phân loại tool

Tool có thể được phân loại dựa trên một vài tiêu chí như mục đích sử dụng , tool thương mại/ miễn phí/ mã nguồn mở, hoặc theo công nghệ sử dụng (Java, .NET,..). Theo ISTQB, tool gồm:

  • Sử dụng trực tiếp trong testing: gồm test execution tools (tool thực thi test), test data generation tools (tool sinh dữ liệu), result comparasion tool (tool đối chiếu kết quả)
  • Quản lý quy trình test: các tool sử dụng để quản lý bộ tests, kết quả test, dữ liệu, yêu cầu, bug, báo cáo và giám sát hoạt động test
  • Tool sử dụng trong test exploration: ví dụ như tool giám sát hoạt động của file
  • Tool hỗ trợ thêm: spreadsheet như CSV, excel, ...

Trong thực tế mọi người thường thị hiểu nhầm giữa hai thuật ngữ là "tool" và "framework" Framework có 3 đặc tính:

  • Tái sử dụng hoặc mở rộng các thư viện (library) để xây dựng nên tool (còn gọi là test harnesses), ví dụ: Selenium là một framework
  • Một kiểu của test automation, vd: keyword-driven testing, data-driven testing, hoặc
  • Toàn bộ quy trình của việc thực thi test

Còn tool thì cung cấp chức năng và giao diện luôn cho người dùng, tuy nhiên khả năng tùy biến để tạo ra tính năng mới thì không có.

2. Mục đích

Mục đích sử dụng tool phụ thuộc vào hoàn cảnh:

  • Nhằm cải thiện tính hiệu quả: bằng việc tự động thực hiện các task lặp lại hoặc hỗ trợ hoạt động thủ công như lên kế hoạch (planning), thiết kế (design), báo cáo (report) và giám sát test (monitoring)
  • Nhằm thực hiện các hoạt động một cách tự động mà nếu làm thủ công thì sẽ tốn nhiều nguồn lực như kiểm thử tĩnh (static testing)
  • Nhằm thực hiện các hoạt động mà khó có thể làm thủ công như kiểm thử hiệu năng cho hệ thống lớn (large scale)
  • Nhằm tăng độ tin cậy của testing ví dụ như so sánh đối chiếu một lượng dữ liệu hoặc giả lập số lượng lớn hành vi trên hệ thống

3. Tool hỗ trợ cho quản lý và hoạt động test

Test Management Tools

  • cung cấp giao diện cho việc thực hiện tests
  • theo dõi bug và quản lý yêu cầu
  • hỗ trợ cho việc phân tích định lượng và báo cáo về các đối tượng test
  • Truy xuất đối tượng test từ đặc tả yêu cầu
  • các tool này cần kết hợp (interface) với các tool khác hoặc spreadsheets để truy xuất các thông tin hữu ích theo định dạng phụ hợp yêu cầu tổ chức vd: IBM Rational Functional Tester

Requirements Management Tools

  • lưu trữ yêu cầu (requirements), lưu trữ đặc tính của yêu cầu (vd như mức độ ưu tiên,...)
  • cung cấp định danh duy nhất và hỗ trợ đối chiếu thông tin từ requiements tới từng tests cụ thể
  • nhận dạng và phát hiện nếu yêu cầu không nhất quán hoặc bị thiếu vd: TestLink, TestLogde

Incident Management Tools (Defect Tracking Tools)

Incident là các tình huống khi hệ thống xuất hiện các hành vi đáng ngờ, thông thường chúng ta dùng thuật ngữ incident và bug/defect tương đương nhau.

  • lưu trữ và quản lý báo cáo incident, gồm: defect, failure, yêu cầu thay đổi,...
  • quản lý vòng đời bug/defect
  • có thể hỗ trợ phân tích tĩnh (statistic analysis)

Configuration Management Tools

  • Testware là các đối tượng sinh ra trong quá trình kiểm thử, vd: tài liệu, kịch bản kiểm thử, đầu vào, kết quả mong muốn, cở sở dữ liệu, môi trường, phần mềm hoặc tiện tích được sử dụng trong quá trình kiểm thử
  • Quản lý phiên bản và lưu trữ testware hoặc các phần mềm liên quan, đặc biệt khi cấu hình với một hoặc nhiều môi trường phần mềm/ phần cứng khác về hệ điều hành OS, trình biên dịch compilers, trình duyệt browser,...

4. Tool hỗ trợ Static testing

Static testing là gì?

  • sự kiểm tra thành phần của phần mềm, vd: đặc tả yêu cầu, bản thiết kế, code mà không thực hiện chạy phần mềm, static testing có thể là đánh giá (Reviews) hoặc Phân tích tĩnh (static analysis)
  • static testing tool mang lại hiệu quả rõ rệt trong việc tìm bug tại giai đoạn đầu của quá trình phát triển phần mềm.

Review Tools

  • hỗ trợ quá trình đánh giá, checklists, hướng dẫn sử dụng, và được sử dụng để lưu trữ, kết nối giữa các phần hồi đánh giá, báo cáo về bug và nỗ lực bỏ ra
  • hỗ trợ online reviews cho các team lớn hoặc team làm việc phân cách địa lý

Static Anaylisis Tools (D)

  • giúp developer và tester tìm ra bug trước khi thực thi phần mềm
  • các lỗi có thể tìm ra như tuân thủ tiêu chuẩn viết code, phân tích hệ thống và các thành phần liên quan
  • cung cấp số liệu đánh giá code, ví dụ: độ phức tạp - complexity, giúp ích trong việc lên kế hoặc test hoặc phân tích rủi ro
  • thường được sử dụng bởi developer

Modeling Tools (D)

  • kiểm chứng model, vd: physical data model (PDM) trong cơ sở dữ liệu quan hệ bằng cách liệt kê các đối tượng không thích hợp và tìm lỗi
  • sinh test case dựa trên model
  • thường được sử dụng bởi developer

5. Tool hỗ trợ Test Specification

Test specification là tài liệu mô tả chuỗi các hành động thực hiện test. Tool hỗ trợ gồm test design tools và test data preparation tools.

Test Design Tools

  • sinh đầu vào hoặc sinh ra các test để thực thi hoặc test orcales từ đặc tả yêu cầu, GUI, mô hình thiết kế (state, data or object) hoặc từ code
  • test orcales là một nguồn để xác định kết quả đầu ra của hệ thống. Oracle có thể một một hế thống đã tồn tại (dùng làm chuẩn), các phần mềm khác, hướng dẫn sử dụng hoặc các hiểu biết cá nhân, nhưng nguồn dựa trên mã code.

Test Data Preparation Tools

  • thao tác cơ sở dữ liệu, files hoặc truyền dữ liệu để tạo dữ liệu test dùng trong kiểm thử nhằm đảm bảo tính bảo mật thông qua dữ liệu ẩn danh.

6. Tool hỗ trợ thực hiện và báo báo test

Test Execution Tools

  • cho phép chạy test một cách tự động hoặc bán tự động
  • có thể dùng để record tests, nhưng không thích hợp với các dự án mà số lượng kịch bản test (script) lớn vì khó bảo trì
  • xây dựng test dựa trên kĩ thuật keyword-driven hoặc data-driven
  • kịch bản test sử dụng dữ liệu đầu vào thông qua ngôn ngữ script thao tác trên hệ thống, sau đó so sánh kết quả thực hiện với kết quả đầu ra và cung cấp log cho mỗi lần test chạy
  • sử dụng ngôn ngữ lập trình scripts hoặc cấu hình GUI cho các tham số dữ liệu hoặc tùy chỉnh tests để phù hợp mục đích sử dụng

Test Harness/ Unit Test Framework Tools

  • hỗ trợ test thành phần(component) hoặc test một phần hệ thống bằng cách giả lập môi trường mà đối tượng test sẽ chạy, thông qua đối tượng giả lập stub hoặc driver
  • thường sử dụng bởi developer

Stub hay driver?

Stub và driver đều dùng để giả lập 1 phần hệ thống, stub giả lập phần đầu ra (output) trong khi driver giả lập phần đầu vào (input).

Stub or driver?

Test comparators

  • xác định sự khác nhau giữa files, cơ sở dữ liệu(DB), hoặc kết quả test
  • Test comparators có thể sử dụng test oracle, nhất là trong kiểm thử tự động.

Coverage Measurement Tools (D)

  • đo tỷ lệ phần trăm của các loại cấu trúc code cụ thể đã được thực hiện bởi một bộ tests
  • kết quả đầu ra có thể là độ bao phủ câu lệnh (stagement coverage), brach or decision coverage (bao phủ điều kiện), path coverage (bao phủ đường)

Security Testing Tools

  • đánh giá đặc tính bảo mật của phần mềm, gồm đánh giác khả năng bảo mật dữ liệu, toàn vẹn dữ liệu- integrity data, chứng thực - authentication, ủy quyền - authorization, tính khả dụng - availability.
  • thường tập trung một nền tảng công nghệ, plartform và mục đích cụ thể

7. Tool hỗ trợ giám sát và đo hiệu năng

Dynamic Analysis Tools

  • tìm các lỗi mà chỉ rõ ràng khi chạy ứng dụng, vd: phụ thuộc thời gian - time dependencies hoặc rò rỉ bộ nhớ - memory leaks
  • sử dụng chủ yếu trong kiểm thử thành phần (component testing) hoặc kiểm thử tích hợp thành phần (component integration testing)
  • thương dùng bởi developer

Performance Tesing/Load Testing/ Stress Testing Tools

  • Performance tool giám sát và báo cáo về hành vi hệ thống dưới nhiều điều kiện sử dụng mô phỏng khác nhau về số lượng người dùng đồng thời, mô hình ram-up, tần suất và tỷ lệ tương đối của các giao dịch (transactions)
  • Load tool đo đạc bằng cách đo khi tạo người dùng ảo thực hiện một tập hợp các giao dịch đã được lựa chọn, trải rộng trên các máy kiểm tra khác thường là máy sinh tải (load generators)

Monitoring Tools

  • Phân tích liên tục, xác minh và báo cáo về việc sử dụng các tài nguyên hệ thống cụ thể và cảnh báo các sự cố về dịch vụ.

(Còn tiếp)

Tham khảo

Foundation level content