Những lưu ý khi kiểm thử một website

Trong phạm vi bài viết này, tôi sẽ giới thiệu về kiểm thử các ứng dụng web trong ngành công nghệ thông tin hiện nay.

1/ Đặc điểm của ứng dụng web

  • Chỉ cài đặt trên máy chủ
  • Cần có hệ thống mạng nộibộ(LAN)
  • Các máy trạm làm việc chỉ cần một trình duyệt web
  • Dữ liệu tập trung trên server
  • Quản lý và bảo mật tốt hơn

2/ Những chú ý khi thực hiện kiểm thử một ứng dụng web

2.1. Interface testing

A. Nội dung hoạt động : - Thông tin thể hiện như menu, kích thước, vị trí, màu sắc, font chữ thể hiện trên form - Kiểm tra các điều khiển: Textbox, option (radio button), check boxes, command button, combo boxes, list boxes, Label, Dialog, Icon/Tooltip, Phím nóng/ tắt, các phím Tab/ Shift tab/ enter/ ESC, Focus con trỏ, Thông báo, Menu điều khiển, dấu hiệu của trường bắt buộc - Giá trị mặc định

B.Phương pháp thực hiện:

Xác định được số Form cần test (dựa theo tài liệu thiết kế giao diện nếu có)

Kiểm tra lần lượt các điều khiển trên cùng 1 form theo trật tự từ:

  • Trên xuống dưới
  • Từ trái sang phải
  • Từ mỗi điều khiển độc lập đến logic giữa các điều khiển

Kiểm tra các nội dung trên mỗi Form như sau:

  • Màu sắc hài hoà hợp lý, vị trí các điều khiển đặt theo yêu cầu khách hàng (nếu có trong yêu cầu).
  • Các nút hiển thị ở các Form tương tự nhau phải giống nhau trừ khi có yêu cầu riêng.
  • Các tên thuộc tính dạng text tương ứng với các điều khiển trên Form đều phải đúng chính tả không dùng tiếng anh.
  • Kiểm tra giao diện các Form trên các trình duyệt khác nhau đảm bảo phải như nhau.

C. Những lỗi thường gặp:

  1. Các Form giao diện không nhất quán về màu sắc, tên nút, các nút không cùng kích cỡ.
  2. Các câu thông báo thường sai chính tả hoặc là tiếng anh hoặc tiếng việt không dấu.
  3. Lỗi chính tả (tên Form, tên nút lệnh, tên trường thuộc tính...)
  4. Thiếu ký tự * bên cạnh trường bắt buộc
  5. Câu thông báo không chính xác với thao tác đã thực hiện
  6. Sai trật tự Tab
  7. Khi một nút lệnh không được sử dụng trong 1 số thời điểm nó không được chuyển sang màu xám mờ
  8. Tên các nút lựa chọn mang tính kỹ thuật, không dễ hiểu với người dùng hệ thống.
  9. Không Focus con trỏ chuột tới thuộc tính đầu tiên của form.

2.2. Basic functionality testing

A. Nội dung cần test

  • Việc xử lý các thao tác (action): Add,Update,Delete,Data type, Select , View, Search, Import/Export, Share/Send data
  • Valid data: Việc xử lý các chức năng với việc nhập các bộ dữ liệu hợp lệ
  • Invalid data:Việc xử lý các chức năng với việc nhập các bộ dữ liệu không hợp lệ
  • Flow: Việc xử lý mối liên hệ giữa các chức năng theo luồng nghiệp vụ.

B. Phương pháp thực hiện

