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.
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.
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.

