SOA Testing

SOA testing là gì?

SOA testing là 1 mô hình test hướng dịch vụ, nó là 1 kiểu kiến trúc mà trong đó các thành phần ứng dụng được thiết kế để giao tiếp thông qua các giao thức truyền thông thông thường qua 1 mạng.

SOA là gì?

SOA là 1 phương pháp tích hợp các ứng dụng và business process với nhau để đáp ứng các business cần thiết.

SOA cung cấp tính nhanh nhạy và linh hoạt cho các business process. Các thay đổi đối với process và ứng dụng có thể được hướng tới 1 thành phần cụ thể mà không ảnh hưởng đến toàn bộ hệ thống.

Các dev phần mềm trong SOA hoặc phát triển hoặc mua 1 phần của các Chương trình được gọi là các SERVICE.

Service là gì?

  • Các service có thể là 1 đơn vị chức năng của ứng dụng hoặc business process, cái mà có thể được tái sử dụng hoặc lặp lại bởi ứng dụng hoặc process nào đó. (ví dụ, trong hình trên, payment gateway có thể được sử dụng lại bởi 1 web thương mại điện tử nào đó. Bất cứ khi nào 1 thanh toán cần được thực hiện, web thương mại điện tử call/request Payment gateway service. Sau khi thanh toán được hoàn thành trên gateway, 1 phản hồi (response) sẽ được gửi tới web thương mại điện tử).

  • Các service dễ dàng tập hợp lại và dễ dàng cấu hình các thành phần với nhau.

  • Các service có thể được so sánh với các building block. Chúng có thể xây dựng bất kỳ ứng dụng cần thiết nào đó. Thêm và xóa chúng khỏi các ứng dụng và business process dễ dàng.

  • Các service được định nghĩa nhiều bởi các business function mà chúng thực hiện chứ không phải các đoạn code.

Các web service

Các web service là các thành phần ứng dụng độc lập, có sẵn trên web. Chúng có thể được phát hành, được tìm thấy và có thể được sử dụng trên web. Chúng có thể giao tiếp qua internet.

  1. Service provider phát hành các dịch vụ ra internet.

  2. Các Client tìm kiếm 1 web service cụ thể từ web service registry.

  3. 1 URL và WSDL cho web service được yêu cầu được trả lại.

Sử dụng WSDL và URL, truyền thông giữa service provider và người yêu cầu xảy ra qua các SOAP message.

  1. Khi 1 người dùng gọi 1 web service, 1 kết nối HTTP sẽ được thiết lập tới provider. 1 SOAP message được tạo ra để chỉ thị provider gọi web service logic được yêu cầu.

  2. Phản hồi nhận được từ provider là 1 SOAP message cái mà sẽ được nhúng vào HTTP response. HTTP response này định dạng dữ liệu mà có thể hiểu được bởi ứng dụng của người dùng.

Ví dụ: 1 trang chủ của 1 website và 1 công cụ tìm kiếm hiển thị các report thời tiết hàng ngày. Thay vì code toàn bộ các report về thời tiết, 1 service của các report thời tiết có thể được mua từ 1 nhà cung cấp và tích hợp vào các trang.

SOA testing

SOA bao gồm nhiều công nghệ khác nhau. Các ứng dụng được xây dựng sử dụng SOA có nhiều service được lắp ráp mềm dẻo.

SOA testing sẽ tập trung vào 3 lớp hệ thống

1. Lớp service:

Lớp này bao gồm các service, các service được thể hiện bởi hệ thống bắt nguồn từ các business function.

Ví dụ

Xem xét nội dung 1 web về sức khỏe bao gồm

  1. Tracker về cân nặng

  2. Tracker về nống độ đường

  3. Tracker về huyết áp

Các tracker hiển thị dữ liệu tương ứng và ngày tháng mà chúng được nhập vào. Lớp service bao gồm các service mà lấy các dữ liệu tương ứng từ cơ sở dữ liệu.

  • Service cho Tracker về cân nặng

  • Service cho Tracker về nống độ đường

  • Service cho Tracker về huyết áp

  • Service cho đăng nhập

2. Process layer

Lớp process bao gồm các process, tập hợp các service mà là 1 phần của 1 chức năng độc lập.

