Kiểm tra đồng thời trong kiểm thử phần mềm là gì?

⚡ Tóm tắt thông minh

Kiểm thử đồng thời phát hiện các lỗi chỉ xuất hiện khi nhiều người dùng cùng thao tác trên một ứng dụng tại cùng một thời điểm, làm lộ ra các tình trạng tắc nghẽn, mất cập nhật và các vấn đề khóa mà các kiểm thử chức năng tuần tự không bao giờ phát hiện ra.

  • 👥 Còn được gọi là: Kiểm thử đa người dùng, vì yếu tố kích hoạt là truy cập đồng thời chứ không chỉ đơn thuần là khối lượng truy cập lớn.
  • 🎯 Mục tiêu của nó: Các bản ghi cơ sở dữ liệu được chia sẻ, các mô-đun được chia sẻ và mã ứng dụng được chia sẻ mà nhiều phiên truy cập cùng lúc.
  • 🔒 Những gì nó đo lường: Các cấp độ tắc nghẽn, khóa, mã đơn luồng và quyền truy cập hạn chế vào các tài nguyên dùng chung.
  • 🧭 Cách thức hoạt động: Xác định các luồng dễ xảy ra xung đột đồng thời, đặt mục tiêu về khả năng xử lý xung đột đồng thời, viết kịch bản cho các hành động thực tế, sau đó tăng dần số lượng người dùng.
  • 🐞 Các loại lỗi: Các vấn đề như tranh chấp tài nguyên, tắc nghẽn, mất cập nhật, hỏng dữ liệu và thiếu hụt luồng xử lý.
  • ⚠️ Giới hạn trung thực: Tính không xác định, các hàm gọi lại bất đồng bộ và ngăn xếp cuộc gọi không cung cấp thông tin đầy đủ khiến việc tái hiện lỗi trở nên khó khăn.

Kiểm thử đồng thời trong kiểm thử phần mềm với nhiều người dùng cùng lúc là gì?

Kiểm tra đồng thời là gì?

Kiểm thử đồng thời Đây là một kỹ thuật kiểm thử được sử dụng để phát hiện các lỗi trong ứng dụng khi nhiều người dùng đăng nhập cùng lúc. Nói cách khác, nó giám sát tác động khi nhiều người dùng thực hiện cùng một hành động tại một thời điểm.

Kiểm thử đồng thời cũng được gọi là kiểm thử đa người dùngViệc kiểm thử một chương trình song song khó khăn hơn việc kiểm thử một chương trình tuần tự, do tính không xác định và các vấn đề đồng bộ hóa: cùng một bài kiểm thử có thể thành công trong lần chạy này và thất bại trong lần chạy khác mà không cần thay đổi một dòng mã nào.

Sơ đồ bên dưới minh họa ý tưởng này — nhiều người dùng truy cập cùng một tài nguyên ứng dụng trong cùng một khoảnh khắc, và bài kiểm tra sẽ quan sát xem ứng dụng xử lý sự trùng lặp này như thế nào.

Sơ đồ kiểm thử đồng thời thể hiện nhiều người dùng truy cập cùng một tài nguyên ứng dụng cùng một lúc.

Tại sao cần kiểm thử đồng thời?

Có hai câu hỏi biện minh cho nỗ lực này, và cả hai đều không hiển thị trong các lần chạy chức năng dành cho người dùng đơn lẻ.

  • Nó xác định các tác động của việc truy cập đồng thời vào cùng một bản ghi cơ sở dữ liệu, mô-đun hoặc mã ứng dụng.
  • Nó xác định và đo lường mức độ tắc nghẽn, khóa, việc sử dụng mã đơn luồng và quyền truy cập bị hạn chế vào các tài nguyên dùng chung.

Một tính năng có thể hoạt động hoàn toàn chính xác đối với người dùng này nhưng vẫn có thể mất dữ liệu đối với người dùng thứ hai đến sau đó chỉ một mili giây, đó là lý do tại sao kỹ thuật này được sử dụng song song với các kỹ thuật khác. kiểm tra năng suất thay vì thực hiện kiểm thử chức năng nội bộ.

Cách thực hiện kiểm thử đồng thời