Để test function, Kiểm thử viên sẽ áp dụng tất các kỹ thuật test để phân tích ra các trường hợp hợp lệ và các trường hợp không hợp lệ, các luồng nghiệp vụ đúng ...

  • Khi test valid data và invalid data thì áp dụng các kỹ thuật test phân tích giá trị biên, phân vùng tương đương để tạo dữ liệu.

    • Ví dụ: Đối với trường nhận giá trị text thì sẽ có thể có những case sau:
    • characters: " the material is publish for all person "
    • number: "123"
    • special character: "[email protected]#$%"
    • html tags:<script> the material is publish for all person </script>
    • html tags: <script>alert("xss error") </script>
    • html tags: <script> window.open("http://dantri.vn") </script>
  • Khi test việc xử lý theo các action thì cần chú ý : với mỗi thao tác của người dùng đều làm cho hệ thống biến đổi sang một trạng thái khác.

  • Khi test flow: kiểm thử viên phải hiểu và nắm được về luồng nghiệp vụ của mỗi phần mềm.

2.3. Link testing

A. Nội dung kiểm thử

  • Kiểm tra các links liên kết ngoài trang web
  • Kiểm tra tất cả các links nội bộ
  • Kiểm tra các links tới các vị trí trong cùng trang
  • Kiểm tra các links sử dụng để gửi mail tới admin hoặc ngườidùng khác từ trang web
  • Kiểm tra xem có trang trống nào không
  • Kiểm tra các links bể trong tất cả các links nói trên

B. Phương thức thực hiện Ví dụ Test tất cả link nội bộ trong trang web http://dantri.com

  • Vào công cụ hỗ trợ Link checker: http://validator.w3.org/
  • Nhập địa chỉ trang web:
  • Kết quả trả về về những trang bị broken

2.4. Compatibility testing

A. Nội dung kiểm thử

  • Kiểm thử sự tương thích với trình duyệt
  • Kiểm thử sự tương thích với hệ điều hành
  • Kiểm thử sự tương tích với thiết bị di động
  • Kiểm thử sự tương thích với tùy chọn các thiết bị ngoại vi ( máy in …)

B. Phương pháp thực hiện

Khi test một web thì cần phải có các yêu cầu:

  • Chạy trên hệ điều hành: window… back 2 trở lên
  • Chạy các trình duyệt : firefox, chrome, IE,
  • Chạy trên các trình duyệt của các thiết bị di động có hệ điều hành là androin hoặc ios.
  • Có thể kết nối với máy in để in bài

=> Khi kiểm thử phải thực hiện kiểm thử tính tương thích của phần mềm với tất cả các yêu cầu trên.

2.5. Usability testing

A. Nội dung kiểm thử:

  • Kiểm thử cho chuyển hướng
  • Kiểm thử tính khả dụng
  • Kiểm thử nội dung
  • Các thông tin hỗ trợ người dùng

B. Phương pháp thực hiện:

Trên các grid list ở hình phải sort được theo các cột thông tin: <chen hinh > Thời gian Order mới nhất

  • Số lượng người tham dự từ lớn xuống bé
  • Slượng vé từ thấp lên cao
  • Trạng thái theo vần alpha Nen Đối với tính khả dụng này, có thểm làm theo yêu cầu cụ thể của khách hàng với từng tiêu chí ứng với nghiệp vụ.

2.6. Security testing

A. Nội dung kiểm thử

  • Kiểm tra lỗi SQL Injection:
  • Kiểm tra lỗi XSS
  • Kiểm tra lỗ hổng CSRF
  • Kiểm tra lỗi Path Traversal
  • Kiểm tra lỗi mã hóa dữ liệu
  • Kiểm tra lỗi xác thực/phân quyền
  • Kiểm tra lỗi User enumeration
  • Kiểm tra lỗi Session fixation
  • Kiểm tra lỗ hổng cho phép dò đoán mật khẩu, thu thập danh sách, thông tin người dùng: Các ứng dụng không có cơ chế bảo vệ sử dụng captcha, lock account khi đăng nhập sai quá số lần quy định đều có khả năng bị mắc lỗi này.