Các process này có thể là 1 phần của giao diện người dùng (ví dụ: 1 công cụ tìm kiếm), 1 phần của ETL tool (để lấy dữ liệu từ DB).

Trọng tâm chính trong lớp này sẽ là các giao diện và process của người dùng.

Giao diện người dùng của Tracker về cân nặng và sự liên kết của nó với DB là trọng tâm chính.

Các function dưới sẽ được xem xét:

  1. Thêm dữ liệu mới

  2. Chỉnh sửa dữ liệu hiện có

  3. Tạo tracket mới

  4. Xóa dữ liệu

3. Consumer layer

Lớp này chủ yếu chứa các giao diện người dùng

Dựa trên các lớp, việc test 1 ứng dụng SOA được phân chia thành 3 cấp độ.

  1. Service level

  2. Interface level

  3. End to end level

  • Top Down approach là được sử dụng cho Test Designing.

  • Bottom Up approach là được sử dụng cho Test Execution.

Chiến lược cho SOA testing

Test planning approach

  • Mô hình hoàn chỉnh của các ứng dụng nên được hiểu rõ bởi các tester.

  • Các ứng dụng cần được chia vào các service độc lập (service, cái mà có cầu trúc request/response của riêng chúng và không phục thuộc vào bất kỳ service nào khác để hình thành response).

  • Cấu trúc của các ứng dụng cần được tổ chức lại thành 3 phần – data, services, và các ứng dụng front end.

  • Tất cả các thành phần cần được phân tích cẩn thận và các business scenario nên được đánh dấu nổi bật.

  • Các business scenario nên được phân loại ra các scenario thông thường và các scenario của các ứng dụng cụ thể.

  • Traceability Matrix nên được chuẩn bị, và tất cả các test case nên phải được bắt nguồn từ các business scenario.

Test execution approach

  • Mỗi thành phần service nên được test.

  • Test toàn bộ các thành phần của các service nên cần được thực hiện để xác nhân tính hợp lệ của các luồng dữ liệu thông qua các service và toàn vẹn dữ liệu.

  • Test hệ thống của các mô hình hoàn chỉnh cần được thực hiện để xác nhân tính hợp lệ của các luồng dữ liệu giữa ứng dụng front end và DB.

  • Test performance cần được thực hiện để tinh chỉnh và tối ưu performance.

Các Phương pháp SOA testing

Các business scenario được quyết định dựa trên bài test

  • Các khía cạnh business khác nhau liên quan tới hệ thống cần được phân tích.

  • Các scenario cần được phát triển dựa trên sự kết hợp của

    • Các web service khác nhau của ứng dụng
    • Các web service và ứng dụng
  • Thiết lập dữ liệu cần được thực hiện dựa trên các scenario nêu trên

  • Thiết lập dữ liệu cũng cần được thực hiện từ đầu đến cuối các scenario.

Stubs

  • Các giao diện dummy sẽ được tạo để test các service.

  • Các input khác nhau có thể được cung cấp thông qua các giao diện này, và các output có thể được xác nhận.

  • Khi 1 ứng dụng sử dụng 1 giao diện tới 1 service bên ngoài, không qua việc test (service của bên thứ 3), 1 stub có thể được tạo trong suốt quá trình integration testing.

Regression testing

  • Regression testing trên các ứng dụng cần được thực hiện khi có nhiều bản release để đảm bảo sự ổn định và tính khả dụng của các hệ thống.

  • 1 bộ test hồi quy toàn diện sẽ được tạo ra bao gồm các service cái mà hình thành 1 phần quan trọng của các ứng dụng.

  • Bộ test này có thể được sử dụng lại trong nhiều bản release của các dự án.

Service level testing

Service level testing bao gồm việc test các thành phần chức năng, bảo mật, hiệu năng và khả năng tương tác.

Mọi service trước tiên cần được test độc lập.

Functional testing

Functional testing cần được thực hiện trên mỗi dịch vụ để

  • Đảm bảo rằng service đáp ứng chính xác response tương ứng mỗi request.

  • Các lỗi chính xác được nhận cho các request với Invalid data, bad data…

  • Kiểm tra từng request và response cho mọi hoạt động mà service phải thực hiện trong thời gian chạy.

  • Xác nhận các message lỗi khi 1 lỗi xảy ra ở server, client hay mạng.

  • Xác nhận rằng các response được nhận là trong định dạng đúng.

  • Xác nhận rằng dữ liệu được nhận trên các response tương ứng với các dữ liệu được request.

