Hay còn gọi là kiểm thử chức năng, là kỹ thuật kiểm tra phần mềm dựa trên từng chức năng để đảm bảo hệ thống đáp ứng đúng yêu cầu đã đặt ra. Đây là dạng kiểm thử hộp đen, trong đó tester không cần quan tâm đến mã nguồn mà chỉ so sánh chức năng thực tế với đặc tả bên ngoài. Quá trình này được thực hiện bằng cách nhập dữ liệu đầu vào và so sánh kết quả đầu ra với mong đợi. Nếu có sai lệch, đó sẽ là lỗi cần chuyển cho bộ phận phát triển để sửa. Mục tiêu là phát hiện lỗi, tránh trùng lặp hoặc kiểm thử dư thừa các chức năng không cần thiết.
Khi thực hiện kiểm thử chức năng, Tester sẽ sử dụng một trong các kỹ thuật thử nghiệm như:
- Kiểm thử điều hướng người dùng (User Navigation Testing)
- Kiểm thử thao tác trên màn hình (Transaction Screen Testing)
- Kiểm thử luồng thực hiện (Transaction Flow Testing)
- Kiểm thử màn hình báo cáo (Report Screen Testing)
- Kiểm thử luồng báo cáo (Report Flow Testing)
Mục đích của Functional Testing
- Xác minh rằng các chức năng chính của ứng dụng như đăng nhập, tìm kiếm, giỏ hàng, thanh toán… hoạt động chính xác.
- Đảm bảo rằng đầu ra của hệ thống đúng với dữ liệu đầu vào.
- Kiểm tra xem các chức năng có tuân thủ đúng các yêu cầu và quy tắc nghiệp vụ đã được xác định trước đó hay không.
- Tìm kiếm và khắc phục các lỗi liên quan đến chức năng trước khi sản phẩm đến tay người dùng.
Các loại Functional Testing
Vì Functional Testing là một phương pháp kiểm tra các thông số khác nhau của một sản phẩm phần mềm, nên nó được thực hiện trong nhiều chức năng khác nhau. Đây là 8 loại kiểm thử chức năng thường được sử dụng:
Unit testing (Kiểm thử đơn vị)
- Là cấp độ kiểm thử đầu tiên, thường được thực hiện bởi các nhà phát triển. Mục tiêu của kiểm thử đơn vị là cô lập một phần code và xác minh tính chính xác của đơn vị đó. Quá trình này đảm bảo rằng các thành phần riêng lẻ của một phần mềm hoạt động và phản ứng như mong đợi. Hoạt động kiểm thử đơn vị có thể được thực hiện theo cách thủ công, nhưng việc tự động hóa quy trình sẽ tăng tốc các chu kỳ triển khai và mở rộng phạm vi kiểm tra.
Smoke Testing
- Là một loại kiểm thử phần mềm được thực hiện sau khi có một bản build mới, để đảm bảo rằng các chức năng chính, quan trọng của phần mềm vẫn hoạt động bình thường. Công việc này được thực hiện để phát hiện các vấn đề nghiêm trọng sớm nhất có thể, trong trường hợp phát hiện vấn đề, bản build đó sẽ bị từ chối, và không được bàn giao cho giai đoạn kiểm thử tiếp theo, do đó sẽ giúp tránh lãng phí thời gian cho cả người kiểm thử và phát triển. Trong smoke testing, các test case được chọn sẽ bao phủ được hầu hết các tính năng, thành phần chính quan trọng của sản phẩm phần mềm. Điều này cho thấy, Smoke Testing chính là loại kiểm tra tổng quát ban đầu.
Sanity Testing
- Được thực hiện sau khi nhận được bản build, ở bản build này một số chức năng của phần mềm được chỉnh sửa, cập nhật do yêu cầu hoặc một số lỗi nào đó đã được sửa, việc này để kiểm tra nhanh các trạng thái hoặc thay đổi đó có ảnh hưởng đến các tính năng khác hay không, có đáp ứng như mong đợi hay không? Nếu các vấn đề được tìm thấy, bản build sẽ không được đưa tới giai đoạn kiểm thử chi tiết hơn tiếp theo, giúp giảm thiểu thời gian và các chi phí khác.
Interface testing (Kiểm thử giao diện)
- Được dùng để kiểm thử tích hợp khi thực hiện 2 hoặc nhiều chức năng, thành phần của phần. Các chức năng đó sẽ được tích hợp để tạo thành một hệ thống hoàn chỉnh. Tóm lại, Integration Testing sẽ giúp kiểm tra hoạt động đúng của phần mềm khi các thành phần được hợp nhất với nhau.
Integration testing (Kiểm thử tích hợp)
- Được thiết kế để xác định xem các thành phần phần mềm riêng lẻ có hoạt động bình thường hay không khi chúng được kết nối với nhau. Kiểm thử tích hợp đảm bảo rằng mọi kết nối giữa các đơn vị khác nhau chạy trơn tru. Loại thử nghiệm này cố gắng phát hiện ra các loại lỗi khác nhau như sự không tương thích trong thông báo hoặc định dạng dữ liệu cũng như các tham số đầu vào hoặc đầu ra không hợp lệ có thể đột ngột làm gián đoạn một chức năng.
System testing (Kiểm thử hệ thống)
- Là một phương pháp kiểm thử hộp đen để đánh giá một sản phẩm phần mềm hoàn chỉnh và tích hợp. Mục tiêu của kiểm thử hệ thống là xác minh sự tuân thủ của hệ thống với các yêu cầu cụ thể. Loại kiểm tra này thường được thực hiện bởi một nhóm kiểm thử khác với nhóm phát triển trước khi phần mềm được đưa lên môi trường Production.
Regression testing (Kiểm thử hồi quy)
- Dùng để kiểm tra hồi quy, được thực hiện khi bản build phần mềm đã fix những bugs trong lần test ban đầu. Nó cũng giúp xác minh xem các bug đã thực sự được fix hay chưa và kiểm tra toàn bộ phần mềm có hoạt động tốt với những thay đổi đó không.
Acceptance testing (Kiểm thử chấp nhận)
- Đôi khi được gọi là kiểm thử ứng dụng, là giai đoạn cuối cùng của kiểm thử chức năng phần mềm được thực hiện trước khi sản phẩm phần mềm được phát hành ra thị trường. Loại thử nghiệm để kiểm tra sự hài lòng của người dùng bằng cách xem xét tính dễ sử dụng của họ. Thông thường, người dùng cuối cùng hoặc khách hàng sẽ được cung cấp phiên bản dùng thử, đây là cách để kiểm tra xem phần mềm có hoạt động đúng theo yêu cầu thực tế hay không. Mục tiêu của quá trình này là đảm bảo rằng phần mềm đã sẵn sàng để phân phối và đáp ứng nhu cầu của người dùng cuối. Đổi lại, điều này yêu cầu sản phẩm phải được thử nghiệm trong “thế giới thực” – bởi người dùng cuối thông qua quá trình thử nghiệm beta.
Quy trình thực hiện Functional Testing
Bước 1: Nghiên cứu yêu cầu để xác định các chức năng cần kiểm thử ở phần mềm, ứng dụng.
Bước 2: Dựa trên các thông số kỹ thuật phần mềm, tester/QA sẽ tiến hành xác định bộ dữ liệu đầu vào.
Bước 3: Dựa trên thông số kỹ thuật phần mềm để xác định đầu ra cần đạt được.
Bước 4: Lên kịch bản test và bắt đầu triển khai kiểm thử trên các trường hợp cụ thể.
Bước 5: So sánh các kết quả đầu ra với kết quả thực tế để đánh giá xem khả năng phù hợp so với yêu cầu đã đề ra. Nếu đã đáp ứng được thì có thể dừng lại. Ngược lại, khi chức năng không đạt được như kỳ vọng, tester sẽ gửi báo cáo test cho bộ phận phát triển phần mềm để sửa lại cho phù hợp.