B. Cách thức thực hiện

  • Ví dụ 1: Kiểm tra lỗi sql injection Nhập vào form đăng nhập chuỗi ký tự đặc biệt: test' or '1'='1. Hệ thống đăng nhập thành công => bị lỗi sql injection

  • Ví dụ 2: Kiểm tra lỗi xss:

    • Nhập vào chuỗi kí tự <script>alert(“ XSS”)</script> vào những nơi có thể nhập được dữ liệu
    • Sau đó, kích nút Lưu

=> Nếu ứng dụng lưu lại và cho phép thực thi script thì trên trình duyệt sẽ xổ ra cửa sổ có dòng chữ “ XSS”, khi đó ứng dụng bị mắc lỗi XSS.

  • Ví dụ 3: Kiểm tra lỗi xác thực/phân quyền: Sử dụng 2 user, 1 user có quyền thấp và 1 user có quyền cao hơn. Khi sử dụng user có quyền cao truy cập vào các chức năng dành riêng ta ghi lại các đường dẫn trên URL, sau đó đăng nhập vào bằng user quyền thấp và thử truy cập vào link đó. Nếu ứng dụng cho phép user truy cập thì cơ chế xác thực phân quyền của ứng dụng không có tác dụng.

  • Ví dụ 4: kiểm tra lỗi User enumeration : Đăng nhập vào ứng dụng (cố tình nhập sai user hoặc password sai). Nếu ứng dụng trả về câu thông báo cụ thể là “sai mật khẩu” hoặc “sai user” thì ứng dụng mắc lỗi. Còn nếu trả về câu thông báo chung ví dụ “Username hoặc password không đúng.” thì không bắt lỗi.

  • Ví dụ 5: Kiểm tra lỗi lỗ hổng cho phép dò đoán mật khẩu, thu thập danh sách, thông tin người dùng: Các ứng dụng không có cơ chế bảo vệ sử dụng captcha, lock account khi đăng nhập sai quá số lần quy định đều có khả năng bị mắc lỗi này

2.7.Performance testing/Load test/ Stress test

A. Performance Testing:

  • Kiểm tra hiệu quả thực thi của ứng dụng như Thời gian phản hồi và Tốc độ thực hiện của nó
  • Mục đích: giúp phát hiện ra những vẫn đề thiếu xót về tài nguyên của server – side như:
    • Ảnh hưởng của băng thông
    • Khả năng của database
    • Yêu cầu phần cứng/phần mềm

B. Load testing

  • Kiểm tra hệ thống thực thi trong điều kiện có nhiều người dùng cùng truy xuất đồng thời dưới nhiều điều kiện khác nhau:
  • Mục đích:
    • Nhiều người cùng truy cập
    • Nhiều giao dịch thực hiện cùng lúc
    • Xử lý file dung lượng lớn
    • Xử lý cùng lúc nhiều file …

C. Stress Test

  • Kiểm tra dựa trên việc tăng liên tục mức độ chịu tải cho đến khi hệ thống ngưng hoạt động
  • Mục đích: xác định mức tới hạn của hệ thống có thể đáp ứng

Đối với các loại kiểm thử này, người dùng thông thường sử dụng một số loại tool test tự động để thực hiện nó như jmeter, quick test pro, …

2.8. Regression test

  • Kiểm thử hồi quy tập trung vào việc tìm kiếm lỗi sau khi xảy ra việc thay đổi code. Đặc biệt, nó tìm kiếm theo cách hồi qui (đệ qui) hoặc kiểm tra các bug cũ có bị lại hay không. Hồi qui như vậy xảy bất cứ khi nào mà chức năng phần mềm trước đây làm việc đúng đã ngưng làm việc theo mong đợi.
  • Hướng dẫn thực hiện:
    • Với các dự án nhỏ, kiểm thử hồi quy được thực hiện thủ công.
    • Với các dự án vừa và lớn, có khoảng thời gian xây dựng, phát triển và duy trì lâu dài thì người ta hướng tới việc viết các kịch bản tự động test. Kiểm thử viên có thể sử dụng các tool như selenium để viết các script tự động này.