Tại sao Performance Testing ngày càng trở nên quan trọng?

I. Tổng quan về Performance Testing trong sự phát triển của Phần mềm

1. Tổng quan về sự phát triển của hệ thống

1.1 Những hệ thống đầu tiên

  • Lịch sử phát triển của các hệ thống được bắt nguồn bằng mô hình client-server. Tại mô hình này thông thường ứng dụng sẽ được lưu trữ tại những chiếc máy tính lớn hoặc những mini computers - nơi chứa đựng tất cả những environment mà người dùng sẽ sử dụng tới. Tại thời điểm này, đa số những ứng dụng thường khá đơn giản. Bắt đầu bằng “Green screen” terminals sau đó sẽ được chuyển đến PCs trong mô hình client-server. Ứng dụng khi này rất dễ để có thể bảo trì, dễ sử dụng và dễ quản lý. Định nghĩa về Performance khi này hầu như chưa được biết đến, rắc rối trong quá trình ứng dụng hoạt động cũng chỉ được tìm thấy qua việc debug system và quản lý log của system.

client server.jpg

  • Nhưng như chúng ta đã biết, sự phát triển của công nghệ là không ngừng nghỉ. Hệ thống ngày càng trở nên phức tạp hơn với người dùng. Do đó việc bảo trì, nâng cấp, quản lý hệ thống cũng trở nên khó khăn hơn. Để tiết kiệm được chi phí thì việc tìm ra nguồn gốc của những rắc rối sớm càng trở nên cấp thiết hơn. Do đó việc Kiểm tra, giám sát hiệu năng của hệ thống càng ngày càng được quan tâm.

=> Và để giải quyết được bài toán này, Performance Testing đã ra đời kèm theo các khái niệm cơ bản nhất về performance của hệ thống. Nhưng với những giai đoạn đầu tiên của lịch sử phát triển phần mềm, việc giám sát hiệu năng của ứng dụng cũng chỉ là “Optional”.

1.2 Mô hình “Three-Tier”

  • Bước vào thế kỷ 21, sự phát triển của hệ thống có những bước nhảy vọt với sự ra đời của mô hình “Three-Tier”. Đây là bước chuyển mình quan trọng cho những hệ thống enterprise sau này. Tại mô hình này, client đóng vai trò như lớp truyền tải giao tiếp với người dùng (Presentation). Người dùng sẽ tương tác với hệ thống qua lớp này. Tại đây những lệnh, thông tin từ người dùng sẽ được truyền tải tới lớp giữa (Middle-tier) . Lớp này sẽ xử lý và đưa ra quyết định chính trong việc hoạt động của hệ thống.

  • Với mô hình này, người dùng sẽ không tương tác trực tiếp với lớp database mà tất cả sẽ thông qua lớp giữa (Middle-tier). Khi này hệ thống đã phức tạp hơn, việc kiểm tra tính toàn vẹn thông tin và độ trễ của thông tin khi truyền tải qua 3 lớp đã trở nên cấp thiết hơn bao giờ hết. Và kể từ đây việc thực hiện performance testing không còn là optional nữa.

client 1.jpg

2. SOA-Base Applications và nhu cầu cấp thiết của Performace Testing

  • Bên trên tôi đã nêu sơ lược về lịch sử phát triển của các ứng dụng hệ thống và nhu cầu về performance testing của từng giai đoạn nhưng tất cả vẫn chưa dừng tại đó. Với sự thay đổi công nghệ từng ngày cùng với xu hướng “Internet Of Things”, sự bùng nổ của internet ngày nay yêu cầu và đòi hỏi công nghệ phù hợp hơn. Do đó vào giữa những năm 2000, mô hình SOA (Service Oriented Architecture) được ra đời.

  • Với SOA-Base Applications, ứng dụng sẽ không được làm tập trung mà sẽ được đóng gói thành từng function riêng biệt (ví dụ như login, order sản phẩm,…). Từ đó thuật ngữ API ra đời hay còn được gọi là Web Services.

  • Không giống như Three-Tier model, ứng dụng bây giờ được tổ hợp bởi rất nhiều những APIs đơn lẻ gọi tới nhau, có những APIs đến từ partner hoặc từ các tổ chức khác nhau. Mọi thứ là open cho mọi người có thể tự do phát triển riêng biệt. Điều này mang đến sự đa dạng của ứng dụng cũng như sự tùy biến, linh hoạt với người dùng nhưng cũng đem lại thách thức không nhỏ về hiệu năng của ứng dụng. Do đó performace testing trở nên không thể thiếu trong ngành công nghiệp phần mềm hiện nay.

II. Xu hướng DevOps trong ngành công nghiệp phần mềm và Performance Testing

  • Như chúng ta đã biết, để giành lợi thế trong hàng nghìn doanh nghiệp phát triển phần mềm hiện nay là rất khó khăn. Yếu tố “Time To Market” là tối quan trọng, nhu cầu cấp thiết trong việc rút ngắn thời gian sản phẩm ra thị trường là một yếu tố sống còn với một doanh nghiệp phần mềm. Việc mở rộng thị trường cũng là nhu cầu cấp thiết. Với sự bùng nổ của “Internet Of Things”, người dùng có thể sử dụng ứng dụng từ bất cứ nơi đâu, bất cứ thiết bị nào chỉ cần có kết nối với internet. Điều này đem lại thách thức không nhỏ cho việc quản lý được hiệu năng của ứng dụng trên nhiều môi trường, nền tảng khác nhau. Và để "Time To Market" giảm kèm với nền tảng sử dụng ứng dụng bùng nổ đòi hỏi việc performance testing được áp dụng trong Sofware Development Life Circle (SDLC) càng sớm càng tốt.

  • Việc thực hiện performance testing trong DevOps model đã trở nên thách thức hơn bao giờ hết do sản phẩm ngày càng phức tạp mà thời gian dành cho việc kiểm thử giảm. Để khắc phục được điểm yếu này việc test performance phải được đưa vào SDLC sớm nhất có thể.

  • Hiện nay có rất nhiều các bộ công cụ hỗ trợ performance testing giúp người dùng dễ dàng hơn trong việc quản lý được hiệu năng của ứng dụng như Dynatrace, Borland Silk Performer,… Việc sử dụng những bộ giải pháp này giúp tiết kiệm được thời gian trong sự bùng nổ của xu hướng DevOps. Chúng ta có thể dễ dàng tìm ra chính xác vị trí gây ảnh hưởng đến hiệu năng của ứng dụng để sớm có biện pháp khắc phục nhằm tạo nên một sản phẩm tốt tới tay người dùng.

Kết luận

  • Performance testing ngày nay không còn là optional nữa mà trở thành một khâu quan trọng trong việc phát triển phần mềm. Ứng dụng ngày càng trở nên cồng kềnh dẫn đến việc kiểm soát hiệu năng của ứng dụng là bắt buộc. Việc sớm đưa performance testing vào SDLC sẽ giúp chúng ta giảm tải chi phí cho việc bảo trì, sửa lỗi sau này và đồng thời cũng làm giảm “Time to Market” của ứng dụng.

  • Việc thực hiện test performance còn có thể xác minh được các thuộc tính chất lượng khác của một hệ thống hoặc một phần mềm ví dụ như khả năng mở rộng, độ tin cậy hoặc sử dụng tài nguyên của chúng. Từ đó sẽ dễ dàng hơn trong việc quản lý chất lượng, bảo trì hoặc phát triển của toàn bộ hệ thống hoặc phần mềm.