fbpx
itmscoaching.com

Trong thời đại 4.0 như hiện nay ngoài việc phần mềm hoạt động tốt các tính năng thì hệ thống cần chạy ổn định và đảm bảo sự trải nghiệm của người dùng yếu tố này sẽ quyết định người dùng có từ bỏ phầm mềm của bạn hay không?  Do đó kiểm thử hiệu năng – Perfomance Test đang được các công ty doanh nghiệp sản xuất phần mềm hướng tới.
Để thực hiện được việc này, chúng ta sẽ có tool hỗ trợ được sử dụng khá nhiều hiện nay, đó chính là Jmeter. Vậy Jmeter là gì? Kiểm thử hiệu năng là gì, chúng ta hãy cùng nhau đi tìm hiểu bài viết dưới đây.

Performance Testing là gì

performance testing
Kiểm thử hiệu năng là một loại kiểm thử phi chức năng, sử dụng để kiểm tra tốc độ, thời gian phản hồi, độ ổn định, độ tin cậy, khả năng mở rộng và sửu dụng tài nguyên của một ứng dụng phần mềm trong khối lượng công việc cụ thể.
Trong đó trọng tâm của Performance Testing là:

  • Thời gian phản hồi (Response time): xác định xem ứng dụng phản hồi nhanh hay chậm
  • Khả năng mở rộng (Scalability): Xác định tải người dùng tối đa mà ứng dụng phần mềm có thể xử lý
  • Tính ổn định: Xác định xem ứng dụng có ổn định dưới các tải khác nhau hay không

Tại sai phải Performance Testing?

Mục tiêu của Performance Testing không phải là để tìm lỗi, nó là hoạt động cần thiết cho việc phát triển những giải pháp tối ưu hóa hiệu năng cho phần mềm. Kiểm thử hiệu năng giúp chúng ta tránh được các tình huống không lường trước khi triển khai ứng dụng trong môi trường thực tế.
Nếu không có kiểm tra này, khi đưa vào sử dụng phầm mềm sẽ gặp một số vấn đề sau: chạy chậm khi có nhiều người sử dụng đồng thời, sự không nhất quá giữa các hệ điều hành dẫn đến khả năng sử dụng kém.
Theo Dunn & Bradstreet, 59% công ty trong danh sách Fortune 500 trải qua thời gian ngừng hoạt động ước tính 1,6 giờ/tuần. Như vậy với tối thiểu 10.000 nhân viên đang trả 56$ mỗi giờ, phần lao động của chi phí thời gian ngừng hoạt động cho một tổ chức như vậy sẽ là 896.000$ hàng tuần tương đương hơn 46 triệu $ mỗi năm. Chính vì vậy các tổ chức đã và đang rất chú trọng phần kiểm thử hiệu năng.

Các loại Performance Testing

performance testing
Load testing: kiểm thử khả năng của ứng dụng để thực hiện theo tải người dùng dự đoán. Mục tiêu là để xác định mức độ tắc nghẽn hiệu suất trước khi ứng dụng phần mềm được phát hành trong môi trường thực tế.
Stress testing: Liên quan đến việc thử nghiệm một ứng dụng theo khối lượng công việc quá lớn để xem cách nó xử lý lưu lượng truy cập cao hoặc cách mà nó xử lý dữ liệu. Mục tiêu là để xác định được điểm giới hạn của một ứng dụng.
Capacity Testing: Mục tiêu để xác định có bao nhiêu user hoặc bao nhiêu giao dịch hoặc số lượt truy cập trên một đơn vị thời gian có thể đáp ứng các SLA (Service Level Agreement- là một thỏa thuận hay hợp đồng được thiết lập giữa khách hàng và nhà cung cấp dịch vụ) hiệu năng của hệ thống
Endurance testing: Mục tiêu để đảm bảo phần mềm có thể xử lý tải dự kiến trong một khoảng thời gian dài.
Spike testing: Mục tiêu để kiểm tra phản ứng của phần mềm đối với các thay đổi lớn đột ngột trong tải do người dùng tạo.
Volume testing: Mục tiêu là để kiểm tra hiệu suất của ứng dụng phần mềm theo khối lượng cơ sở dữ liệu khác nhau.
Scalability testing: Mục tiêu của thử nghiệm nhằm đến khả năng mở rộng của ứng dụng, để xác định hiệu quả của ứng dụng phần mềm khi “mở rộng” để hỗ trợ tăng tải người dùng, hỗ trợ cho việc lập kế hoạch bổ sung dung lượng cho hệ thống.
Reliability Testing: Là một loại kiểm thử để xác minh rằng phần mềm có khả năng thực hiện một hoạt động không có lỗi trong một khoảng thời gian nhất định trong một môi trường được chỉ định. Nó cũng chính là việc kiểm thử độ tin cậy của hệ thống đó.
Ví dụ: Xác suất mà một máy tính trong một cửa hàng hoạt động và chạy trong tám giờ mà không xảy ra lỗi là 99% => điều này được gọi là độ tin cậy.
Bạn có thể  tìm hiểu các kiểu test trên thông qua các câu hỏi như sau:

  • Mục tiêu của kiểu test?
  • Cách thức thực hiện test?
  • Thực hiện test trong bao lâu?