Security testing

Security testing của web service là 1 khía cạnh quan trọng trong suốt quá trình test service level của các ứng dụng SOA, điều này đảm bảo sự an toàn của các ứng dụng.

Các yếu tố sau cần được bảo đảm trong suốt quá trình test:

  • Tiêu chuẩn công nghiệp được định nghĩa bởi WS-Security testing cái mà cần được tuân theo bởi các web service.

  • Các biện pháp an ninh cần hoạt động tốt.

  • Mã hóa dữ liệu và các chữ ký số trên các tài liệu.

  • Xác thực và ủy quyền.

  • SQL Injection, Malware, XSS, CSRF, các lỗ hổng khác được kiểm tra trên XML.

  • Các cuộc tấn công từ chối dịch vụ.

Performance testing

Performance testing của các dịch vụ cần được thực hiện vì các dịch vụ được tái sử dụng và nhiều ứng dụng có thể đang sử dụng cùng 1 dịch vụ.

Các yếu tố sau cần được bảo đảm trong suốt quá trình test:

  • Performance và functional của các dịch vụ cần được test dưới tải lớn.

  • Performance của các dịch vụ cần được so sánh trong khi đang hoạt động riêng lẻ và trong các ứng dụng mà nó được kết hợp cùng.

  • Load test của service cần được thực hiện.

  • Để xác minh response time

  • Để kiểm tra các bottle neck

  • Để xác minh việc sử dụng của CPU và memory

  • Để dự đoán khả năng mở rộng

Integration level testing

  • Service level testing đảm bảo hoạt động chính xác của chỉ các service riêng lẻ, nó không đảm bảo các hoạt động của các thành phần được ghép nối.

  • Integration testing được thực hiện tập trung chủ yếu trên các interface.

  • Giai đoạn này bao gồm tất cả các kịch bản business có thể có.

  • Non-Functional testing của các ứng dụng cần được thực hiện nhiều lần trong giai đoạn này. Việc test an ninh, tuân thủ và hiệu năng đảm bảo sự sẵn sàng và ổn định của hệ thống trên tất cả các khía cạnh.

  • Các giao thức truyền thông và mạng cần được test để xác nhận tính nhất quán của các dữ liệu truyền thông giữa các dịch vụ.

End to end testing

Giai đoạn này đảm bảo rằng các ứng dụng xác nhận tới các yêu cầu business cả về functionally và non-functionally.

Các mục dưới đây cần được đảm bảo được test trong suốt quá trình end to end testing

  • Tất cả các service đang hoạt động như dự kiến sau khi integration.

  • Exception handling.

  • User interface của các ứng dụng.

  • Luồng dữ liệu phù hợp qua tất cả các thành phần.

  • Business process.

Các thách thức trong SOA testing

  • Sự thiếu hụt của các interface cho các service.

  • Quá trình test kéo dài qua nhiều hệ thống theo đó đang tạo ra các nhu cầu dữ liệu phức tạp.

  • Các ứng dụng là 1 tập hợp của các thành phần khác nhau mà có xu hướng thay đổi. Sự cần thiết phải test hồi quy thường xuyên hơn.

  • Do kiến trúc đa tầng, rất khó để cô lập các nhược điểm.

  • Do dịch vụ sẽ được sử dụng trong các interface khác nhau, rất khó để dự đoán tải, do đó làm cho việc test hiệu năng trở nên cồng kềnh.

  • SOA là 1 tập hợp các công nghệ không đồng nhất. Việc test 1 ứng dụng SOA đòi hỏi nhiều người với kỹ năng khác nhau qua đó làm tăng chi phí planning và execution.

  • Do các ứng dụng là 1 sự tích hợp của nhiều service, security testing có cái rủi ro chung của chính nó. Xác nhận tính xác thực và ủy quyền khá khó khăn.

Tham khảo: (https://www.guru99.com/learn-soa-testing.html)[https://www.guru99.com/learn-soa-testing.html]