Kiểm thử chức năng (Functional Testing) là một trong các quy trình đảm bảo chất lượng của lĩnh vực kiểm thử phần mềm. Đây là một loại kiểm thử hộp đen (black box testing
), tức là các trường hợp nó cần xét đến sẽ dựa vào đặc tả của ứng dụng/phần mềm hoặc hệ thống đang thử nghiệm. Các chức năng sẽ được kiểm tra bằng cách nhập các giá trị đầu vào và sau đó sẽ kiểm tra, đánh giá các kết quả đầu ra mà không cần quan tâm đến các cấu trúc hay cài đặt bên trong của ứng dụng.
Kiểm thử chức năng là một quy trình so sánh sự khác biệt giữa đặc tả bên ngoài của phần mềm với các chức năng thực tế mà phần mềm cung cấp. Các đặc tả này phần nhiều sẽ dựa vào góc nhìn của người sử dụng về phần mềm, không liên quan đến các công nghệ sử dụng hay các thiết lập bên trong nó.Người sử dụng có thể là bất cứ ai, nếu họ tiếp xúc với phần mềm khi nó là thành phẩm có thể sử dụng được.
Trong kiểm thử phần mềm có nhiều quy trình, mỗi cái lại có một nhiệm vụ khác nhau.
Unit testing
) sẽ kiểm tra sự khác biệt giữa đặc tả giao tiếp của đơn vị với thực tế đơn vị này cung cấp cho phần mềm.Kiểm thử chức năng cũng đem lại khá nhiều lợi ích, chẳng hạn như tránh được việc kiểm thử dư thừa với các chức năng không cần thiết, hay ngăn chặn sự đa dạng lỗi tại cùng một thời điểm.
Thông thường kiểm thử chức năng sẽ tiến hành theo 6 bước sau:
test case
)Nhìn chung, khi kiểm thử chức năng, giống như những loại kiểm thử khác, chúng ta sẽ cần làm từ đơn giản đến phức tạp.
user navigation testing
)Trong kỹ thuật này, chúng ta sẽ cần kiểm tra một số thành phần , các liên kết giữa màn hình này tới màn hình khác để đảm bảo cho sự hoạt động liên tục của nghiệp vụ đang thực hiện. Có thể kể đến 1 số thành phần như:
Hệ thống đăng nhập, đăng xuất
Hệ thống thanh điều hướng (navigation bar
, sidebar
, menubar
)
toolbar
)Kiểm thử khả năng điều hướng tập trung trên 2 vấn đề
transaction screen testing
)Thông thường sẽ là các form nhập liệu, hoặc một số các button chức năng, các options lựa chọn. Có 2 loại thường thấy:
Với mỗi loại ô nhập liệu, hay các button, options, người kiểm thử cần xác định các trường hợp thao tác trên màn hình theo các yêu cầu đặc tả, tài liệu người dùng hay tài liệu quản trị viên tương ứng.
Nếu kết quả hiển thị ngay trên màn hình thao tác hiện tại thì ta có thể dựa vào bộ dữ liệu đầu vào và đầu ra dự kiến để kiểm tra nó bằng phương pháp kiểm thử hộp đen. Tương tự nếu kết quả được hiển thị ở trang khác nếu là click vào các button.
transaction flow testing
)Với kỹ thuật này, chúng ta cần thực hiện liền mạch một số thao tác qua nhiều bước với nhiều màn hình khác nhau để đánh giá xem có phù hợp với luồng nghiệp vụ không.
Chẳng hạn khi chúng ta muốn mở một khóa học trên hệ thống E-learning
nào đó, ta cần làm các bước sau:
Chúng ta cần xác định 2 trường hợp
report screen testing
)Không như màn hình thao tác ở phần 5.2, màn hình báo cáo sẽ không yêu cầu phải nhập liệu. Ở đây cái chúng ta cần kiểm tra là cách hiển thị hay tìm kiếm dữ liệu.
Có rất nhiều cách người dùng có thể đặc tả các dữ liệu cần tìm (như bộ lọc hay nhập các điều kiện tìm kiếm) hoặc cách mà dữ liệu được hiển thị (danh sách, bảng biểu, biểu đồ ....)
Chúng ta cần căn cứ vào đặc tả của ứng dụng để phân tích các trường hợp kiểm thử (test case
), có thể có một số trường hợp như lựa chọn giá trị không phù hợp cho bộ lọc (VD: ngày bắt đầu lớn hay ngày kết thúc) hay dữ liệu không được hiển thị đúng (VD: bảng biểu không có tên các cột)
report flow testing
)Ở đây chúng ta cần dựa vào tài liệu đặc tả để biết có bao nhiêu loại thể hiện báo cáo được hỗ trợ bởi phần mềm. Một phần mềm bình thường sẽ có thể hiển thị báo cáo lên màn hình, hoặc là in ra file, in ra giấy bằng máy in. Chúng ta cần đảm bảo có sự thống nhất về mặt nội dung và bố cục giữa tất cả các tài liệu in. Bên cạnh đó cũng cần đảm bảo đủ các phương thức in theo đặc tả. Nhiều lúc còn cần để ý đến định dạng font chữ, hoặc màu sắc nếu là in màu ....
Kiểm thử chức năng và phi chức năng được so sánh như trong bảng sau
Kiểm thử chức năng | Kiểm thử phi chức năng |
---|---|
Được thực hiện bằng cách sử dụng đặc tả chức năng do khách hàng cung cấp và xác minh hệ thống theo các yêu cầu chức năng | Dùng để kiểm tra hiệu năng (performance testing ), độ tin cậy (reliability ), khả năng mở rộng (scalability ) và các nghiệp vụ phi chức năng khác của hệ thống |
Được thực hiện đầu tiên | Nên được thực hiện ngay sau khi kiểm thử chức năng kết thúc |
Có thể sử dụng tool để kiểm thử hoặc kiểm thử bằng tay (manual testing ) |
Khi sử dụng tool sẽ hiệu quả hơn |
Đầu vào là các yêu cầu nghiệp vụ theo các tài liệu đặc tả | Đầu vào là các thông số như tốc độ tải, độ bảo mật cũng như khả năng mở rộng |
Mô tả những thứ sản phẩm phần mềm sẽ làm | Mô tả sản phẩm phần mềm hoạt động như thế nào là tốt |
Dễ dàng thực hiện kiểm thử bằng tay (manual testing ) |
Khó khăn khi kiểm thử bằng tay (manual testing ) |
Các loại kiểm thử chức năng thường gặp: | Các loại kiểm thử phi chức năng thường gặp: |
* Unit Testing (Kiểm thử đơn vị) |
* Performance Testing (Kiểm thử hiệu năng) |
* Smoke Testing |
* Load Testing (Kiểm thử tải) |
* Sanity Testing |
* Volume Testing (Kiểm thử khối lượng) |
* Integration Testing (Kiểm thử tích hợp) |
* Stress Testing |
* White Box Testing (Kiểm thử hộp trắng) |
* Security Testing (Kiểm thử bảo mật) |
* Black Box Testing (Kiểm thử hôp đen) |
* Installation Testing (Kiểm thử cài đặt) |
* User Acceptance Testing (Kiểm thử chấp nhận) |
* Penetration Testing (Kiểm thử xâm nhập) |
* Regression Testing (Kiểm thử hồi quy) |
* Compatibility Testing (Kiểm thử tương thích) |
* Migration Testing |
Trên đây chỉ là một vài tìm hiểu và viết lại theo cách hiểu của mình về kiểm thử chức năng trong kiểm thử phần mềm. Cảm ơn mọi người đã đọc ^^.
Anh Tester
Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu