CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.2. Kiểm thử mô hình ứng dụng Web
2.2.4. Các kiểm thử cho ứng dụng Web
Như các mục đã phân tích ở trên thì chúng ta đã nắm được thế nào là một ứng dụng Web, các thành phần của một ứng dụng Web là gì, và đã có sự so sánh giữa kiểm thử thông thường và kiểm thử ứng dụng Web. Vấn đề đặt ra lúc này là để kiểm thử một ứng dụng Web chúng ta cần quan đến những vấn đề gì?
a) Kiểm thử Giao diện người dùng
Vấn đề đầu tiên trong kiểm thử ứng dụng Web chúng ta cần xem xét đến đó là
“Kiểm thử Giao diện người dùng”. Khi xây dựng một giao diện ứng dụng Web chúng ta phải quan tâm đến tư tưởng của người thiết kế xem mục tiêu thiết kế giao diện đó áp dụng cho lĩnh vực gì, và tư tưởng của người phát triển xem sử dụng công nghệ gì để xây dựng giao diện.
Kiểm thử thiết kế giao diện người dùng
Kiểm thử giao diện người dùng là cách để đưa ra đánh giá mức độ một thiết kế có thỏa mãn yêu cầu người dùng hay không? Giao diện có tính dễ sử dụng, và ở đây vấn đề nhìn và cảm nhận được xem xét kiểm thử một cách hết sức cẩn thận. Khi thực hiện kiểm thử thiết kế giao diện người dùng cần chú ý đến khả năng phù hợp về thiết kế, chỉ ra được các vùng thiết kế có thể dẫn người dùng đến trạng thái lỗi và chỉ được ra cái mà người dùng mong đợi.
Người dùng ứng dụng: Thực hiện thiết kế luôn chú trọng đến phần đông người sử dụng tuy nhiên cũng cần phải biết được nhu cầu và đặc điểm của người dùng ứng dụng Web đó là một yếu tố quan trọng để đánh giá thiết kế giao diện cho ứng dụng đó.
Kiểm thử giao diện người dùng thì luôn có hai đối tượng cần quan tâm: 1 – người dùng phía trình chủ, 2 – người dùng phía trình khách.
Ở đây chúng ta có thể sử dụng một mẫu để thu thập đánh giá được những yếu tố liên quan đến người sử dụng:
Thuộc tính Mức độ kinh nghiệm
0 – không có, 1- thấp, 2 – trung bình, 3 - cao
Kinh nghiệm về máy tính 3
Kinh nghiệm về Web 3
Kinh nghiệm về ứng dụng thực tế 0
Bảng 2.1. Đánh giá yêu tố người dùng.
Xem xét và xây dựng thiết kế: Ở phần trên chúng ta đã hiểu được các yêu tố liên quan đến người dùng, ở mục này cần phải thiết kế cho ứng dụng. Vì mỗi người dùng khác nhau và ứng dụng khác nhau yêu cầu được thiết kế khác nhau.
Mặc dù có rất nhiều phương pháp thiết kế được sử dụng, người kiểm thử ở đây không phải là đánh giá xem phương pháp nào tốt nhất. Tuy vậy, chúng ta cũng không nên bỏ qua các lỗi thiết kế, và công việc của chúng ta là chỉ ra sự không nhất quán của sự cài đặt giao diện.
Hình 2.11. Tính nhất quán trong phương pháp thiết kế.
- Tương tác của người dùng: Khi người dùng sử dụng ứng dụng sẽ có rất nhiều loại thao tác dữ liệu như quan bàn phím, chuột. Các phương pháp thao tác dữ liệu được tạo ra thông qua điều khiển giao diện màn hình, như cắt và dán, kéo thả.
Kiểm thử thực thi giao diện người dùng
Kiểm thử thực thi giao diện là chúng ta thực hiện việc kiểm thử xem xét xem các chức năng giao diện người dùng có hoạt động đúng đắn không? Một điều khiển khi hoạt động độc lập thì có thể đúng đắn, nhưng khi được kết hợp lại thì hoạt động của nó không còn đúng nữa khi đó sẽ ảnh hưởng đến các chức năng ở bên trong. Trong thực thế thì kiểm thử thiết kế giao diện người dùng được kết hợp với kiểm thử chức năng. Thực chất thì ranh giới giữa tính nhất quán của thiết kế và chức năng của thiết kế không phải lúc nào cũng rõ ràng.
Kiểm thử thực thi giao diện người dùng sẽ bao gồm các phần từ giao diện cần phải được kiểm thử:
- Font (kiểu chữ): Chữ có dễ đọc không? Nên để chữ nghiêng, đậm hay có chân - Màu sắc: Có thích hợp với với màu nền,..
- Đường viền (Boder): Có thể được sử dụng bao quanh các điều khiển như các đường viền quanh các nút(button).
- Hình ảnh (Image): Kiểm tra hình ảnh có làm tăng thời gian tải không?
Chúng ta có thể thấy được lỗi giao diện gặp phải ở hai phiên bản khác nhau của một trình duyệt cụ thể là trình duyệt IE (Internet Explorer).
Hình 2.12. Ứng dụng hiển thị trên IE 7.
Hình 2.13. Ứng dụng hiển thị trên IE 8.
b) Kiểm thử Chức năng
Kiểm tra chức năng cũng giống các trường hợp kiểm thử khác là tìm ra lỗi, tuy nhiên kiểm thử chức năng cho phép kiểm thử cho tất cả các liên kết trong trang Web, kết nối cơ sở dữ liệu, cách thức sử dụng trong các trang Web để gửi và nhận thông tin của người sử dụng.
Có một số phương pháp giúp cho việc kiểm thử chức năng:
Kiểm thử đơn giản chấp nhận được: Mục tiêu của kiểm thử này là kiểm tra hành vi thích hợp của các điều khiển giao diện(text box, radio, button,…). Kiểm thử mọi sự tồn tại của các điều khiển giao diện trên môi trang, mỗi cửa sổ, hay mỗi hội
chỉnh sửa), kiểm thử thao tác bàn phím như kiểm thử thứ tự tab, kiểm tra cách hàng vi của phím tắt(Ctrl + A, Ctrl + X,…)và các phím truy cập như Ctrl + O. Để hiểu rõ hơn kiểm thử đơn giản chấp nhận trong môi trường ứng dụng Web chúng ta có thể thấy qua các vấn đề sau:.
- Các liên kết, như liên kết nội dung.
- Các điều khiển cơ bản như: Nút Back (quay lại), Forward (Tiếp tục), phóng to và thu nhỏ, các điều khiển giao diện, và kiểm thử tải nội dung.
- Kiểm tra các nút lệnh hành động như thêm, xóa, sửa, cập nhật, tạo hồ sơ người dùng, như tài khoản, email, và kiểm thử dữ liệu đầu vào.
- Các chức năng đăng nhập/đăng xuất (login/logout), email thông báo, tìm kiếm, hoặc giải quyết các trường hợp quên mật khẩu.
Kiểm thử chức năng hướng tác vụ: Kiểm tra xem ứng dụng có thể thực hiện các công việc hữu ích một cách đúng đắn hay không. Kiểm thử hướng tác vụ là kiểm thử rất tích cực bằng cách kiểm tra chức năng của chương trình bằng cách so sánh xem các chức năng đó có phù hợp hay đúng đắn với đặc tả ứng dụng, đặc tả yêu cầu không.
Nếu không đúng với đặc tả yêu cầu hay mong đợi của người dùng chúng ta thực hiện báo lỗi.
Kiểm thử hướng tác vụ thực hiện kiểm thử theo danh sách các chức năng được liệt kê, và để có được danh sách các chức năng này thì việc phân tích đặc tả yêu cầu cần phải được làm rất kỹ lưỡng. Kiểm thử sẽ xác định được có chức năng nào không được mô tả rõ hay không có trong đặc tả hay không. Ngoài ra yếu tố thực tế cũng sẽ được ghi nhận cho các chức năng, vì dụ như chắc năng thanh toán cần phải thực hiện nhanh trong vòng hai giây thì cũng phải được ghi thêm vào danh sách chức năng kiểm thử.
Khi chúng ta có được một danh sách các chức năng kiểm thử, thì tương ứng với mỗi chức năng đó chúng ta có thể thiết kế một trường hợp kiểm thử đáp ứng thỏa mãn của chức năng đó.
Kiểm thử lỗi ép buộc: Đúng như ý nghĩa của từ, ép buộc lỗi là cố ý tạo ra những điều kiện lỗi của ứng dụng. Và điều kiễn lỗi này không được phát hiện hoặc là bị xử lý sai. Khi xác định được điều kiện lỗi này thì chúng ta sẽ xử lý các điều kiện lỗi hợp lý hơn đồng nghĩa với việc là hệ thống phục hồi nhanh hơn, thành công hơn. Có thể lấy ví dụ khi chúng ta điền thông tin đăng ký một ứng dụng nào đó, giả sử trường Name không cho nhập ký tự không phải là ký tự thì sẽ phát sinh một trường hợp lỗi đó là khi ta nhập „123456789‟ và chọn nút Submit để gửi dữ liệu đi. Tuy nhiên phải luôn nhớ rằng bất kỳ điều kiện hợp lệ nào cũng có một điều kiện không hợp lệ.
Chúng ta có thể tạo ra một danh sách các điều kiện lỗi như sau:
- Phỏng vấn các lập trình viên.
- Thu thập danh sách các thông điệp từ các lập trình viên.
- Thu thập thông tin từ đặc tả.
Người dùng khi sử dụng ứng dụng sẽ thực hiện một số hành động sẽ khiến hệ thống hay ứng dụng rơi vào trạng thái bị lỗi. Điều này có thể thực hiện bằng nhiều cách khác nhau, như nhập đầu vào không hợp lệ, ngắt kết lỗi mạng,…Khi này lỗi phải cần được phát hiện. Lỗi có thể xuất hiện ở bất kỳ thành phần nào trong chuỗi giao tiếp thực hiện yêu cầu. Và khi phát hiện lỗi thì lỗi đó cần phải được xử lý, các ứng dụng khi gặp lỗi sẽ trả về một mã lỗi hay một thông điệp lỗi. Và thông thường người dùng hay gặp khi ứng dụng gặp phải lỗi đó là thông điệp được hiển thị để thông báo lỗi.
Điều này có thể được thực thi phía trình khách(nếu hành vi đó không đúng), và có thể thực hiện ở trình chủ sau khi người dùng gửi yêu cầu đến trình chủ.
Quy trình xử lý lỗi có thể được hiểu rõ hơn như sau: Người dùng sử dụng ứng dụng nhập vào một yêu cầu và yêu cầu được gửi đến trình chủ Web, trình chủ Web nhận được yêu cầu và chuyển đến trình chủ cơ sở dữ liệu. Nếu trình chủ cơ sở dữ liệu phát hiện ra một lỗi nào đó sẽ trả lại cho trình chủ một mã lỗi, và trình chủ có nhiệm vụ chuyển mã lỗi này gửi lại phía trình chủ dưới dạng thông điệp. Khi đã hiểu được quy trình bắt lỗi chúng ta cần xem xét một số vấn đề sau:
- Một điều kiện lỗi có thể xuất hiện ở bất kỳ thành phần nào.
- Các điều kiện lỗi phải được chuyển từ mã lỗi sang thông điệp dễ hiểu để người dùng có thể biết được lỗi gì xảy ra.
- Kiểm thử ép buộc lỗi, là đặt ứng dụng vào một điều kiện lỗi nó được như lý ở hai mức, mức đầu tiền sẽ đảm bảo rằng một thông điệp lỗi được trình khách tiếp nhận, mức thứ hai kiểm tra thông điệp lỗi có đúng không, có nghĩa là thông điệp sẽ mô tả lỗi để người dùng biết cách xử lý lỗi đó.
Sau khi phát hiện ra lỗi, chúng ta cần phải kiểm tra xem điều kiện lỗi có được xử lý một cách đúng đắn hay không, nhưng điều này không đơn giản vì trong hầu hết các chương trình chúng ta không thể biết được điều kiện lỗi đó sẽ sinh ra kết quả gì. Vì vậy giải pháp giúp cho các kiểm thử viên kiểm soát được việc này là ghi nhận các hành động được thực hiện và thứ tự, như thế khi lỗi xuất hiện có thể được xem xét và xử lý nhanh hơn.
Để ghi nhận lại lỗi thì có rất nhiều cách, cách hay được sử dụng nhất là các kiểm thử viên tạo ra kiểm thử điều kiện lỗi sơ bộ được thu thập từ các lập trình viên hoặc có thể dự đoán phụ thuộc vào kinh nghiệm của người kiểm thử.
Kiểm thử điều kiện biên: Cũng tương tự như kiểm thử ép buộc lỗi, trong đó các biên của mỗi biến được thực hiện kiểm thử.
Ví dụ: Nhập ký tự vào textbox yêu cầu giới hạn ký tự từ 2-8
0 Kiểm thử biên, hay kiểm thử lỗi bắt buộc?
2-8 Kiểm thử chức năng hướng tác vụ?
1 hoặc < 2 Kiểm thử biên hay kiểm thử ép buộc lỗi?
9 hoặc > 8 Kiểm thử biên hay kiểm thử ép buộc lỗi?
?, #, @, !, * Kiểm thử ép buộc?
Bảng 3.1: Lựa chọn phương pháp kiểm thử.
c) Kiểm thử phía trình chủ
Khi nói đến mô hình Client – Server xây dựng ứng dụng Web, thì để hiển thị những giao diện người dùng thì đăng sau nó luôn có một hoặc nhiều trình chủ. Trình chủ giúp điều khiển mọi hoạt động và hiển thị của ứng dụng Web. Hay có thể gọi nó là bộ não của hệ thống Client – Server. Thực hiện kiểm thử trình chủ sẽ phức tạp hơn rất nhiều so với các kiểm thử khác. Bởi vì các kiểm thử khác bạn có thể tận dụng giao diện của trình khách. Còn trình chủ không tận dụng được giao diện của trình khách.
Kết nối
Khi thực hiện kiểm thử hệ thống ứng dụng Web có hai yếu tố làm cho việc kiểm thử thất bại đó là: (1) Các hành động không đến được đích, (2) Hoạt động đến được đích nhưng không đúng yêu cầu. Và hoạt động hay giao tác không đến được đích(trình chủ) thì cũng sẽ có hai yếu tố cần được quan tâm: (1) Do việc kết nối, (2) Đích hay trình chủ có vấn đề.
Trạng thái duy trì
Trạng thái (state) là quan hệ giữa trình chủ và trình khách trong đó các thông tin được cung cấp từ các giao tác trước được lưu trữ sẵn cho trình chủ. Hiện này phổ biến nhất được sử dụng đó là Cookies, ID của phiên làm việc (Session ID), hoặc địa chỉ IP, và cả đăng nhập (login) của người dùng để thiết lập trạng thái cho ứng dụng đó. Ví dụ, khi bạn truy cập vào một trang Web thông tin về chứng khoán, email, việc đầu tiên của bạn là đăng nhập vào hệ thống đó bằng tài khoản của bạn. Khi bạn đăng nhập thành công sẽ thiết lập trạng thái cho phiên làm việc đó. Các vấn đề liên quan đến trạng thái bao gồm:
- Thông tin bị mất: Các thông tin này bao gồm dữ liệu được cung cấp trong một màn hình hay một phiên làm việc trước đó.
- Dữ liệu trùng nhau: Ứng dụng sinh ra dữ liệu thế nào để xác định giao tác là duy nhất?
- Trình khách bị mất: Trình khách sau khi gửi yêu cầu sẽ đợi trình chủ trong bao lâu?
- Toàn vẹn dữ liệu: Điều này thể hiện được khi bạn thực hiện gửi một yêu cầu từ trình khách và khi đang thực hiện thì bị mất kết nối, lúc này dữ liệu sẽ xảy ra vấn đề gì?
Nguồn tài nguyên
Nguồn tài nguyên (resouce) là những gì ứng dụng sử dụng để thực thi một câu lệnh. Các nguồn tài nguyên bao gồm: RAM, đĩa cứng, băng thông, kết nối,…để thực hiện các công việc.
Sao lưu và phục hồi
Dữ liệu trên máy chủ thường được sao lưu theo một lịch trình đã được thiết lập trước. Việc sao lưu dữ liệu của hệ thống tại một thời điểm nhất định phục vụ cho việc phục hồi hệ thống trở lại trạng thái lúc sao lưu. Trong các ứng dụng Web việc sao lưu trình chủ Web hay cơ sở dữ liệu và phục hồi tại thời điểm là rất quan trọng. Thực hiện việc kiểm tra sao lưu phục hồi cần phải kiểm tra các vấn đề:
- Các hướng dẫn cài đặt và hướng dẫn hoạt động liên quan đến tiến trình sao lưu và khôi phục, như tên người và thư mục cần được sao lưu.
- Trong hệ thống hoạt động liên tục thì việc phục hồi lại thời điểm sao lưu được thực hiện có thể không có ý nghĩa.
d) Kiểm thử Cơ sở dữ liệu
Tất cả các ứng dụng Web truy cập cơ sở dữ liệu đều yêu cầu trình chủ cơ sở dữ liệu, để có thể thiết kế các trường hợp kiểm thử cơ sở dữ liệu và phân tích các lỗi liên quan đến cơ sở dữ liệu, các kiểm thử viên cần hiểu được các khái niệm liên quan đến cơ sở dữ liệu, cách các thành phần của trình chủ Web giao tiếp với các thành phần cơ sở dữ liệu.
Có hai phương pháp phổ biến để đáp ứng được yêu cầu người dùng đó là:(1) xử lý giao dịch trực tuyến, (2) xử lý phân tích trực tuyến. Xử lý giao dịch trực tuyến là xử lý hướng giao dịch, mục đích là hỗ trợ người dùng cần truy cập hệ thống để thực hiện việc mua bán hoặc các loại giao dịch khác.
Mối quan hệ giữa cơ sở dữ liệu
Cơ sở dữ liệu quan hệ tổ chức dữ liệu vào trong các bảng, từng dòng dữ liệu bản ghi (record) và các trường (field). Cung cấp cho việc lưu trữ và truy cập dữ liệu dựa trên yêu cầu phía trình khách. Các dịch vụ cơ bản bao gồm: thêm, xóa, sửa, lọc và sắp xếp các bảng và dòng dữ liệu. Trình chủ cơ sở dữ liệu bao gồm hai thành phần:
- Ngôn ngữ truy vấn có cấu trúc (SQL – Structured Query Language): Cung cấp các câu lệnh truy vấn được sử dụng để ghi, đọc và thao tác dữ liệu trong các định dạng bảng.
- Dữ liệu vật lý: Được lưu trữ trong các hệ thống quan trị cơ sở dữ liệu cung cấp các sơ đồ truy cập lưu trữ hiệu quả.
Mối quan hệ giữa trình khách và SQL
Các ứng dụng phía trình khách có thể được xây dựng từ một trong nhiều ngôn ngữ lập trình khác nhau. Hiện này chúng ta hay sử dụng ODBC(Open Database Connectivity) được sử dụng để truy cập dữ liệu trong một môi trường không đồng nhất gồm các hệ quản trị cơ sở dữ liệu quan hệ và phi quan hệ. ODBC như là một giao thức truyền dữ liệu được sử dụng để di chuyển dữ liệu giữa các ứng dụng Web và cá trình chủ cơ sở dữ liệu. Hình 2.19[5] mô tả mối quan hệ trình khách và SQL.
Hình 2.14. Các lớp ODBC.
Các phương pháp kiểm thử Cơ sở dữ liệu
Kiểm thử cơ sở dữ liệu và việc thực hiện kiểm thử dữ liệu hiện tại và tính toàn vẹn của cơ sở dữ liệu, nhằm đảm bảo dữ liệu không bị lỗi và các sơ đồ dữ liệu là đúng đắn. Kiểm thử cơ sở dữ liệu thường sử dụng Script SQL để kiểm thử, không phải tất cả cơ sở dữ liệu là cơ sở dữ liệu SQL. Nhưng hầu hết đều hỗ trợ SQL, cũng như hầu hết là các ứng dụng Web.
Các thao tác cài đặt cơ sở dữ liệu bao gồm các hoạt động:
- Kết nối trình chủ cơ sở dữ liệu.
- Tạo cơ sở dữ liệu mới.
- Tạo các bảng, các trường, giá trị mặc định.
- Biên dịch các thủ tục lưu trữ và các trigger.