Đối tượng của Performance Testing

Như chúng ta biết kiến trúc của web app và mobile app gồm có hai phần: Client và Server và Performance test là test hiệu năng của Server vì vậy đối tượng test là Server.
Hầu hết các vấn đề về hiệu suất đều xoay quanh tốc độ, thời gian phản hồi, thời gian tải và khả năng mở rộng, trong đó tốc độ là thuộc tính quan trọng nhất của một ứng dụng. Dưới đây chúng ta cùng nhau đi tìm hiểu các tiêu chí đánh giá và lưu ý khi test performance.Các

  • Log Load-time – Thời gian tải thường là thời gian ban đầu để ứng dụng khởi động và nên giữ vài giây nếu có thể
  • Poor response time – Thời gian phản hồi là thời gian cần từ khi người dùng nhập dữ liệu vào ứng dụng cho đến khi ứng dụng xuất ra phản hồi cho đầu vào đó (Load testing cần được thực hiện để chắc chắn ứng dụng có thể xử lý số lượng người dùng dự kiến)
  • Poor scalability – Một sản phẩm phầm mềm có khả năng mở rộng kém khi nó không thể xử lý số lượng người dùng dự kiến hoặc khí nó không đáp ứng đủ nhiều nguồn phạm vi người dùng
  • Bootlenecking – Tắc nghẽn là những vật cản trong hệ thống làm giảm hiệu suất tổng thể của hệ thống (ví dụ như sử dụng CPU, bộ nhớ, mạng, giới hạn hệ điều hành…)
  • Response time: Thời gian tính từ lúc send request đến khi nhận hết response
  • Through put: Số lượng transaction (request được xử lý) trong một đơn vị thời gian (second/ minute)

Chú ý: Một sai lầm phổ biến là thường diễn ra đó là Đánh giá hiệu năng của server thông qua Concurrent User
Ví dụ: “Test chức năng login xem chịu tải được bao nhiêu user”.
Server không trực tiếp xử lý user mà nó xử lý request do user tạo ra, do đó user chỉ là gián tiếp tác động đến server. Bạn có thể kết luận 1 hệ thống đáp ứng được bao nhiêu user với điều kiện:

  • Các user thực hiện số request giống hệt nhau.
  • Bạn chỉ thực hiện test 1 scenario duy nhất.
  • Cả team + khách hàng tự nhìn nhận đó là đủ, không yêu cầu gì thêm.

-> Dù bao nhiêu điều kiện đi chăng nữa thì đó vẫn là sai.

Quy trình Performance Testing

Phương pháp được áp dụng để kiểm tra hiệu năng có thể khác nhau nhưng mục tiêu của những quá trình kiểm thử hiệu năng vẫn giữ nguyên. Nó có thể giúp chứng minh rằng hệ thống đáp ứng một số tiêu chí hiệu năng được xác định trước. Hoặc nó có thể giúp so sánh hiệu năng của hai hay nhiều hệ thống phần mềm. Hoặc nó cũng có thể giúp xác định các thành phần của hệ thống nào đang làm suy giảm hiệu năng của nó.
Quy trình kiểm thử hiệu năng cơ bản:

  1. Xác định môi trường kiểm thử

Chuẩn bị sẵn sàng môi trường thử nghiệm vật lý, môi trường sản xuất và công cụ kiểm tra sẵn có. Nắm rõ về cấu hình phần cứng, phần mềm và mạng được sử dụng trong quá trình kiểm thử trước khi bắt đầu. Nó sẽ giúp tạo ra bộ Test case kiểm thử hiệu năng hiệu quả hơn đồng thời nó cũng sẽ giúp xác định các khó khăn mà người thử nghiệm có thể gặp phải trong quá trình kiểm thử hiệu năng.

  1. Xác định các tiêu chí hiệu năng

Bao gồm các mục tiêu và ràng buộc cho thông lượng, thời gian phản hồi và phân bổ nguồn lực. Nó cũng cần thiết để xác định các tiêu chí thành công của dự án. Tester cần xác định được các tiêu chí và mục tiêu hiệu năng tối thiểu cần đạt của hệ thống bởi vì thông thường các thông số của dự án sẽ không bao gồm nhiều hoặc không có những tiêu chí hiệu năng đủ lớn. Việc sử dụng một ứng dụng tương tự để so sánh là một cách hay để thiết lập tiêu chí hiệu năng.

  1. Lập kế hoạch và thiết kế kiểm thử hiệu năng

