Kiểm thử phá hủy trong phần mềm là gì?

⚡ Tóm tắt thông minh

Kiểm thử phá hoại cố tình đẩy ứng dụng phần mềm đến khi nó bị lỗi, từ đó phát hiện ra chính xác những điểm mà tính ổn định bị suy giảm khi sử dụng không đúng cách, nhập liệu không hợp lệ và hành vi khó đoán mà các kiểm tra chức năng thông thường không bao giờ phát hiện ra.

  • 💥 Ý tưởng cốt lõi: Ứng dụng được thiết kế để gặp lỗi một cách có chủ đích, nhờ đó các điểm lỗi của nó trở nên rõ ràng và có thể đo lường được.
  • 🔎 Không yêu cầu gì cả: Việc nắm rõ thông số kỹ thuật trước đó là không bắt buộc, mặc dù nó giúp cải thiện chiến lược kiểm thử.
  • ⚖️ Cặp đối lập: Kiểm tra không phá hủy đi theo con đường thuận lợi; còn kiểm tra phá hủy lại tấn công con đường đó từ mọi góc độ sai lầm.
  • 🧰 Phương pháp tiếp cận: Phân tích điểm lỗi, đánh giá đồng cấp của người kiểm thử, đánh giá nghiệp vụ và chạy thử nghiệm với bảng ghi kết quả.
  • 🧪 Các phương pháp được tái sử dụng: Kiểm thử hồi quy, kiểm thử giao diện, kiểm thử phân vùng tương đương, kiểm thử vòng lặp và kiểm thử chấp nhận đều phục vụ các mục tiêu mang tính phá hoại.
  • 📉 Giới hạn trung thực: Việc đảm bảo phạm vi bao phủ rất khó khăn, đòi hỏi nhiều nỗ lực và các phát hiện có thể khó tái tạo.

Kiểm thử phá hủy trong phần mềm là gì, cùng với các phương pháp và kỹ thuật?

Thử nghiệm phá hủy là gì?

Thử nghiệm phá hủy Kiểm thử phá hoại là một phương pháp kiểm thử phần mềm được sử dụng để tìm ra các điểm lỗi trong một chương trình phần mềm. Trong kỹ thuật này, một ứng dụng được cố ý làm cho bị lỗi, để có thể kiểm tra tính ổn định và xác định các điểm lỗi của nó. Không giống như các phương pháp kiểm thử xác minh những gì ứng dụng được cho là phải làm, kiểm thử phá hoại kiểm tra hành vi người dùng không thể đoán trước được bên trong ứng dụng.

Việc nắm rõ các yêu cầu ban đầu không bắt buộc đối với thử nghiệm phá hủy. Tuy nhiên, một số kiến ​​thức nhất định sẽ hữu ích trong quá trình phát triển.ping một chiến lược kiểm thử tốt.

Hình minh họa bên dưới thể hiện ý tưởng này — người thử nghiệm làm việc chống lại sản phẩm chứ không phải hợp tác với sản phẩm.

Khái niệm kiểm thử phá hủy: một ứng dụng được cố tình đẩy đến điểm lỗi.

Tại sao cần tiến hành thử nghiệm phá hủy?

  • Điều này giúp hiểu được hành vi có thể dự đoán được của phần mềm khi phần mềm bị sử dụng không đúng cách.
  • Nó giúp kiểm tra độ bền của một sản phẩm phần mềm.
  • Nó giúp phát hiện những lỗi hiếm gặp mà người dùng thông thường không bao giờ gây ra, nhưng lại xuất hiện sau này trong quá trình sản xuất.

Kiểm tra phá hủy so với kiểm tra không phá hủy

Hai phương pháp này bổ sung cho nhau, chứ không phải đối lập. Kiểm tra không phá hủy — Còn được gọi là kiểm thử tích cực hoặc kiểm thử theo kịch bản thành công — tương tác với phần mềm một cách chính xác và giữ nguyên bản dựng. Kiểm thử phá hoại thì ngược lại: nó cung cấp dữ liệu không hợp lệ và các trình tự sai cho đến khi có lỗi xảy ra.

Yếu tố Thử nghiệm phá hủy Kiểm tra không phá hủy
Intent Buộc ứng dụng phải thất bại Xác nhận rằng ứng dụng hoạt động đúng như yêu cầu.
Đầu vào được sử dụng Không hợp lệ, bị lỗi định dạng, nằm ngoài phạm vi, không đúng trình tự Dữ liệu hợp lệ nằm trong phạm vi dự kiến.
Câu hỏi đã được trả lời Nó bị hỏng ở đâu và như thế nào? Nó có làm những gì nó nên không?
Kiến thức về yêu cầu Tùy chọn Cần thiết
Chi phí điển hình Cao hơn — mang tính khám phá và không giới hạn Thấp hơn — được lập trình và có thể lặp lại
Kết quả Các điểm lỗi, giới hạn phạm vi, hành vi phục hồi Đạt hoặc không đạt theo tiêu chuẩn kỹ thuật

