Thử nghiệm Khỉ & Khỉ đột là gì? Ví dụ, Sự khác biệt
⚡ Tóm tắt thông minh
Kiểm thử kiểu "thử nghiệm khỉ" (monkey testing) đưa các dữ liệu đầu vào ngẫu nhiên, không được lên kế hoạch vào một ứng dụng đang chạy và quan sát xem nó có hoạt động bình thường hay không. Nhờ đó, các sự cố, treo máy và các trạng thái không được xử lý sẽ được phát hiện từ rất lâu trước khi bất kỳ trường hợp kiểm thử nào được viết ra.
Thử nghiệm trên khỉ là gì?
Thử nghiệm trên khỉ Kiểm thử kiểu "khỉ" là một kỹ thuật kiểm thử phần mềm trong đó người kiểm thử nhập các dữ liệu ngẫu nhiên vào ứng dụng mà không có các trường hợp kiểm thử được xác định trước và kiểm tra cách ứng dụng hoạt động, đặc biệt là xem nó có bị lỗi hay không. Mục đích của kiểm thử kiểu "khỉ" là tìm ra các lỗi thông qua tương tác thử nghiệm, không theo kịch bản.
Tên gọi này xuất phát từ một hình ảnh đơn giản, được minh họa bên dưới.
- Trong phương pháp kiểm thử "khỉ", người kiểm thử (và đôi khi cả nhà phát triển) được coi là "con khỉ".
- Nếu một con khỉ sử dụng máy tính, nó sẽ thực hiện các tác vụ một cách ngẫu nhiên, mà không hiểu hệ thống.
- Tương tự như vậy, người kiểm thử áp dụng các dữ liệu đầu vào ngẫu nhiên vào hệ thống cần kiểm thử để tìm lỗi mà không cần xác định trước bất kỳ trường hợp kiểm thử nào.
- Trong một số trường hợp, việc thử nghiệm trên khỉ nhằm mục đích... kiểm tra đơn vị or Kiểm tra GUI.
Thử nghiệm Gorilla là gì?
Thử nghiệm Gorilla Đây là một kỹ thuật kiểm thử phần mềm trong đó một mô-đun của chương trình được kiểm thử lặp đi lặp lại để xác nhận rằng nó hoạt động chính xác và không chứa lỗi.
Một mô-đun duy nhất có thể được kiểm tra hàng trăm lần hoặc hơn theo cùng một cách, đó là lý do tại sao kiểm thử kiểu "gorilla testing" còn được gọi là "kiểm thử gây khó chịu". Kiểm thử kiểu "monkey testing" phân tán ngẫu nhiên khắp ứng dụng; kiểm thử kiểu "gorilla testing" tập trung vào một điểm cho đến khi nó bị lỗi hoặc chứng tỏ hoạt động ổn định.
Các loại thử nghiệm khỉ
Kiểm thử "khỉ" được chia thành các loại dựa trên mức độ hiểu biết của người kiểm thử về hệ thống. Sơ đồ dưới đây tóm tắt ba loại này.
- Con khỉ ngu ngốc: Người kiểm thử không hề biết gì về hệ thống hay chức năng của nó, và không có gì đảm bảo rằng bất kỳ dữ liệu đầu vào nào cũng đều hợp lệ.
- Chú khỉ thông minh: Người kiểm thử nắm rõ hệ thống, mục đích và chức năng của nó, điều hướng trong hệ thống và cung cấp các thông tin đầu vào hợp lệ.
- Chú khỉ thông minh: Người kiểm thử làm việc dựa trên hành vi thực tế của người dùng và có thể chỉ ra những nơi có khả năng xuất hiện lỗi.
Thử nghiệm trên khỉ so với thử nghiệm trên khỉ đột so với thử nghiệm ngẫu nhiên
Thử nghiệm trên khỉ, thử nghiệm trên khỉ đột và kiểm tra ngẫu nhiên Chúng đều mang một hương vị tự nhiên, không dàn dựng, đó là lý do tại sao chúng thường bị nhầm lẫn. Hai bảng dưới đây phân biệt chúng.
Thử nghiệm trên khỉ so với thử nghiệm trên khỉ đột
| Thử nghiệm khỉ | Thử nghiệm khỉ đột |
|---|---|
| Thực hiện một cách ngẫu nhiên, không có trường hợp thử nghiệm cụ thể nào được xác định trước. | Không được xác định trước cũng không ngẫu nhiên — các bước kiểm tra tương tự chỉ đơn giản được lặp lại. |
| Quá trình này được thực hiện trên toàn bộ hệ thống và có thể bao gồm nhiều trường hợp thử nghiệm. | Đã thực hiện trên một vài mô-đun được chọn với một vài trường hợp thử nghiệm. |
| Mục tiêu là kiểm tra xem hệ thống có bị lỗi hay không. | Mục tiêu là kiểm tra xem mô-đun có hoạt động đúng cách hay không. |
Kiểm thử trên khỉ so với kiểm thử ngẫu nhiên
| Thử nghiệm khỉ | Thử nghiệm đặc biệt |
|---|---|
| Thực hiện một cách ngẫu nhiên, không có trường hợp thử nghiệm cụ thể nào được xác định trước. | Thực hiện mà không có kế hoạch hay tài liệu nào được lập ra, vì vậy không có trường hợp thử nghiệm hay tài liệu mô tả yêu cầu phần mềm nào được chuẩn bị. |
| Người kiểm thử có thể không biết hệ thống đó là gì hoặc dùng để làm gì. | Người kiểm thử phải hiểu rõ hệ thống trước khi bắt đầu kiểm thử. |
| Mục tiêu là kiểm tra xem hệ thống có bị lỗi hay không. | Mục tiêu là chia hệ thống thành các phần nhỏ một cách ngẫu nhiên và kiểm tra chức năng của chúng. |
Ưu điểm và nhược điểm của thử nghiệm trên khỉ
Vì kỹ thuật này đánh đổi tốc độ lấy việc lập kế hoạch, nên cả ưu điểm và nhược điểm của nó đều xuất phát từ cùng một đặc tính.
Ưu điểm của việc thử nghiệm trên khỉ
- Các loại côn trùng mới: Người kiểm thử được tự do làm việc ngoài các kịch bản đã nêu trước đó, điều này giúp phát hiện ra những lỗi mà không ai nghĩ đến trong kịch bản.
- Dễ dàng thực hiện: Việc sắp xếp các hành động ngẫu nhiên dựa trên dữ liệu ngẫu nhiên là một cách nhanh chóng để kiểm tra hệ thống.
- Less những người có kỹ năng: Việc thử nghiệm trên khỉ thường có thể được thực hiện mà không cần người thử nghiệm có kinh nghiệm cao.
- Less tốn kém: Nó cần chi phí thiết lập và vận hành ít hơn đáng kể so với một bộ công cụ được lập trình sẵn.
Nhược điểm của thử nghiệm trên khỉ
- Việc tái hiện lỗi có thể rất khó khăn: Vì các dữ liệu đầu vào là ngẫu nhiên, việc tái tạo lỗi có thể không thực hiện được nếu không có mã hạt giống được ghi lại.
- Less sự chính xác: Người kiểm thử không thể xác định một kịch bản cụ thể và không thể đảm bảo tính chính xác của những gì đã được kiểm thử.
- Kiến thức chuyên môn vẫn rất hữu ích: Để đảm bảo kết quả thu được có ý nghĩa, người kiểm thử cần có kiến thức tốt về lĩnh vực này.
- Chậm so với năng suất: Quá trình chạy có thể kéo dài rất lâu mà vẫn chỉ phát hiện ra một vài lỗi, để lại những lỗ hổng trong hệ thống.
Cách thực hiện thử nghiệm trên khỉ
Việc thử nghiệm trên người (monkey testing) trở nên hiệu quả hơn nhiều khi có công cụ hỗ trợ và có thể được thực hiện một cách chính xác. Android Xây dựng các ứng dụng web và ứng dụng máy tính để bàn. Quy trình chung là:
- Đăng ký ứng dụng cần kiểm thử với công cụ hoặc máy chủ chuyên dụng sẽ vận hành ứng dụng đó.
- Chuẩn bị các tài liệu tham khảo và cấu hình cần thiết cho công cụ để xây dựng bộ kiểm thử.
- Chạy bộ kiểm thử đã được xây dựng.
- Hãy để công cụ tự ghi nhật ký — tệp nhật ký "thử nghiệm khỉ" ghi lại mọi sự kiện được tạo ra và kết quả.
- Cho phép quá trình chạy tiếp tục cho đến khi hệ thống gặp sự cố, tại thời điểm đó hành động gây lỗi sẽ được ghi lại trong nhật ký.
- Chia sẻ báo cáo với nhóm phụ trách và lưu trữ dữ liệu thử nghiệm để tham khảo trong tương lai.
Hãy lưu giữ mọi nhật ký. Một lần chạy ngẫu nhiên chỉ hữu ích sau này nếu chuỗi sự kiện và hạt giống tạo ra nó được lưu lại. quản lý lỗi có thể liên kết sự cố với một dữ liệu đầu vào có thể tái tạo được.
Công cụ kiểm thử khỉ
Việc kiểm thử trên máy tính thường được tự động hóa, vì máy móc có thể tạo ra hàng nghìn sự kiện trong thời gian mà một người chỉ tạo ra vài chục sự kiện. Các phương pháp thường được sử dụng là:
- Công cụ kiểm thử giao diện người dùng/ứng dụng dạng "Chú khỉ": một công cụ dòng lệnh được tích hợp sẵn Android chạy trong adb shell và gửi các luồng sự kiện người dùng ngẫu nhiên, chẳng hạn như chạm, cử chỉ và nhấn phím, cùng với các sự kiện cấp hệ thống, đến thiết bị hoặc trình giả lập.
- Người chạy khỉ: một tách biệt Python API Công cụ này điều khiển các thiết bị và trình giả lập từ máy trạm, gửi các lệnh cụ thể và chụp ảnh màn hình. Mặc dù tên gọi giống nhau, nhưng nó không phải là công cụ giống với "con khỉ tập thể dục".
- UI Automator và Appium: chung thử nghiệm di động Các khung phần mềm có thể được lập trình để kích hoạt các chuỗi sự kiện bán ngẫu nhiên trong quá trình xây dựng.
- Các công cụ kiểm thử lỗi như AFL: Ý tưởng nhập liệu ngẫu nhiên tương tự được áp dụng cho dữ liệu thay vì cử chỉ, điều này được đề cập trong phần tiếp theo. kiểm tra lông tơ.
Việc hỗ trợ công cụ cho thử nghiệm tự động (monkey testing) còn hạn chế hơn so với thử nghiệm tự động bằng script. kiểm tra tự động hóaVì vậy, hầu hết các nhóm kết hợp trình tạo sự kiện chung với khung phần mềm hiện có của họ thay vì mua một sản phẩm chuyên dụng.
Khi nào nên sử dụng phương pháp kiểm thử trên khỉ?
Thử nghiệm trên khỉ chỉ có tác dụng trong những tình huống cụ thể chứ không phải là sự thay thế toàn diện cho việc thử nghiệm theo kế hoạch.
Sử dụng khi:
- Phiên bản thử nghiệm ban đầu cần một bước kiểm tra độ ổn định đơn giản trước khi có các trường hợp thử nghiệm chính thức.
- Giao diện có tính tương tác cao — bao gồm trò chơi, công cụ vẽ, trình phát đa phương tiện — và hành vi thực tế của người dùng rất khó dự đoán.
- Bạn muốn ngâm mình hay căng thẳng Chương trình này sẽ chạy và tìm kiếm các lỗi gây sập hệ thống, rò rỉ bộ nhớ và các trạng thái chưa được xử lý trong nhiều giờ liền.
- Bản phát hành đã vượt qua các bước kiểm tra theo kịch bản và bạn muốn thực hiện một bước kiểm tra độc lập để loại bỏ bất kỳ lỗi nào mà kịch bản chưa đề cập đến.
Tránh sử dụng khi:
- Bạn cần bằng chứng có thể lặp lại để chứng minh rằng một yêu cầu đã được đáp ứng — đó là nhiệm vụ của một văn bản. trường hợp thử nghiệm.
- Phiên bản này không ổn định đến mức mỗi lần chạy đều bị lỗi ngay lập tức, điều này che giấu mọi thứ đằng sau lỗi đầu tiên.
- Thời gian rất eo hẹp, vì việc chạy ngẫu nhiên không đảm bảo sẽ tìm thấy gì.
Trên thực tế, kết quả tốt nhất đến từ việc kết hợp các phương pháp: các bài kiểm tra được lập trình sẵn bao gồm các luồng đã biết, thử nghiệm thăm dò Anh ta chủ động điều tra những điều chưa biết, còn việc thử nghiệm trên khỉ lại tấn công bất cứ điều gì mà cả hai đều cho rằng sẽ không bao giờ xảy ra.