Kiểm thử đồng thời tuân theo một trình tự lặp lại. Các bước dưới đây di chuyển từ phạm vi kiểm thử.ping để giải quyết vấn đề.

  • Bước 1) Xác định các luồng dễ xảy ra xung đột đồng thời. Hãy tìm kiếm các trạng thái được chia sẻ: đăng nhập đồng thời, đặt chỗ ngồi hoặc cổ phiếu, cập nhật số dư, các tác vụ xử lý hàng loạt ghi vào cùng một bảng và bất kỳ thành phần đơn luồng nào trong đường dẫn.
  • Bước 2) Đặt mục tiêu về số lượng tiến trình xử lý đồng thời. Hãy xác định số lượng người dùng cần thực hiện thao tác cùng một lúc, dựa trên các đỉnh điểm sử dụng thực tế chứ không phải là một con số làm tròn.
  • Bước 3) Thiết kế các trường hợp kiểm thử. Mỗi trang web trường hợp thử nghiệm Nó kết nối tài nguyên được chia sẻ, các hành động cạnh tranh và trạng thái cuối cùng mong muốn — ví dụ, hai phiên rút tiền từ cùng một tài khoản không được phép cùng thành công.
  • Bước 4) Soạn thảo kịch bản và chọn công cụ. Cần có một bộ tạo tải có khả năng tạo ra các người dùng ảo có thể cấu hình; JMeter Đây là lựa chọn mã nguồn mở phổ biến, và các thiết lập nhóm luồng của nó tương ứng trực tiếp với các kịch bản xử lý đồng thời.
  • Bước 5) Ramp Từng bước. Tăng số lượng người dùng đồng thời theo từng giai đoạn thay vì tăng đột ngột.ping hướng đến mục tiêu, do đó mức độ mà sự tranh chấp bắt đầu có thể được nhìn thấy.
  • Bước 6) Theo dõi và phân tích. Hãy theo dõi đồng thời thời gian chờ khóa, độ phân tán thời gian phản hồi, tỷ lệ lỗi và tình trạng tắc nghẽn cơ sở dữ liệu — một khiếm khuyết về đồng thời thường biểu hiện dưới dạng sự bất thường về thời gian trước khi nó xuất hiện dưới dạng lỗi.
  • Bước 7) Khắc phục sự cố và chạy lại. Khắc phục sự cố đồng bộ hóa, lập chỉ mục hoặc khóa, sau đó lặp lại quá trình tương tự để xác nhận rằng hành vi đã thay đổi chứ không phải chỉ di chuyển.

Các lỗi thường gặp về xử lý đồng thời

Các lỗi về xử lý đồng thời thường rơi vào một số ít các lớp dễ nhận biết, và việc đặt tên lớp chính xác thường giúp tìm ra cách khắc phục.

Khiếm khuyết Điều gì xảy ra Triệu chứng điển hình
Tình trạng chủng tộc Kết quả phụ thuộc vào phiên nào kết thúc trước. Tính đúng tổng số liệu trong một số lần chạy, nhưng sai trong những lần khác.
bế tắc Hai phiên đều giữ một ổ khóa mà phiên kia cần. Các giao dịch bị treo thay vì trả về lỗi.
Mất bản cập nhật Thao tác ghi thứ hai sẽ ghi đè lên thao tác ghi đầu tiên mà không cần đọc dữ liệu của thao tác ghi đầu tiên. Một thay đổi đã lưu sẽ tự động biến mất.
Tham nhũng dữ liệu Cấu trúc được chia sẻ chỉ được viết một phần. Các bản ghi ở trạng thái không thể tạo ra giao dịch hợp lệ.
Nạn đói Một phiên làm việc không bao giờ nhận được tài nguyên mà nó đang chờ đợi. Một đường dẫn người dùng duy nhất bị hết thời gian chờ trong khi hệ thống dường như vẫn hoạt động bình thường.

Vì những lỗi này xảy ra không thường xuyên, nên mỗi lần chạy cần phải ghi lại nhật ký và dấu thời gian; nếu không, không thể báo cáo lỗi một cách đáng tin cậy. quy trình quản lý khuyết tật.

Ví dụ về kiểm thử đồng thời

Hãy xem xét một cửa hàng trực tuyến chỉ còn lại một sản phẩm duy nhất trong kho. Hai người mua hàng mở sản phẩm cùng một lúc và cả hai đều nhấn nút mua hàng. Mua BĐS.

  • kịch bản: Hai phiên đọc giá trị stock = 1, cả hai đều vượt qua kiểm tra tính khả dụng và cả hai đều ghi giá trị stock = 0.
  • Kết quả mong đợi: Một đơn hàng được xác nhận, đơn hàng kia nhận được thông báo hết hàng, và số lượng hàng tồn kho không bao giờ âm.
  • Chỉ báo lỗi: Cả hai lệnh đều được xác nhận, hoặc lượng hàng tồn kho giảm xuống -1, điều này cho thấy việc kiểm tra tính khả dụng và việc giảm số lượng không được thực hiện như một bước nguyên tử duy nhất.
  • Các biến thể đáng để thử: Hai phiên chỉnh sửa cùng một bản ghi hồ sơ, hai lần phê duyệt cùng một yêu cầu và một tác vụ xử lý hàng loạt cập nhật bảng trong khi người dùng đang lưu.

Mô hình tương tự cũng được khái quát hóa: tìm một nguồn tài liệu, hai người viết và không có đảm bảo về thứ tự viết. Chạy kịch bản trong quá trình Thử nghiệm hệ thốngViệc này, trước khi thêm tải, giúp cho quá trình chẩn đoán được chính xác hơn.