Bạn kiểm tra những gì trong quá trình thử nghiệm phá hủy?

Thử nghiệm phá hủy xem xét cả hai khía cạnh của ranh giới hành vi:

  • Hành vi phần mềm đúng đắn
  • Hành vi phần mềm không đúng cách
  • Sử dụng không đúng cách
  • Dữ liệu đầu vào không chính xác
  • Dữ liệu đầu ra phù hợp

Hai điều kiện phải được đáp ứng trong suốt quá trình thực hiện bài tập:

  • Phần mềm sẽ không bao giờ xử lý hoặc chấp nhận dữ liệu đầu vào không hợp lệ.
  • Bất kể tính hợp lệ hay chính xác của dữ liệu đầu vào, phần mềm luôn phải tạo ra dữ liệu đầu ra phù hợp.

Làm thế nào để thực hiện kiểm tra phá hủy?

Kiểm thử phá hủy bao gồm nhiều hoạt động, chẳng hạn như thiết kế một bộ kịch bản kiểm thử, thực thi các kịch bản đó, phát hiện lỗi, khắc phục lỗi và cung cấp các chỉ số đạt hoặc không đạt cho các bên liên quan khi kết thúc chu kỳ lặp.

Có rất nhiều cách để vận hành nó. Một số ví dụ được nêu dưới đây.

  • Phương pháp phân tích điểm thất bại: Một bản hướng dẫn chi tiết về hệ thống, đánh giá những sự cố có thể xảy ra ở các giai đoạn khác nhau. Sự hỗ trợ từ... phân tích kinh doanh có thể áp dụng chiến lược này.
  • Đánh giá ngang hàng của người kiểm thử: lấy của bạn trường hợp thử nghiệm được phân tích hoặc xem xét bởi một người kiểm thử khác, người ít quen thuộc hơn với hệ thống hoặc chức năng đó.
  • Đánh giá nghiệp vụ của các trường hợp thử nghiệm: Người dùng cuối hoặc chuyên gia thường nghĩ ra những tình huống hợp lý mà người kiểm thử bỏ sót, bởi vì người kiểm thử chỉ tập trung vào các yêu cầu đã nêu.
  • Tiến hành thử nghiệm thăm dò bằng cách sử dụng bảng ghi kết quả: thử nghiệm thăm dò Việc sử dụng bảng ghi kết quả cho phép ghi lại những gì đã được kiểm tra, cho phép lặp lại các bài kiểm tra và kiểm soát phạm vi kiểm tra.
  • Hãy sử dụng nguồn khác: Hãy nhờ người khác tìm cách phá vỡ sản phẩm phần mềm và phân tích các tình huống mà họ gặp phải.

Ví dụ về thử nghiệm phá hủy

Hãy xem xét màn hình đăng nhập và hồ sơ của một ứng dụng ngân hàng. Một cuộc tấn công phá hoại có thể thực hiện được trong các trường hợp như sau:

  • Hãy dán một chuỗi ký tự dài 5,000 ký tự vào một trường chỉ giới hạn 50 ký tự và xác nhận xem trường đó có từ chối chuỗi đó thay vì tự động cắt bớt hay không.
  • Nhập chữ cái, ký hiệu và giá trị âm vào trường số lượng.
  • Phá vỡ trình tự thông thường — mở trực tiếp trang xác nhận thanh toán mà không cần hoàn thành bước trước đó.
  • Nhấn nút gửi nhiều lần và liên tiếp nhanh chóng để xem có tạo ra các bản ghi trùng lặp hay không.
  • Ngắt kết nối mạng giữa chừng giao dịch và kiểm tra xem ứng dụng có khôi phục hoàn toàn hay để lại bản ghi chưa đầy đủ.

Mỗi trường hợp đều có một kỳ vọng xác định: thông báo xác thực rõ ràng, không có lỗi dữ liệu và không có ngoại lệ không được xử lý. Bất cứ điều gì khác đều là điểm lỗi cần được báo cáo.

Phương pháp thử nghiệm phá hủy

Các phương pháp sau đây được sử dụng trong kỹ thuật phần mềm để phục vụ mục tiêu kiểm thử phá hủy:

Kỹ thuật kiểm tra phá hủy

Các kỹ thuật dưới đây có thể được sử dụng với một số điều chỉnh:

