Hay còn gọi là các kỹ thuật kiểm thử, là các phương pháp và quy trình cụ thể được sử dụng để thiết kế và thực hiện các test case (trường hợp kiểm thử). Chúng cung cấp một cách tiếp cận có hệ thống để khám phá các lỗi (defects), đánh giá các thuộc tính chất lượng (quality attributes) và xác minh rằng phần mềm hoạt động đúng theo yêu cầu và đặc tả.

 

Tầm quan trọng của Testing techniques

 

  • Tăng hiệu quả kiểm thử: Các kỹ thuật được lựa chọn cẩn thận giúp tập trung nỗ lực kiểm thử vào các khu vực có khả năng xảy ra lỗi cao nhất.
  • Cải thiện độ bao phủ kiểm thử: Các kỹ thuật khác nhau giúp bao phủ các khía cạnh khác nhau của phần mềm, đảm bảo rằng nhiều kịch bản và điều kiện khác nhau được kiểm tra.
  • Tìm ra nhiều lỗi hơn: Mỗi kỹ thuật có điểm mạnh riêng trong việc phát hiện các loại lỗi cụ thể.
  • Giảm chi phí kiểm thử: Bằng cách kiểm thử hiệu quả hơn, chúng ta có thể phát hiện và sửa lỗi sớm hơn trong vòng đời phát triển phần mềm, giúp giảm chi phí sửa lỗi sau này.
  • Nâng cao chất lượng phần mềm: Việc áp dụng các Testing techniques một cách bài bản góp phần tạo ra phần mềm chất lượng cao hơn, đáng tin cậy hơn và đáp ứng tốt hơn nhu cầu của người dùng.

 

Các Testing techniques khác nhau phù hợp với các cấp độ kiểm thử (testing levels) khác nhau (ví dụ: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận) và các mục tiêu kiểm thử khác nhau.

 

Phân Loại Các Testing Techniques

 

Các Testing techniques có thể được phân loại theo nhiều tiêu chí khác nhau, nhưng một số cách phân loại phổ biến bao gồm:

 

 

  • Dựa trên khả năng truy cập vào mã nguồn

 

 

  • Kiểm thử hộp đen (Black-Box Testing): Trong kiểm thử hộp đen, người kiểm thử không có quyền truy cập vào cấu trúc mã nguồn bên trong của phần mềm. Họ tập trung vào việc kiểm thử chức năng của phần mềm dựa trên các yêu cầu và đặc tả đã được cung cấp. Các kỹ thuật hộp đen thường dựa trên việc kiểm tra các đầu vào và đầu ra của hệ thống.
  • Kiểm thử hộp trắng (White-Box Testing): Ngược lại với kiểm thử hộp đen, kiểm thử hộp trắng đòi hỏi người kiểm thử phải có kiến thức về cấu trúc mã nguồn bên trong của phần mềm. Mục tiêu chính là kiểm tra logic, các đường dẫn thực thi và các điều kiện trong mã. Các kỹ thuật hộp trắng thường tập trung vào việc đảm bảo rằng mọi phần của mã đều được kiểm tra ít nhất một lần.
  • Kiểm thử hộp xám (Gray-Box Testing): Kiểm thử hộp xám là sự kết hợp giữa kiểm thử hộp đen và hộp trắng. Người kiểm thử có một phần kiến thức về cấu trúc mã nguồn bên trong, thường là đủ để hiểu các luồng dữ liệu và kiến trúc tổng thể của hệ thống. Họ thường tiếp cận kiểm thử từ góc độ người dùng nhưng có thể sử dụng kiến thức nội bộ để thiết kế các test case hiệu quả hơn.

 

 

  • Dựa trên mức độ tự động hóa

 

 

  • Kiểm thử thủ công (Manual Testing): Trong kiểm thử thủ công, các test case được thực hiện bởi người kiểm thử mà không sử dụng bất kỳ công cụ tự động hóa nào. Người kiểm thử sẽ tương tác trực tiếp với phần mềm và ghi lại kết quả.
  • Kiểm thử tự động (Automation Testing): Kiểm thử tự động sử dụng các công cụ phần mềm chuyên dụng để tự động hóa quá trình thực hiện các test case và so sánh kết quả thực tế với kết quả mong đợi. Điều này giúp tăng tốc độ kiểm thử, cải thiện độ chính xác và cho phép thực hiện các test case lặp đi lặp lại một cách dễ dàng.

 

 

  • Dựa trên khía cạnh được kiểm thử

 

 

  • Kiểm thử chức năng (Functional Testing): Tập trung vào việc kiểm tra xem phần mềm có hoạt động đúng theo các yêu cầu chức năng đã được định nghĩa hay không.
  • Kiểm thử phi chức năng (Non-Functional Testing): Tập trung vào việc kiểm tra các thuộc tính chất lượng của phần mềm không liên quan trực tiếp đến chức năng, chẳng hạn như hiệu suất, bảo mật, khả năng sử dụng, độ tin cậy.

 

