Categories

Subscribe Now

* You will receive the latest news and updates on your favorite celebrities!

Automation Series

Performance Testing
Types

Performance Testing 

Performance Testing là 1 trong nhiều kiểu test mà tester nào cũng phải trải qua, nhưng nó không đơn giản và dễ hiểu như những kiểu test khác. Nó dễ gây nhầm lẫn và đưa đến những kết luận sai lầm, ảnh hưởng 1 phần đến chất lượng của project cũng như ảnh hưởng xấu khi PM đánh giá tester.

Việc nhầm lẫn thường xảy ra khi tester thường bị yêu cầu thực hiện Performance Testing khi trong đầu còn chưa có tí kiến thức nào cả, chỉ kịp đọc 1-2 bài viết, xem mấy cái video hướng dẫn sử dụng Jmeter ở trên mạng rồi làm theo. Và thế là tưởng như đã hiểu về Performance Testing rồi. Bên cạnh đó còn là việc rất nhiều người cả khách hàng, PM, developer và tester hiểu sai —> đưa yêu cầu sai + cách thực hiện sai –> kết quả không có giá trị.

Performance Testing không phải thứ học trong ngày 1, ngày 2 được. Bạn cần thời gian để học và thực hành rất rất nhiều.

Có nhiều định nghĩa về kiểm thử hiệu năng, kiểm thử hiệu năng là một loại kiểm thử để đảm bảo các ứng dụng phần mềm sẽ hoạt động tốt dưới khối lượng công việc dự kiến.

Các tính năng và chức năng của một hệ thống phần mềm không phải là mối quan tâm duy nhất. Hiệu năng của một ứng dụng phần mềm như:

  • Thời gian phản hồi (response time)
  • Độ tin cậy (reliability)
  • Sử dụng tài nguyên (resource usage)
  • Khả năng mở rộng (scalability).

Trong đó trọng tâm của kiểm thử hiệu năng là:

  • Thời gian phản hồi: xác định xem ứng dụng phản hồi nhanh hay chậm
  • Khả năng mở rộng: 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.

Mục tiêu của Kiểm thử hiệu năng 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ế.

Các loại kiểm thử hiệu năng

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ần tự 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 Test

Kiến trúc của web app và mobile app gồm có 2 phần: Client và Server.

Performance Testing là test hiệu năng của server. –> đối tượng test là SERVER.

Các tiêu chí đánh giá:

Các tiêu chí để đánh giá hiệu năng server 1 ứng dụng có nhiều, nhưng đối với 1 Tester không chuyên Perfomance thì chỉ nên tập trung vào 2 tiêu chí quan trọng nhất:

  • Response time: Thời gian tính từ lúc send request đến khi nhận hết response
  • Throughtput: Số lượng transaction (request được xử lý) trong 1 đơn vị thời gian (second / minute)

Một sai lầm phổ biến là thường diễn ra: Đá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. 🙁

Các bước từ đầu đến cuối của một quá trình test

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

Xác định các tiêu chí chấp nhận hiệu năng chấp nhận được của hệ thố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.

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.

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

Triển khai test design: Tạo testcases kiểm thử hiệu năng theo test design

Thực hiện test: Thực thi và theo dõi kết quả thực thi

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ụ kiểm thử hiệu năng

Việc lựa chọn công cụ kiểm thử hiệu năng dựa trên nhiều yếu tố như: chi phí, phương thức hỗ trợ, trình duyệt, ngôn ngữ phát triển phần mềm, phần cứng,… Dưới đây là một số công cụ phổ biển phục vụ cho việc kiểm thử hiệu năng: 

Jmeter: Là phần mềm mã nguôn mở sử dụng 100% ngôn ngữ Java, được thiết kế để kiểm thử tải (load testing) web and app của máy chủ.

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.

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.

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. Sau khi tiến hành pentest, bạn sẽ nhìn thấy một bản báo cáo chi tiết.

Sử dụng Jmeter cho Performance Testing:

Các thành phần của Jmeter

  1. Samplers
  2. Logic Controllers
  3. Listeners
  4. Configuration Elements
  5. Assertions
  6. Timers
  7. Pre Processors
  8. Post-Processors
  9. Miscellaneous Features

Xây dựng test script

  1. Manual: tự build các thành phần test plan.
  2. Automation: record lại step khi thực hiện trên browser hoặc mobile.

Cách xây chuẩn nhất là: sử dụng recording để record lại hết tất cả các request, tránh bị miss request nào đó. Vì việc recording sẽ lưu lại mọi tham số dưới dạng giá trị nên script run lại sẽ bị lỗi (ví dụ: token hết hạn, datetime invalid, email đã tồn tại …). Sau đó, ta tự chỉnh sửa test script để điều chỉnh các tham số, tạo ra các biến dynamic để script run không còn lỗi.

