Skip to main content

11. Các tình huống kiểm thử phi chức năng

Kiểm thử phi chức năng là gì?

Kiểm thử phi chức năng (Non-Functional Testing) là quá trình kiểm thử các khía cạnh không liên quan trực tiếp đến chức năng của phần mềm, mà tập trung vào các thuộc tính như hiệu suất, bảo mật, khả năng mở rộng, tính khả dụng, và độ tin cậy. Mục tiêu của kiểm thử phi chức năng là đảm bảo rằng hệ thống đáp ứng các yêu cầu về chất lượng và trải nghiệm người dùng.

Các loại kiểm thử phi chức năng phổ biến

Dưới đây là một số loại kiểm thử phi chức năng phổ biến:

1. Kiểm thử hiệu suất (Performance Testing)

  • Mục tiêu: Đánh giá hiệu suất của hệ thống dưới các điều kiện tải khác nhau.
  • Các loại:
    • Load Testing: Kiểm tra hệ thống dưới tải bình thường và cao để đảm bảo nó hoạt động tốt.
    • Stress Testing: Kiểm tra hệ thống dưới tải vượt quá giới hạn để xác định điểm phá vỡ.
    • Scalability Testing: Đánh giá khả năng mở rộng của hệ thống khi tải tăng lên.
    • Volume Testing: Kiểm tra hệ thống với lượng lớn dữ liệu để đánh giá hiệu suất.
  • Công cụ phổ biến: JMeter, K6.

2. Kiểm thử bảo mật (Security Testing)

  • Mục tiêu: Xác định các lỗ hổng bảo mật trong hệ thống.
  • Các loại:
    • Vulnerability Scanning: Sử dụng công cụ để quét các lỗ hổng bảo mật.
    • Penetration Testing: Mô phỏng các cuộc tấn công để kiểm tra khả năng bảo vệ của hệ thống.
    • Security Audit: Đánh giá các chính sách và quy trình bảo mật.
  • Công cụ phổ biến: OWASP ZAP, Burp Suite.
  • Ví dụ cụ thể:
    • Vulnerability Scanning: Sử dụng công cụ như OWASP ZAP để quét một ứng dụng web và phát hiện các lỗ hổng như SQL Injection, Cross-Site Scripting (XSS), và các vấn đề bảo mật khác.
    • Penetration Testing: Mô phỏng một cuộc tấn công giả lập bằng cách sử dụng các kỹ thuật như brute force để thử đoán mật khẩu hoặc khai thác các lỗ hổng đã biết nhằm truy cập trái phép vào hệ thống.
    • Security Audit: Đánh giá các chính sách bảo mật hiện tại của tổ chức, bao gồm việc kiểm tra xem các biện pháp bảo vệ dữ liệu có tuân thủ các tiêu chuẩn ngành và quy định pháp luật hay không, chẳng hạn như GDPR hoặc HIPAA.

3. Kiểm thử khả năng sử dụng (Usability Testing)

  • Mục tiêu: Đánh giá trải nghiệm người dùng và tính dễ sử dụng của giao diện.
  • Phương pháp:
    • Quan sát người dùng thực hiện các nhiệm vụ cụ thể.
    • Thu thập phản hồi từ người dùng về giao diện và trải nghiệm.
  • Ví dụ cụ thể:
    • Đo lường thời gian hoàn thành nhiệm vụ: Ví dụ, nếu một người dùng mất trung bình 2 phút để đăng ký tài khoản, nhưng mục tiêu là dưới 1 phút, thì giao diện cần được cải thiện.
    • Sử dụng bảng câu hỏi SUS (System Usability Scale) để đánh giá mức độ hài lòng của người dùng với giao diện.

4. Kiểm thử tính khả dụng (Availability Testing)

  • Mục tiêu: Đảm bảo hệ thống luôn sẵn sàng và hoạt động khi người dùng cần.
  • Phương pháp:
    • Kiểm tra thời gian hoạt động (uptime) của hệ thống.
    • Đánh giá khả năng phục hồi sau sự cố (disaster recovery).
  • Ví dụ cụ thể:
    • Nếu một hệ thống có thời gian hoạt động là 99.9% trong một năm, điều này có nghĩa là hệ thống có thể không hoạt động trong khoảng 8.76 giờ mỗi năm (0.1% của 8760 giờ).
    • Mục tiêu của kiểm thử tính khả dụng là đảm bảo rằng hệ thống đáp ứng các thỏa thuận mức dịch vụ (SLA) về thời gian hoạt động và khả năng phục hồi.