Các Nhóm Testing Techniques Phổ Biến

 

 

  • Black-Box Testing Techniques

 

 

  • Phân tích giá trị biên (Boundary Value Analysis – BVA): Kỹ thuật này tập trung vào việc kiểm thử tại các giá trị biên của miền dữ liệu đầu vào. Người ta nhận thấy rằng lỗi thường xảy ra ở các giá trị này (ví dụ: giá trị nhỏ nhất, giá trị lớn nhất, giá trị nằm ngay trên và dưới biên).
  • Phân vùng tương đương (Equivalence Partitioning – EP): Kỹ thuật này chia miền dữ liệu đầu vào thành các nhóm (phân vùng) mà hệ thống được kỳ vọng sẽ xử lý tương tự nhau. Thay vì kiểm thử tất cả các giá trị trong một phân vùng, người ta chỉ cần chọn một giá trị đại diện từ mỗi phân vùng để kiểm thử.
  • Kiểm thử dựa trên bảng quyết định (Decision Table Testing): Kỹ thuật này hữu ích khi logic của hệ thống phụ thuộc vào nhiều điều kiện khác nhau. Bảng quyết định giúp xác định tất cả các tổ hợp điều kiện có thể và các hành động tương ứng.
  • Kiểm thử chuyển trạng thái (State Transition Testing): Kỹ thuật này được sử dụng để kiểm thử các hệ thống có hành vi thay đổi theo trạng thái (ví dụ: một ứng dụng web có nhiều trang hoặc một hệ thống nhúng). Người ta sẽ xác định các trạng thái có thể của hệ thống và các chuyển đổi giữa các trạng thái này, sau đó thiết kế các test case để kiểm tra các chuyển đổi này.
  • Kiểm thử dựa trên Use Case (Use Case Testing): Kỹ thuật này dựa trên các Use Case (trường hợp sử dụng) mô tả cách người dùng tương tác với hệ thống. Các test case được thiết kế để kiểm tra toàn bộ luồng tương tác của người dùng cho mỗi Use Case.

 

 

  • White-Box Testing Techniques

 

 

  • Độ bao phủ câu lệnh (Statement Coverage): Mục tiêu của kỹ thuật này là đảm bảo rằng mọi câu lệnh trong mã nguồn đều được thực thi ít nhất một lần trong quá trình kiểm thử.
  • Độ bao phủ nhánh (Branch Coverage): Kỹ thuật này đảm bảo rằng mọi nhánh (kết quả của một quyết định, ví dụ: if hoặc switch) trong mã nguồn đều được thực thi ít nhất một lần (cả trường hợp đúng và sai).
  • Độ bao phủ đường dẫn (Path Coverage): Kỹ thuật này cố gắng đảm bảo rằng mọi đường dẫn có thể thông qua mã nguồn đều được thực thi ít nhất một lần. Đây là một kỹ thuật toàn diện hơn so với độ bao phủ câu lệnh và nhánh, nhưng có thể khó đạt được đối với các hệ thống phức tạp.
  • Độ bao phủ điều kiện (Condition Coverage): Kỹ thuật này đảm bảo rằng mọi điều kiện logic trong một quyết định (ví dụ: các biểu thức boolean phức tạp trong câu lệnh if) đều được kiểm tra cho tất cả các kết quả có thể (true và false).

 

 

  • Gray-Box Testing Techniques

 

 

  • Kiểm thử hộp xám thường kết hợp các yếu tố của cả kiểm thử hộp đen và hộp trắng. Ví dụ, người kiểm thử có thể sử dụng các kỹ thuật hộp đen để kiểm thử chức năng của API nhưng đồng thời xem xét các log file hoặc cấu trúc cơ sở dữ liệu để hiểu rõ hơn về cách hệ thống hoạt động và thiết kế các test case hiệu quả hơn. Một ví dụ khác là kiểm thử bảo mật, nơi người kiểm thử có thể có một số hiểu biết về kiến trúc hệ thống để xác định các điểm yếu tiềm ẩn.

About the Author

Huyền Vy

View all author's posts

Leave a Comment

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

Bài viết khác

Notion

  Là một ứng dụng quản lý công việc đa năng, hỗ trợ người dùng trong việc ghi chú, theo dõi nhiệm vụ, quản lý dự án, xây dựng wiki và lưu trữ cơ sở dữ liệu trong cùng một nền tảng. Là một ứng dụng viết ghi chú, nhưng nếu biết cách sử dụng, […]

Security Testing

Hay còn gọi là Kiểm thử bảo mật, là một trong những phần quan trọng trong phát triển phần mềm, nhằm đảm bảo các hệ thống và ứng dụng trong một tổ chức không có bất kỳ sơ hở nào có thể gây ra các tổn thất về an toàn bảo mật. Kiểm thử bảo […]

Non-Functional Testing

Hay còn gọi là Kiểm thử phi chức năng, là kỹ thuật kiểm thử tập trung vào việc đánh giá các khía cạnh phi chức năng của hệ thống. Nó kiểm tra các tham số không được kiểm tra trong Function Testing (kiểm thử chức năng), chẳng hạn như hiệu suất, khả năng sử dụng, […]

Unit Testing

Hay còn gọi là Kiểm thử đơn vị, là một loại kiểm thử phần mềm tập trung vào việc kiểm tra các thành phần hoặc “đơn vị” nhỏ nhất và riêng biệt của mã nguồn. Một đơn vị có thể là một hàm (function), một phương thức (method), một lớp (class) hoặc một module. Mục […]

Smoke Testing

Hay còn gọi là Kiểm thử khói, là một loại kiểm thử phần mềm nhanh chóng, tập trung vào việc xác minh các chức năng cốt lõi và quan trọng nhất của ứng dụng có hoạt động ổn định hay không. Mục đích chính là để kiểm tra xem bản dựng (build) mới của phần […]

Functional Testing

Hay còn gọi là kiểm thử chức năng, là kỹ thuật kiểm tra phần mềm dựa trên từng chức năng để đảm bảo hệ thống đáp ứng đúng yêu cầu đã đặt ra. Đây là dạng kiểm thử hộp đen, trong đó tester không cần quan tâm đến mã nguồn mà chỉ so sánh chức […]