Tự học kiểm thử hiệu năng với tool Jmeter - Phần 3: Tìm hiểu về Thread Group trong JMeter
Các thành phần Thread group là điểm bắt đầu của bất kỳ một kế hoạch kiểm tra nào. Tất cả Controller (Bộ điều khiển) và Sampler (Bộ lấy mẫu) phải nằm trong một Thread group (nhóm luồng). Các yếu tố khác như: Listener, có thể được đặt trực tiếp dưới Test plan, trong trường hợp đó Listener sẽ áp dụng cho tất cả các Thread group. Như chính cái tên nó ngụ ý, phần tử Thread group sẽ kiểm soát số lượng luồng (số lượng user giả lập) mà JMeter sẽ sử dụng để thực hiện kiểm thử.
Vì vậy, phần tử Thread Group rất quan trọng. Thông thường, bạn chỉ cần sử dụng một số cấu hình của Thread group, chẳng hạn như Số lượng người dùng giả lập (Thread group) hoặc Số lượng vòng lặp (Loop count) hoặc thời gian tăng tốc (Ram-up period) tính bằng giây. Trên thực tế, nó đủ để bạn chạy thử nghiệm. Nhưng các cấu hình khác cũng hữu ích và chúng có thể giúp bạn trong một số trường hợp. Do đó, bài đăng này sẽ giúp bạn hiểu tất cả các tính năng của Thread Group một cách sâu sắc và rõ ràng.
1. Thread và Loop count (luồng và số vòng lặp)
Đầu tiên, chúng ta sẽ nói về Luồng (Thread) và Số lượng vòng lặp (Loop count) để có một cái nhìn tổng quan tốt về các định nghĩa này.
Thread group là số luồng, số lượng người dùng Loop count là số lần chạy lặp lại request Hình minh họa ở trên cho thấy quá trình chạy thử Số lượng Thread (Người dùng) = 2 và Số Loop count ( vòng lặp) = 3. Nhóm luồng này chỉ có 1 Yêu cầu A. Giả sử trong thử nghiệm này, hai luồng được chạy cùng một lúc. Độ dài của mũi tên biểu thị thời gian trả lời một yêu cầu.
Mỗi luồng sẽ thực hiện toàn bộ kế hoạch kiểm tra và hoàn toàn độc lập với các luồng kiểm tra khác. Chúng chạy song song sau khi tất cả các luồng được bắt đầu. Nhiều luồng được sử dụng để mô phỏng các kết nối đồng thời đến ứng dụng máy chủ của bạn.
Mỗi nhóm luồng có số vòng lặp riêng của họ. Vòng lặp đầu tiên được thực hiện, sau đó vòng lặp thứ hai sẽ chạy và sau khi vòng lặp thứ hai kết thúc, vòng lặp thứ ba sẽ chạy, v.v. Nói cách khác, các vòng lặp chạy tuần tự bên trong nhóm luồng.
Dưới đây là một ví dụ khác để hiển thị quá trình chạy thử của Nhóm luồng có 3 yêu cầu: Yêu cầu A, Yêu cầu B và Yêu cầu C. Số lượng luồng (Người dùng) = 2 và Số lượng vòng lặp = 3
Tìm hiểu về các thành phần trog một Thread group
1.1 Các hành động có thể được thực hiện sau khi Sampler gặp lỗi
Đây là tùy chọn đầu tiên của phần tử Thread Group, nhưng không nhiều người chú ý đến nó. Nó xác định điều gì xảy ra nếu xảy ra lỗi lấy mẫu, do bản thân mẫu bị lỗi hoặc xác nhận không thành công. Các lựa chọn có thể là:
Continue (mặc định) - bỏ qua lỗi và tiếp tục kiểm tra và chạy bộ lấy mẫu tiếp theo.
Start Next Loop – Bỏ qua lỗi, tiếp tục vòng lặp tiếp theo và kiểm thử
Stop Thread – Thoát khỏi luồng hiện tại
Stop Test – Toàn bộ kiểm thử được dừng lại ở cuối sampler hiện tại. Nó có nghĩa là các sampler đang chờ xử lý vẫn chạy cho đến khi hoàn tất.
Stop TestNow: Toàn bộ kiểm thử được dừng lại ngay lập tức. Mọi sampler hiện tại đều bị gián đoạn.
1.2 Threads Properties (Các thuộc tính của Thread)
- Number of Threads (Users): Mô phỏng số lượng người dùng
- Ramp-Up Period: Thời gian tăng tốc cho JMeter biết mất bao lâu để nâng cấp cho toàn bộ số luồng đã chọn. Nếu 10 luồng được sử dụng và thời gian tăng tốc là 100 giây, thì JMeter sẽ mất 100 giây để bật và chạy tất cả 10 luồng. Mỗi luồng sẽ bắt đầu 10 (100/10) giây sau khi luồng trước đó được bắt đầu. Ví dụ: bài kiểm tra bắt đầu lúc 01:48:02, vui lòng xem hình minh họa:
Một ví dụ khác: Nếu có 30 luồng và thời gian tăng tốc là 120 giây, thì mỗi luồng liên tiếp sẽ bị trễ 4 giây. Quá trình nâng cấp cần đủ dài để tránh khối lượng công việc quá lớn khi bắt đầu thử nghiệm, và đủ ngắn để các luồng cuối cùng bắt đầu chạy trước khi các luồng đầu tiên kết thúc. Bạn nên bắt đầu với Ramp-up = số lượng luồng và điều chỉnh tăng hoặc giảm khi cần thiết. Lưu ý: Nếu Ramp-up = 0 , kiểm thử sẽ được thực hiện khi tất cả các luồng được tạo, sau đó bắt đầu tất cả chúng cùng một lúc.
- Loop count: số lần thực hiện kiểm tra cho từng nhóm luồng. Ngoài ra, có thể chọn "continue" để thử nghiệm chạy cho đến khi dừng thủ công hoặc cho đến khi gặp điều kiện dừng, chẳng hạn như dừng thử nghiệm khi có lỗi hoặc đạt đến Thời gian kết thúc, hết thời gian, v.v. Gía trị mặc định là 1 tức là không lặp lại.
- Delay Thread creation until needed: Làm chậm việc tạo ra thread mới. Hữu ích khi tạo Thread Group với lượng user lớn. Khi đó tránh được tải lớn do tạo ra một lượng user lớn ngay lập tức.
- Scheduler: Khi được tích, tùy chọn cho scheduler sẽ được enable để thiết lập việc chạy/dừng test tại những thời điểm nhất định. Nếu không chọn, bản test sẽ chạy ngay khi chúng ta bấm "Start"
1.3 Scheduler Configuration
- Duration (seconds): Nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tương đối. JMeter sẽ sử dụng tính năng này để tính Thời gian kết thúc và bỏ qua giá trị Thời gian kết thúc. Khi kiểm thử chạy hết thời gian này, nó sẽ dừng lại và đang sử dụng chế độ Stop Test như trên.
- Startup delay (seconds): Nếu scheduler checkbox được chọn, có thể chọn độ trễ khởi động tương đối. JMeter sẽ sử dụng điều này để tính thời gian bắt đầu và bỏ qua giá trị thời gian bắt đầu.
- Start Time: Nếu scheduler checkbox được chọn,có thể chọn thời gian bắt đầu tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử.
- End Time: Nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử và nó sẽ dừng lại ở thời gian kết thúc được chỉ định.
2. Validation Mode
Chế độ này cho phép xác thực nhanh chóng một Nhóm luồng bằng cách chạy nó với 1 luồng, 1 lần lặp, không có bộ hẹn thời gian và không có độ trễ Khởi động được đặt thành 0.
3 thuộc tính đầu tiên có thể được sửa đổi bằng cách thiết lập trong user.properations:
- testplan_validation.nb_threads_per_thread_group : Số lượng chủ đề được sử dụng để xác thực một Nhóm chủ đề, mặc định là 1 chủ đề.
- testplan_validation.ignore_timers : Bỏ qua bộ định thời gian khi xác thực nhóm luồng của kế hoạch kiểm thử, mặc định là 1
- testplan_validation.number_iterations : Số lần lặp sẽ sử dụng để xác thực một nhóm chủ đề.
Tài liệu tham khảo:
Bài viết được dịch từ https://jmetervn.com/2016/10/20/thread-group-in-jmeter/
Xem thêm các bài viết chia sẻ về kiến thức kiểm thử phần mềm tại đây
- Bộ tài liệu MIỄN PHÍ học kiểm thử phần mềm căn bản đầy đủ: vinatester.com/book
- Blog chia sẻ: vinatester.com/blog
- Fanpage: facebook.com/vinatester
- Cộng đồng chia sẻ kiến thức trên facebook “Hội tester Việt Nam - chia sẻ kiến thức" facebook.com/groups/hoitestervietnamhoctap
- Cộng đồng chia sẻ tin tuyển dụng trên facebook “Hội tester Việt Nam" facebook.com/groups/testervietnamgroup
All rights reserved