5. Kiểm thử độ tin cậy (Reliability Testing)

  • Mục tiêu: Đánh giá khả năng hệ thống hoạt động liên tục mà không gặp sự cố.
  • Phương pháp:
    • Thực hiện các bài kiểm tra lặp lại để xác định tỷ lệ lỗi.
    • Đánh giá thời gian trung bình giữa các lỗi (Mean Time Between Failures - MTBF).
  • Ví dụ cụ thể:
    • Giả sử một hệ thống có MTBF là 100 giờ, điều này có nghĩa là trung bình hệ thống sẽ hoạt động liên tục trong 100 giờ trước khi gặp sự cố.
    • Nếu hệ thống được kiểm thử trong 500 giờ và gặp 5 sự cố, thì MTBF thực tế là 100 giờ (500 giờ / 5 sự cố).
    • Mục tiêu của kiểm thử độ tin cậy là xác định và cải thiện MTBF để đảm bảo hệ thống hoạt động ổn định và đáng tin cậy hơn.

6. Kiểm thử tương thích (Compatibility Testing)

  • Mục tiêu: Đảm bảo hệ thống hoạt động tốt trên các môi trường khác nhau.
  • Phương pháp:
    • Kiểm tra trên các trình duyệt, hệ điều hành, và thiết bị khác nhau.
  • Ví dụ cụ thể:
    • Đảm bảo một ứng dụng web hoạt động tốt trên Chrome, Firefox, Safari, và Edge.
    • Kiểm tra ứng dụng di động trên iOS và Android với các phiên bản khác nhau.

7. Kiểm thử tuân thủ (Compliance Testing)

  • Mục tiêu: Đảm bảo hệ thống tuân thủ các quy định và tiêu chuẩn ngành.
  • Phương pháp:
    • Kiểm tra các yêu cầu pháp lý và tiêu chuẩn kỹ thuật liên quan.
  • Ví dụ cụ thể:
    • Đảm bảo hệ thống tuân thủ GDPR (Quy định bảo vệ dữ liệu chung) cho dữ liệu người dùng ở châu Âu.
    • Kiểm tra tuân thủ các tiêu chuẩn PCI-DSS (giải pháp bảo mật dữ liệu thẻ thanh toán) cho hệ thống thanh toán trực tuyến.

8. Kiểm thử quốc tế hóa và địa phương hóa (Internationalization and Localization Testing)

Định nghĩa:

  • Internationalization (i18n): Quá trình thiết kế và phát triển ứng dụng để có thể dễ dàng thích ứng với các ngôn ngữ và khu vực khác nhau mà không cần thay đổi mã nguồn.
  • Localization (l10n): Quá trình thích ứng ứng dụng cho một ngôn ngữ, khu vực hoặc thị trường cụ thể bằng cách dịch văn bản và điều chỉnh các yếu tố văn hóa. Mục tiêu: Đảm bảo hệ thống hỗ trợ nhiều ngôn ngữ và định dạng địa phương, mang lại trải nghiệm nhất quán cho người dùng trên toàn cầu.

A. Kiểm thử mã hóa ký tự (Character Encoding Testing)

  • Kiểm tra UTF-8/UTF-16 support:
    • Đảm bảo hệ thống hỗ trợ Unicode đầy đủ
    • Kiểm tra hiển thị đúng các ký tự đặc biệt: á, ê, ñ, ü, 中文, العربية, עברית
    • Test với emoji và ký tự đặc biệt: 🌟, ©, ®, ™
  • Kiểm tra lưu trữ và truy xuất dữ liệu:
    • Đảm bảo dữ liệu được lưu trữ đúng định dạng UTF-8 trong database
    • Kiểm tra không bị mất mát hoặc biến dạng ký tự khi import/export
    • Test backup và restore data với nội dung đa ngôn ngữ

B. Kiểm thử định dạng địa phương (Locale-specific Format Testing)

  • Định dạng ngày tháng:
    • US: MM/DD/YYYY (12/25/2023)
    • EU: DD/MM/YYYY (25/12/2023)
    • ISO: YYYY-MM-DD (2023-12-25)
    • Việt Nam: DD/MM/YYYY (25/12/2023)
  • Định dạng số và tiền tệ:
    • US: $1,234.56 (dấu phẩy phân cách nghìn, dấu chấm thập phân)
    • EU: €1.234,56 (dấu chấm phân cách nghìn, dấu phẩy thập phân)
    • Việt Nam: 1.234.567 VNĐ
  • Định dạng thời gian:
    • 12-hour format: 2:30 PM
    • 24-hour format: 14:30
    • Time zones: UTC+7 (Việt Nam), UTC-5 (EST)