Thực hiện run test

  • Run bằng GUI: được sử dụng để verify test script xem đã ổn chưa, còn chỗ nào bị lỗi nữa không.
  • Run bằng non-GUI: đây mới thực sự là run test performance. 

Chú ý:

  • Nên có phương án để dọn rác cho DB sau mỗi lần run vì sau mỗi lần dữ liệu được tạo mới là khá nhiều
  • Nên chú ý đến máy chạy Jmeter, có đủ CPU, RAM và network để run với số lượng thread mà bạn muốn hay ko
  • Nếu số lượng threads cần tạo ra lớn thì nên sử dụng Distributed testing.

Export & Analyze Report

Có nhiều loại report trong Jmeter được gọi chung là listener. Nếu bạn chỉ là beginner thì chỉ nên tập trung vào HTML report, có đầy đủ chart và các thông tin cần thiết. Để tạo ra được HTML report thì các bạn tự tìm hiểu. 

Để phân tích report đúng:

  • Hiểu rõ kiểu test đang được thực hiện
  • Kết hợp với các tiêu chí test nói ở trên
  • Xem biểu đồ ở HTML report (tập trung vào các chart liên quan trực tiếp tới tiêu chí test)
  • Xem biểu đồ trạng thái của server ở những mốc quan trọng và đối chiếu với HTML report

Sử dụng LoadRunner cho Performance Testing:

Thành phần của LoadRunner

LoadRunner chứa các thành phần sau đây:

Virtual User Generator: Tự động tạo ra VuGen script để lưu lại các thao tác người dùng tương tác lên phần mềm. VuGen script này còn được xem là hoạt động của một người ảo mà LoadRunner giả lập.

Controller: Tổ chức, điều chỉnh, quản lý và giám sát hoạt động kiểm tra tải. Thành phần này có chức năng tạo ra những tình huống (scenario) kiểm tra.

Load Generator: Cho phép giả lập hàng ngàn người dùng, hoạt động của từng người sẽ được thực hiện theo VuGen script. Kết quả thực hiện sẽ được thông báo cho Controller.

Analysis: Cung cấp việc xem, phân tích và so sánh các kết quả kiểm tra hiệu năng phần mềm.

Launcher: Nơi tập trung tất cả các thành phần của LoadRunner cho người dùng.

Thuật ngữ dùng trong LoadRunner

Scenario: Là một file định nghĩa các sự kiện xảy ra trong mỗi lần kiểm tra dựa trên hiệu suất yêu cầu.

Vuser: Trong Scenario, LoadRunner thay thế người sử dụng bằng người dùng ảo hay còn gọi là Vuser. Vuser mô phỏng hành động của con người làm việc với ứng dụng của chúng ta. Một Scenario có thể chứa hàng chục, hàng trăm và thậm chí hàng ngàn Vuser.

Vuser Script: Các hành động mà Vuser thực thi trong Scenario được mô tả trong Vuser Script.

Transactions: Chúng ta định nghĩa một transactions để đo lường hiệu quả hoạt động của Server . Một Transaction đại diện cho người sử dụng dưới vai trò End-User thực hiện theo quy trình nghiệp vụ mà chúng ta muốn đo lường.

Các bước Load Test

#1: Plan Load Test

Thiết kế test case với các bước thực hiện rõ ràng, và đề ra các thông số cần đo lường cụ thể.

#2: Create Vuser Scripts

Dùng công cụ LoadRunner chúng ta có thể lưu lại các thao tác người dùng tương tác với hệ thống dưới dạng script.

#3: Define Scenario

Thiết kế scenario, nhằm giả lập môi trường mà phần mềm hoạt động với hiệu năng giống trong thực tế.

#4: Run Screnario

Chạy, quản lý và giám sát việc thực hiện performance test.

#5: Analyzing the Results

Phân tích kết quả dựa trên thống kê mà công cụ LoadRunner cung cấp. Nếu kết quả thực tế chưa đáp ứng được yêu cầu thì phần mềm được kiểm tra cần được điều chỉnh.

Ví dụ

Tạo một người dùng ảo ghi lại các sự kiện, hoạt động bởi người dùng thật trên trang web: http://facebook.com

Ghi lại sự kiện đăng nhập của một người dùng vào facebook

Khi Vuser Script dừng chạy, chúng ta có thể xem tổng quan việc chạy lại trong Replay Summary.

 

Thời gian chạy: 11/08/2017 10:34:34 CH

Thời gian kết thúc: 11/08/2017 10:35:01 CH

Kết quả chi tiết:

 

Hy vọng bài viết sẽ giúp các bạn hiểu hơn về kiểm thử hiệu năng và có thể lựa chọn được công cụ kiểm thử hiển năng phù hợp với hệ thống.

Related posts

Leave a Reply

Required fields are marked *

error: Content is protected !!