Exploratory testing và Ad-hoc testing là gì? Tự do và khám phá

Hôm nay xin chia sẻ anh chị em hai khái niệm trong Testing là “Exploratory Testing” và "Ad-hoc testing". Ưu điểm, nhược điểm và các điểm khác nhau giữa hai quá trình test này.

1. Exploratory testing là gì? Ưu và nhược điểm

*Khái niệm:

  • Exploratory testing là quá trình test phần mềm mà không có kế hoạch và lịch trình đặc biệt
  • Là quá trình kiểm thử thông thường mà không sử dụng bất kỳ bộ testcase nào cả hoặc là những tài liệu cho kế hoạch test.
  • Tuy nhiên là có thể ghi ra một vài ý tưởng chính sẽ được thực hiện trước khi bắt tay vào làm.
  • Xác định chức năng của ứng dụng bằng việc khám phá và học làm test design, testcase và sử dụng thiết bị giả lập để thực hiện test chúng một cách tốt nhất.
  • Exploratory testing tập trung vào việc thăm dò khám phá ứng dụng hơn việc thực thi dựa trên các hoạt động như các loại kiểm thử khác.

* Ưu điểm:

  • Hữu ích khi chưa có tài liệu đầy đủ hoặc có rất ít thông tin.
  • Khi bạn muốn hoàn thành công việc test của bạn trong một khoảng thời gian ngắn ngủi.
  • Khi bạn phải test ứng dụng sớm trong một chu kỳ phát triển của phần mềm.
  • Khuyến khích sự sáng tạo và khả năng phán đoán, có thể tạo ra các ý tưởng mới trong quá trình thực hiện kiểm thử.
  • Liên quan đến quá trình tìm hiểu, giúp tìm ra được nhiều lỗi hơn so với các bước kiểm thử thông thường.
  • Tìm ra được các lỗi nhỏ mà có thể bị bỏ qua bởi các kỹ thuật kiểm thử khác
  • Mở rộng khả năng tưởng tượng các tình huống bằng cách thực hiện nhiều hơn các trường hợp kiểm thử.
  • Đi sâu vào các phần chức năng nhỏ nhất của ứng dụng và bao phủ được các yêu cầu chức năng
  • Loại kiểm thử này bao phủ được nhiều loại kiểm thử và nhiều loại các kịch bản và trường hợp kiểm thử khác nhau.
  • Tester có thể báo cáo nhiều vấn đề do yêu cầu không đầy đủ hoặc tài liệu yêu cầu còn thiếu.

*Nhược điểm:

  • Tester cần phải nhớ kịch bản test - những gì mà mình đang thực hiện test bởi vì nếu có lỗi được tìm thấy, tester sẽ “report a bug” với các bước thích hợp để tái hiện lại nó, với các lỗi khó tái hiện cần phải mô tả các bước một cách thích hợp để thực hiện một cách chính xác lỗi mà  mình đã báo cáo đặc biệt là với các lỗi mới được tìm thấy.
  • Loại kiểm thử này phụ thuộc rất nhiều vào kỹ năng của người thực hiện kiểm thử
  • Không phù hợp với dự án có nhiều thời gian cho việc thực thi kiểm thử.

*Khi nào thì thực hiện Exploratory testing?

  • Nhóm kiểm thử có những tester nhiều kinh nghiệm
  • Khi bạn muốn hoàn thành công việc test của bạn trong một khoảng thời gian ngắn .
  • Khi bạn phải test ứng dụng sớm trong một chu kỳ phát triển của phần mềm.
  • Đây là một ứng dụng quan trọng
  • Hoặc có những tester mới tham gia vào nhóm.

2. Adhoc testing là gì? Ưu và nhược điểm

*Khái niệm:

  • Ad-hoc là một cái gì đó mà không theo thứ tự hoặc không có tổ chức hay không có cấu trúc nào cả.
  • Loại kiểm thử này thường không có kế hoạch thực hiện tức là bạn sẽ không cần tuân theo một kỹ thuật thiết kế test design nào để tạo test case cả.
  • Là một loại kiểm thử không chính thức, với mục đích là tìm các “điểm chết” của hệ thống.
  • Ad-hoc testing thường kết thúc khi khám phá ra những vấn đề (issues ) hoặc lỗi (defects) mà không thể được tìm thấy bằng quá trình test chính thức.
  • Người thực hiện quá trình kiểm thử này cần phải có kiến thức rất tốt và có chiều sâu về sản phẩm hoặc ứng dụng.
  • Chỉ có ý định phá vỡ hệ thống mà không theo bất kỳ quy trình nào hoặc không có bất kỳ trường hợp cụ thể nào trong tâm trí.