Xác định cách sử dụng có khả năng khác nhau giữa những người dùng cuối và xác định các tình huống chính để kiểm tra tất cả các trường hợp sử dụng có thể. Nó là cần thiết để mô phỏng một loạt các người dùng cuối, kế hoạch dữ liệu thử nghiệm hiệu suất và phác thảo những số liệu sẽ được thu thập.

  1. Cài đặt môi trường kiểm thử

Cài đặt môi trường, công cụ, tài nguyên cần thiết trước khi thực hiện test

  1. Triển khai test design

Tạo test cases kiểm thử hiệu năng theo test design

  1. Thực hiện test:

Thực thi và theo dõi kết quả thực thi

  1. Phân tích, điều chỉnh và kiểm tra lại:

Hợp nhất, phân tích và chia sẻ kết quả kiểm tra. Sau đó, tinh chỉnh và kiểm tra lại để xem có cải thiện hay giảm hiệu suất hay không. Vì các cải tiến thường tăng lên nhỏ hơn với mỗi lần kiểm tra lại, dừng lại khi bị tắc nghẽn do CPU gây ra. Sau đó, bạn có thể có tùy chọn xem xét tăng tốc độ xử lý của CPU hay không.

Công cụ Performance Testing

LoadRunner: là công cụ kiểm thử hiệu năng cho phép tìm ra những lỗi về khả năng thực thi bằng việc phát hiện nguyên nhân, chỗ làm cho phần mềm chạy chậm hoặc không đúng yêu cầu. Đây là công cụ mạnh với giải pháp kiểm tra tải, phát hiện và đưa ra giải pháp cải tiến. Ứng dụng LoadRunner sẽ giúp giảm thời gian viết test script đến 80%, đó là nhờ nó cung cấp chức năng tự động phát sinh script mô tả lại các tình huống muốn kiểm tra. (dowload)
LoadView-Testing: là công cụ kiểm thử hiệu năng cho phép thiết lập đường cơ sở thời gian phản hồi theo số lượng người dùng tải cụ thể, xác định điểm tắc nghẽn hiệu suất khi số lượng người dùng đồng thời tăng lên, xác định được giới hạn trên của các hệ thống hiện tại để lập kế hoạch cho hiệu năng trong tương lai, tăng hiệu năng lên mức cao trên môi trường test để thấy được cách xử lý dữ liệu và điểm giới hạn hiệu năng của hệ thống. (dowload)
LoadStorm: là công cụ có khả năng chịu tải rất tốt, có thể kiểm tra hiệu năng của app thông qua lượng traffic và user. Điểm đặc biệt ở công cụ này là nó có thể thiết lập hàng trăm nghìn, thậm chí hàng triệu user để khai thác lỗ hổng trong ứng dụng. Mặt khác, tester có thể dễ dàng điều chỉnh kịch bản test khi sử dụng công cụ này. (dowload)

Jmeter là gì?

Ở bài viết này chúng ta sẽ cùng nhau đi sâu vào tìm hiểu và thực hành trên Tool Jmeter (dowload windows).
Apache Jmeter là một mã nguồn mỏ. phát triển dựa trên nền tảng Java, được thiết kế để kiểm tra tải các hành vi, chức năng và đo lường hiệu suất của phần mềm.
performance testing
Các tính năng của Jmeter:

  • License (Giấy phép): do tool là mã nguồn mở do đó nó miễn phí và người dùng có thể tải về và sử dụng thoải mái
  • Giao diện (Graphical User Interface): đơn giản, thân thiện với người dùng và dễ sử dụng
  • Giao thức hỗ chợ: có khả năng thực hiện kiểm thử hiệu năng nhiều ứng dụng, máy chủ và các giao thức khác nhau. Ví dụ như giao thức HTTP, HTTPS, SOAP/REST,..
  • Supports Distributed Testing: tạo ra các Master và Salves để thực hiện phân phối tải trong đó Master sẽ thực hiện làm nhiệm vụ phân phối việc đẩy request cho các Slaves, các Slaves sẽ thực hiện đẩy các request từ script lên server cần kiểm thử hiệu năng
  • Test Result Visualation: hiển thị kết quả dưới nhiều dạng Bảng, Biểu đồ, Cây, Báo cáo,…

Cách thức hoạt động:
Jmeter sẽ mô phỏng một lượng người dùng gửi request đến ứng dụng cần kiểm thử, ngay sau khi gửi request server sẽ phản hồi và Jmeter bắt đầu thu thập dữ liệu. Các thống kê này sẽ cho thấy hiệu năng của server dưới các định dạng khác nhau theo yêu cầu.
Kết Luận: 
Phần trên chúng ta đã cùng nhau tìm hiểu performance là gì và để tiếp nối mời các bạn đọc tiếp phần 2, hướng dẫn chi tiết setup và thực hành Jmeter nhé!
Ngoài ra các bạn có thể tìm và đọc thêm các kiến thức khác về kiểm thử tại website của ITMS Coaching nhé!