Ưu điểm của kiểm thử đồng thời

  • Phương pháp này giúp giảm đáng kể lượng công sức cần thiết để kiểm thử ứng dụng bằng cách giới hạn phạm vi tương tác đồng thời chỉ trong một vài thành phần được sử dụng rộng rãi và đã được kiểm thử kỹ lưỡng.
  • Kỹ thuật đóng gói cho phép phân tích hành vi của một phần chương trình mà không cần xem xét toàn bộ mã nguồn.
  • Nó giúp cải thiện độ tin cậy và tính ổn định của các chương trình đồng thời.
  • Nó giúp phát hiện sớm các giới hạn về khóa và chặn, nhờ đó các quyết định về dung lượng dựa trên sự tranh chấp được đo lường chứ không phải dựa trên ước tính.

Nhược điểm của kiểm thử đồng thời

Các nhược điểm dưới đây thường gặp phải bởi người kiểm thử khi thực hiện kiểm thử đồng thời.

  • Ứng dụng cần được kiểm thử trên nhiều nền tảng khác nhau.
  • Các kịch bản xử lý đồng thời đòi hỏi các bài kiểm tra chuyên sâu hơn so với các kịch bản xử lý tuần tự.
  • Các hàm không trả về kết quả ngay lập tức cho người gọi; thay vào đó, kết quả có thể được trả về sau đó thông qua thông báo, khối lệnh, hàm gọi lại hoặc các cơ chế tương tự, điều này làm cho việc kiểm thử trở nên khó khăn hơn.
  • Luồng thông tin hoặc chương trình không được phản ánh trong ngăn xếp cuộc gọi.
  • Số lượng đường dẫn thực thi trong hệ thống có thể cực kỳ lớn, vì các tiến trình trong một hệ thống đồng thời tương tác với nhau trong khi chúng đang thực thi.
  • Các chương trình chạy song song có tỷ lệ lỗi cao hơn so với các chương trình chạy tuần tự.
  • Gỡ lỗi các chương trình đồng thời rất khó khăn, bởi vì việc gắn trình gỡ lỗi sẽ làm thay đổi thời điểm gây ra lỗi.

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

STT Kiểm tra tải Đo lường hành vi dưới khối lượng dự kiến ​​theo thời gian. Kiểm thử đồng thời nhắm vào cùng một thời điểm, vì vậy lỗi có thể xuất hiện chỉ với hai người dùng nếu cả hai cùng truy cập vào một bản ghi được chia sẻ.

Phần đa luồng của kiểm tra luồng có sự chồng chéo với nó. Kiểm thử luồng hỏi liệu một đường dẫn nghiệp vụ có tồn tại sau khi tích hợp hay không; kiểm thử đồng thời hỏi việc truy cập đồng thời sẽ dẫn đến hậu quả gì khi đường dẫn đó đã hoạt động.

Xác định con số dựa trên mức sử dụng cao nhất được quan sát, chứ không phải từ một con số làm tròn. Bắt đầu với hai phiên để chứng minh logic là nguyên tử, sau đó tăng dần đến mức sử dụng cao nhất được đo và một biên độ cao hơn mức đó.

Các mô hình học máy xếp hạng các mô-đun dựa trên lịch sử lỗi trước đó và độ phức tạp của trạng thái chia sẻ, hướng người kiểm thử đến các luồng có khả năng bị lỗi cao nhất khi có sự chồng chéo. Sau đó, việc phân cụm nhật ký trên các lần chạy lặp lại sẽ cô lập sự xen kẽ dẫn đến mỗi lỗi.

Trợ lý GitHub Soạn thảo nhanh các kịch bản người dùng ảo, rào cản và công cụ hỗ trợ xác nhận. Người kiểm thử vẫn xác định tài nguyên nào được chia sẻ và trạng thái cuối cùng chính xác là gì, vì các bài kiểm thử được tạo ra hiếm khi buộc phải có sự chồng chéo thực sự.

Mức độ cách ly, thời gian chờ khóa, kích thước nhóm kết nối và việc lập chỉ mục đều ảnh hưởng đến cách thức xảy ra xung đột. Hãy ghi lại các thông số này trong mỗi lần chạy, vì kết quả thu được ở một mức độ cách ly không nói lên điều gì về mức độ cách ly ở mức độ khác.

Lặp lại kịch bản tương tự nhiều lần từ trạng thái dữ liệu sạch, giữ lại nhật ký có dấu thời gian và thu hẹp khoảng thời gian giữa hai hành động cạnh tranh. Việc gắn trình gỡ lỗi thường che giấu lỗi bằng cách thay đổi thời điểm thực hiện.

Đúng vậy, đối với các tranh chấp nhạy cảm về dung lượng. Các bảng nhỏ cho phép cơ sở dữ liệu giữ mọi thứ trong bộ nhớ và khóa trong thời gian ngắn, do đó tình trạng tắc nghẽn xuất hiện trong môi trường sản xuất sẽ không gây ra vấn đề gì. Hãy khớp số lượng hàng và kích thước chỉ mục càng sát nhau càng tốt trong phạm vi cho phép của môi trường.

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