*Các loại dùng trong ad-hoc testing:

  • Buddy testing: Loại test này được thực hiện bởi nhân viên lập trình và nhân viên kiểm thử. Trong loại test này nhân viên lập trình và nhân viên kiểm thử sẽ ngồi cũng nhau và làm việc trên một module cụ thể. Mục đích để tránh việc xây dựng các kịch bản không hợp lệ và giúp tester báo cáo những lỗi (defects) không hợp lệ nhanh chóng và trực tiếp.
  • Pair testing: Loại test này được thực hiện bởi 2 tester ngồi làm việc cùng với nhau trên cùng một module. Về cơ bản họ chia các kịch bản testing giữa các module. Mục đích của các loại testing là đến với các kịch bản kiểm thử tối đa để module của các thực thể hoàn thành mức độ bao phủ. Cũng có thể tạo kịch bản kiểm thử của tester và quan sát trong quá trình kiểm tra các module cùng với nhau.
  • Monkey testing: Loại test này là quá trình thực hiện kiểm tra ngẫu nhiên một vài chức năng trong quá trình test cho một số dữ liệu ngẫu nhiên với mục đích phá vỡ hệ thống. Quá trình kiểm tra này giúp ta phát hiện ra một số lỗi (bug) mới, những lỗi mà trước đó không bắt được.

*Ưu điểm:

  • Ad-hoc testing là việc test tự do để tester áp dụng những cách thức mới của riêng họ trong việc test ứng dụng giúp họ tìm ra nhiều lỗi (defects) nhất có thể so với quá trình thử nghiệm chính thức.
  • Các loại test có thể được thực hiện bất cứ lúc nào nơi nào trong chu kỳ phát triển phần mềm  mà không theo bất kỳ quy trình chính thức nào.
  • Loại test này không chỉ bị giới hạn quá trình test của một team mà nó còn có thể được thực hiện bởi nhân viên lập trình trong khi những module của họ đang được phát triển điều đó giúp họ trong việc code bằng những phương pháp tốt nhất
  • Ad-hoc testing đã được chứng minh là phương pháp mang lại nhiều lợi ích khi mà người tester (QA) có ít thời gian và chiều sâu cho hoạt động kiểm thử của một đặc tính được yêu cầu. Điều này có lợi trong việc cung cấp các tính năng đảm bảo chất lượng và đúng thời hạn.
  • Ad-hoc testing có thể thực hiện đồng thời với các loại kiểm thử khác giúp cho việc tìm nhiều lỗi (bug) hơn trong những khoảng thời gian ít hơn.
  • Đối với loại test này tài liệu là không cần thiết mà tester (QA) cần tập trung quá trình kiểm thử vào đặc tính của ứng dụng mà không phải lo lắng về các tài liệu chính thức.

*Nhược điểm:

  • Kể từ khi ad-hoc testing được thực hiện mà không có bất kỳ kế hoạch và không theo bất cứ cấu trúc nào vì vậy việc tái tạo lại lỗi (bug) đã trở thành một rắc rối lớn.
  • Kịch bản kiểm thử được thực hiện trong suốt quá trình ad-hoc testing không có tài liệu để tester (QA) có thể giữ tất cả các kịch bản trong tâm trí mà QA có thể không nhớ lại trong tương lai.
  • Ad-hoc testing phụ thuộc rất nhiều vào kỹ năng của tester (QA) người có hiểu biết toàn diện về sản phẩm mà nó không thể được thực hiện bởi một người mới tham gia vào dự án của team.

*Khi nào thì sử dụng Adhoc testing?

  • Adhoc testing có thể được thực hiện khi có một thời gian giới hạn nào đó cho các kiểm thử phức tạp. Thông thường Adhoc testing được thực hiện sau khi đã hoàn thành việc thực thi kiểm thử theo đúng quy trình. Nếu như có thời gian, thì có thể hoàn thành thực hiện Adhoc testing cho hệ thống. Adhoc testing sẽ hiệu quả hơn nếu người thực thi kiểm thử có kiến thức tốt về hệ thống đó.
  • Nếu ad-hoc testing không được thực hiện theo cách thức thích hợp nó có thể dẫn đến mất toàn bộ thời gian và công sức.

Dưới đây là một vài gợi ý để xác định phạm vi và cách thức như thế nào để ứng dụng vào ad-hoc testing:

  • Kiến thức tốt về sản phẩm: Tester – những người thực hiện ad-hoc testing cần có kiến thức tốt về sản phẩm. Điều này giúp tester trong việc phản đoán lỗi (error) và tìm ra nhiều lỗi nhất có thể từ những khu vực dễ mắc lỗi (defect) nhất.
  • Độ ưu tiên các đặc tính: khi ad-hoc testing thực hiện cho nhiều đặc tính thì trước tiên các trường hợp kiểm thử cần được phân loại và ưu tiên. Những đặc tính được sử dụng nhiều bởi khách hàng cần được kiểm tra đầu tiên cho đến khi có một vài lỗi (bug) có độ ưu tiên tồn tại trong hệ thống thì cần được báo cáo và sửa càng sớm càng tốt.
  • Lập kế hoạch sơ bộ: mặc dù không có nhu cầu về bất cứ tài liệu nào trong quá trình sử dụng phương thức ad-hoc testing như đã nói ở trên nhưng có lưu ý một vài điểm trong suốt quá trình kiểm tra này là giúp tester nhớ tất cả các trường hợp thử nghiệm có thể xảy ra trong quá trình test. Điều này giúp cho việc tăng tối đa độ bao phủ trong thời gian ít hơn.
  • Cách sử dụng công cụ: đôi khi trong lúc kiểm tra có lỗi (bug) hoặc những ngoại lệ được tìm thấy trong các bản log mà không được nhìn thấy trong giao diện người dùng hay cản trở quá trình kiểm tra trong bất kỳ cách nào. Những loại lỗi (bug) đó cần để mức độ nghiêm trọng cao. Để bắt được những lỗi (bug) hoặc những ngoại lệ đó chúng ta cần phải sử dụng công cụ như dò lỗi (debuggers), công cụ định hình hoặc màn hình nhiệm vụ.
  • Quan sát tài liệu: mặc dù quá trình kiểm tra sử dụng phương thức ad-hoc testing không hỗ trợ tài liệu nhưng nó luôn luôn tốt hơn để viết một ghi chú ngắn gọn về việc kiểm tra, phát hiện và độ xê dịch của bạn. Nếu lỗi (defect) được tìm thấy sau đó chúng ta cần tạo các testcase liên quan, điều này giúp ích cho tester trong việc kiểm tra lại các kịch bản trong tương lai.

3. So sánh nho nhỏ giữa Adhoc testing và Exploratory testing

Có rất nhiều điểm tương đồng giữa Exploratory Testing và Ad-hoc testing. Điều đó gây cho chúng ta cảm thấy lúng túng về chúng. Tuy nhiên cũng có rất nhiều những điểm khác nhau giữa chúng đó là:

Adhoc testingExploratory testing
Bạn cần phải hiểu và nắm được ứng dụng trước khi thực hiện Adhoc testing.Với Exploratory testing thì bạn sẽ tìm hiểu ứng dụng trong khi thực hiện test.
Với Adhoc testing, tài liệu không phải là yếu tố quan trọng cần thiết, Adhoc testing được thực hiện bình thường mà không cần tài liệu đặc tả cụ thể nào.Ngược lại, với Exploratory testing, tài liệu là một yếu tố cần thiết để ghi lại chi tiết các thông tin trong khi thực hiện kiểm thử.
Adhoc được thực hiện để nâng cao mức độ hoàn thiện hướng tới sự hoàn hảo của việc kiểm thử ứng dụng.Exploratory testing thiên về hướng học hỏi, tìm hiểu ứng dụng hơn.
Người thực hiện Adhoc testing cần có kiến thức về quy trình thực hiện khi thực hiện kiểm thử.Với Exploratory testing thì từ đây sẽ giúp cho người thực thi có kiến thức về ứng dụng thông qua các kết quả test.

Tham khảo:

https://vananhtooo.wordpress.com/2018/07/10/adhoc-testing-va-exploratory-testing/
https://blog.pirago.vn/su-khac-nhau-giua/

https://sentayho.com.vn/exploratory-testing-la-gi.html

https://www.softwaretestingclass.com/difference-between-adhoc-testing-and-exploratory-testing

https://www.guru99.com/adhoc-testing.html

https://www.guru99.com/exploratory-testing.html