C. Kiểm thử hướng viết (Text Direction Testing)

  • Left-to-Right (LTR):
    • Tiếng Việt, Tiếng Anh, Tiếng Pháp, Tiếng Đức
    • Kiểm tra alignment của text, buttons, menus
  • Right-to-Left (RTL):
    • Tiếng Ả Rập (العربية), Tiếng Hebrew (עברית)
    • Test layout flip: navigation menu, sidebar, form fields
    • Kiểm tra icons và images có flip phù hợp không
  • Mixed content:
    • RTL text với số LTR: "العدد 123 هو رقم"
    • Email addresses trong RTL context

D. Kiểm thử Form nhập liệu đa ngôn ngữ

  • Input validation:
    • Cho phép nhập ký tự đặc biệt: Nguyễn Văn Đức, José García
    • Validate postal codes: VN (12345), US (12345-6789), UK (SW1A 1AA)
    • Phone number formats: +84 123 456 789, (555) 123-4567
  • Auto-complete và spell check:
    • Test với từ điển tiếng Việt, tiếng Anh
    • Kiểm tra suggestions phù hợp với ngôn ngữ
    • Address auto-complete theo region
  • Error messages và validation:
    • Thông báo lỗi được dịch đúng ngữ cảnh
    • Error messages cho date format: "Định dạng ngày không hợp lệ"
    • Field labels và placeholders đầy đủ

E. Kiểm thử hiển thị Table và Data Grid

  • Column headers và sorting:
    • Headers được dịch: "Tên", "Ngày tạo", "Trạng thái"
    • Sort theo alphabet của từng ngôn ngữ (tiếng Việt: a,à,á,ả,ã,ạ)
    • Date/number sorting theo locale format
  • Data export:
    • CSV export giữ nguyên UTF-8 encoding
    • Excel export với proper encoding (BOM)
    • PDF export support fonts cho ký tự đặc biệt
  • Filtering và search:
    • Search hỗ trợ diacritics: "cafe" tìm được "café"
    • Filter date ranges theo format địa phương
    • Case-insensitive search cho mọi ngôn ngữ

F. Kiểm thử giao diện người dùng (UI Testing)

  • Layout và spacing:
    • Text expansion: Tiếng Đức dài hơn 30% so với tiếng Anh, Tiếng Việt dài hơn 20% so với tiếng Anh, Tiếng Nhật dài hơn 40% so với tiếng Anh
    • Button size accommodate longer text (giải thích: kích thước nút phù hợp với văn bản dài hơn)
    • Menu items không bị truncate (giải thích: không bị cắt ngắn)
  • Font support:
    • Fonts hỗ trợ Unicode: Noto Sans, Arial Unicode MS
    • Fallback fonts cho các ký tự không support (ví dụ: Noto Sans fallback cho ký tự Ả Rập)
    • Font size và readability trên mobile (đảm bảo text không quá nhỏ khi hiển thị trên thiết bị di động)
  • Images và icons:
    • Culturally appropriate images (hình ảnh phù hợp với văn hóa)
    • Icons có ý nghĩa phù hợp
    • Màu sắc phụ hợp với thông lệ (ví dụ: màu đỏ = danger, green = success, yellow = warning, blue = info, aqua = neutral)

G. Kiểm thử tích hợp API và Backend

  • HTTP headers:
    • Accept-Language: vi-VN, en-US;q=0.9
    • Content-Type: application/json; charset=utf-8
  • API responses:
    • JSON với UTF-8 encoding
    • Error messages theo ngôn ngữ request
    • Timezone handling trong timestamps
  • Database integration:
    • Collation settings: utf8mb4_unicode_ci
    • Index performance với Unicode data
    • Full-text search hỗ trợ đa ngôn ngữ

H. Kiểm thử accessibility và assistive technologies

  • Voice input:
    • Speech recognition cho tiếng Việt
    • Voice commands trong ngôn ngữ địa phương
  • Keyboard navigation:
    • Input method support (Unikey, Telex)
    • Keyboard shortcuts không conflict với IME

Kết luận

Kiểm thử phi chức năng là một phần quan trọng trong quá trình phát triển phần mềm, giúp đảm bảo rằng hệ thống không chỉ hoạt động đúng chức năng mà còn đáp ứng các yêu cầu về chất lượng và trải nghiệm người dùng. Việc lựa chọn và thực hiện các loại kiểm thử phi chức năng phù hợp sẽ giúp nâng cao độ tin cậy và hiệu suất của sản phẩm cuối cùng.