Các kỹ thuật bổ sung đáng cân nhắc khi mục tiêu là tính ổn định bao gồm: thử nghiệm tiêu cực, căng thẳng thử nghiệm, thử nghiệm phục hồikiểm tra lông tơ.

Ưu điểm và nhược điểm của thử nghiệm phá hủy

Cần phải nêu rõ sự đánh đổi này trước khi đưa kỹ thuật đó vào bản phát hành.

Ưu điểm

  • RevNó chỉ ra những điểm lỗi mà phương pháp kiểm thử dựa trên thông số kỹ thuật không bao giờ phát hiện ra.
  • Thiết lập các giới hạn phạm vi thực tế, để sản phẩm có thể được vận hành một cách an tâm trong phạm vi đó.
  • Phát hiện những lỗi hiếm gặp xuất hiện trong quá trình sản xuất rất lâu sau khi sản phẩm được tung ra thị trường.
  • Kiểm tra độ bền, khả năng phục hồi và khả năng xử lý lỗi khi bị lạm dụng.

Nhược điểm

  • Vì bản chất là không xác định, nên phạm vi bao phủ không thể được đảm bảo hoặc đo lường một cách dễ dàng.
  • Tốn thời gian và phụ thuộc vào kinh nghiệm cũng như sự sáng tạo của người kiểm thử.
  • Việc tái tạo kết quả có thể khó khăn nếu không ghi chép cẩn thận các bước thực hiện.
  • Các lần chạy thử nghiệm không được kiểm soát tốt có thể làm hỏng dữ liệu thử nghiệm được chia sẻ, do đó cần có một môi trường biệt lập.

Câu Hỏi Thường Gặp

Chúng có sự chồng chéo nhưng khác nhau về phạm vi. Xét nghiệm âm tính Kiểm tra các đầu vào không hợp lệ được xác định so với cách xử lý lỗi dự kiến. Kiểm thử phá hoại thì rộng hơn và không giới hạn, nhằm tìm kiếm bất kỳ điều kiện nào khiến ứng dụng bị lỗi.

Thông thường, các kỹ sư QA giàu kinh nghiệm sẽ được hỗ trợ bởi các đồng nghiệp không quen thuộc với module này và bởi người dùng nghiệp vụ. Quan điểm từ bên ngoài rất quan trọng, bởi vì những người đã xây dựng tính năng này thường kiểm thử nó theo đúng thiết kế ban đầu.

Sau khi bộ chức năng ổn định, các lỗi phát sinh sẽ cho thấy độ bền vững của hệ thống hơn là các tính năng chưa hoàn thiện. Nhiều nhóm lên kế hoạch kiểm tra này trong quá trình thử nghiệm hệ thống và lặp lại trước các bản phát hành chính. vòng đời thử nghiệm.

Các mô hình tạo ra các tải trọng bị lỗi, giá trị biên và chuỗi hành động bất thường với số lượng mà không một thiết bị kiểm thử nào có thể đáp ứng, sau đó xếp hạng mức độ bất thường được tạo ra. Học máy trên dữ liệu lỗi trong quá khứ cũng dự đoán mô-đun nào cần được xử lý nghiêm ngặt nhất.

Trợ lý GitHub Công cụ này nhanh chóng soạn thảo các trình tạo đầu vào, các trường hợp biên và các quy trình gỡ bỏ. Người kiểm thử vẫn quyết định xem chế độ lỗi nào quan trọng và liệu hành vi quan sát được có được coi là kết quả chấp nhận được hay không.

Thông tin chi tiết bao gồm: dữ liệu đầu vào hoặc trình tự thực hiện chính xác, lỗi quan sát được, nhật ký và ảnh chụp màn hình, môi trường và mức độ nghiêm trọng của tác động. Các chỉ số đạt hay không đạt cho mỗi lần lặp sẽ được gửi đến các bên liên quan. hồ sơ lỗi.

Nó tuyệt đối không được đưa vào môi trường sản xuất. Hãy chạy nó trong một môi trường biệt lập với dữ liệu có thể khôi phục, bởi vì việc cố tình nhập dữ liệu không hợp lệ và gây lỗi đột ngột có thể để lại các bản ghi không đầy đủ, rất tốn kém để khắc phục.

Hãy lập một bảng ghi chép quá trình thực hiện, ghi lại mọi thao tác và dữ liệu nhập vào theo đúng thứ tự. Phát lại bảng ghi chép từ trạng thái ban đầu, sau đó rút gọn nó thành chuỗi ngắn nhất mà vẫn gây ra lỗi.

Tóm tắt bài viết này với: