FUNCTIONAL TESTING LÀ GÌ? PHÂN BIỆT FUNCTIONAL VÀ NON-FUNCTIONAL TESTING
26/11/2021 986

Functional Testing (Kiểm thử chức năng) và Non-Functional Testing (Kiểm thử phi chức năng) là các quy trình đảm bảo chất lượng nằm trong lĩnh vực Software Testing (Kiểm thử phần mềm). Vậy Functional Testing là gì? Non-Functional Testing là gì? Functional Testing và Non-Functional Testing có gì khác biệt? Hãy cùng CO-WELL Asia tìm hiểu trong bài viết dưới đây.
A. Functional Testing
1. Functional Testing là gì?
Trước hết, cùng tìm hiểu định nghĩa Functional Testing là gì?
g là một loại kiểm thử hộp đen, tập trung vào việc xác minh hệ thống hoạt động theo đúng các yêu cầu nghiệp vụ, thông qua một tài liệu gọi là đặc tả yêu cầu (Requirement Specification) được phát triển nhằm hướng dẫn kiểm tra ứng dụng chính xác hơn.
Functional Testing về cơ bản 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 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.
Nhờ có Functional Testing, có thể tránh được những việc kiểm thử dư thừa các chức năng không cần thiết. Đồng thời giúp ngăn chặn nhiều lỗi xuất hiện cùng một thời điểm.
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.
2. 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. Dưới đây là 8 loại kiểm thử chức năng thường được sử dụng nhất:
- Unit testing (Kiểm thử đơn vị)
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
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. Có thể nói, 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.
Functional Testing (Kiểm thử chức năng) 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
- Integration testing (Kiểm thử tích hợp)
(Kiểm thử tích hợp) 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)
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)
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.
B. Non-Functional Testing
Theo thuật ngữ phần mềm, khi một ứng dụng hoạt động theo mong đợi của người dùng, trơn tru và hiệu quả trong bất kỳ điều kiện nào, thì ứng dụng đó được coi là một ứng dụng đáng tin cậy. Dựa trên các khía cạnh này của chất lượng, việc kiểm tra theo các thông số này là rất quan trọng. Loại kiểm tra này được gọi là Non-Functional Testing (Kiểm thử phi chức năng).
Phần thông tin phía trên đã giúp bạn đã hiểu Functional Testing là gì và có vai trò vô cùng quan trọng trong việc xác nhận chất lượng và chức năng của phần mềm đã đạt yêu cầu hay chưa, thì Non-Functional Testing (Kiểm thử phi chức năng) cung cấp thông tin quan trọng về độ an toàn, khả năng phục vụ và độ tin cậy của hệ thống.
Hoạt động kiểm thử phi chức năng là sự bổ sung hiệu quả cho hoạt động kiểm thử chức năng vì nó cung cấp các chỉ số, các thông tin quan trọng giúp bạn có một phần mềm mượt mà, đem tới trải nghiệm hài lòng nhất đến cho người dùng cuối cùng.
Non-Functional Testing (Kiểm thử phi chức năng) là sự bổ sung hiệu quả cho hoạt động kiểm thử chức năng
Loại thử nghiệm này kiểm tra cách sản phẩm phần mềm hoạt động và bao gồm (nhưng không giới hạn ở) các loại sau:
Stability tests (Kiểm thử độ ổn định):
Đánh giá phần mềm có thể liên tục hoạt động tốt trong hoặc ngay trên khoảng thời gian có thể chấp nhận hay không. Mục đích của kiểm thử độ ổn định là đảm bảo rằng hệ thống có thể xử lý sự gia tăng dự kiến về lưu lượng người dùng, khối lượng dữ liệu, tần suất số lượng giao dịch, v.v.
Reliability Tests (Kiểm thử độ tin cậy)
Kiểm thử độ tin cậy kiểm tra xem phần mềm có thể duy trì một mức hiệu suất nhất định với các điều kiện nhất định và trong một khoảng thời gian nhất định hay không. Mục đích của kiểm tra độ tin cậy là để đảm bảo rằng sản phẩm phần mềm không có lỗi và đủ tin cậy cho mục đích mong đợi của nó.
Robustness Tests (Kiểm thử độ bền)
Loại thử nghiệm này được thiết kế để chứng minh rằng hệ thống hoạt động chính xác trong mọi điều kiện, ngay cả trong các sự kiện bất ngờ.
Stress tests (Kiểm thử áp lực)
Stress test có mục đích giám sát hành vi của hệ thống trong các trường hợp bất thường, điều này xác định giới hạn mà phần mềm sẽ bị phá vỡ. Kiểm thử áp lực được sử dụng để phân tích những gì sẽ xảy ra khi một hệ thống bị lỗi, với mục đích đảm bảo rằng phần mềm có thể phục hồi, ổn định và đáng tin cậy.
Performance Tests (Kiểm tra hiệu năng)
Kiểm thử hiệu suất được tiến hành để xác định cách phần mềm hoạt động về khả năng đáp ứng và tốc độ xử lý trong một khối lượng công việc. Các bài kiểm tra này tìm ra các vấn đề trong thiết kế phần mềm và hiệu suất kiến trúc.
Ví dụ tiêu biểu cho Non-Functional Testing như: kiểm tra có bao người truy cập đồng thời vào một ứng dụng?
Load Tests (Kiểm thử khả năng chịu tải)
Load Test là quá trình mô phỏng độ chịu tải thực tế của bất kỳ ứng dụng hoặc trang web nào. Nó kiểm thử cách ứng dụng hoạt động trong điều kiện hoạt động bình thường và hoạt động hiệu suất cao. Điều này được thực hiện để xác định mức độ công việc mà phần mềm có thể xử lý trước khi hiệu suất bị ảnh hưởng.
Usability Tests (Kiểm thử tính khả dụng)
Đây là kỹ thuật được thiết kế để xác minh xem người dùng cuối có thể dễ dàng sử dụng sản phẩm phần mềm hay không. Thử nghiệm này được khuyến nghị trong giai đoạn thiết kế ban đầu của SDLC, mang lại khả năng hiển thị rõ ràng hơn trên sự mong đợi của người dùng.
Maintainability Tests (Kiểm thử khả năng bảo trì)
Các bài kiểm tra khả năng bảo trì được thực hiện để đánh giá khả năng của phần mềm trong việc đáp ứng các yêu cầu của người dùng và khi được thay đổi thì không gặp bất kỳ vấn đề gì.
Portability Tests (Kiểm tra tính tương thích)
Các bài kiểm tra tính di động đo lường mức độ dễ dàng chuyển phần mềm sang môi trường khác, chẳng hạn như mức độ dễ dàng chuyển ứng dụng di động sang các hệ điều hành khác nhau hoặc các thiết bị khác nhau.
C. Phân biệt Functional và Non-Functional Testing
Sau khi đã tìm hiểu Functional Testing là gì? Non-Functional Testing là gì? Xin mời các bạn cùng tìm hiểu sự khác nhau của 2 loại kiểm thử này.
Cả Functional Testing (Kiểm thử chức năng) và Non – Functional Testing (Kiểm thử phi chức năng) trong phần mềm đều được thiết kế để cung cấp sản phẩm phù hợp với nhu cầu của khách hàng. Sự khác biệt chính giữa kiểm thử chức năng và kiểm thử phi chức năng là kiểm thử chức năng được chạy để đảm bảo rằng phần mềm đáp ứng các yêu cầu cụ thể, trong khi kiểm thử phi chức năng tập trung vào việc đảm bảo hệ thống hoạt động tốt.
Functional Testing thường được thực hiện nhằm phát hiện và loại bỏ các lỗi trong phần mềm để nó có thể đáp ứng các yêu cầu nghiệp vụ một cách hoàn hảo. Trái ngược, các loại kiểm thử phần mềm phi chức năng quan tâm đến trải nghiệm và hành vi của người dùng nhưng không liên quan đến việc “tìm lỗi”.
Sự khác biệt quan trọng cần đề cập đến là các tiêu chí dựa trên Functional Testing và Non – Functional Testing. Trong kiểm thử chức năng, cả hoạt động hợp lệ và không hợp lệ đều được thực hiện để kiểm tra hành vi của phần mềm cả trong điều kiện mong muốn và không mong muốn. Mặt khác, trong khi chạy các kiểu kiểm thử phần mềm phi chức năng, bạn cần phải xem xét các tham số bị bỏ qua khi thực hiện kiểm tra chức năng tích cực (Positive) và tiêu cực (Negative Test). Còn một sự phân biệt nữa giữa hai loại thử nghiệm – các thử nghiệm chức năng được thực hiện trước các thử nghiệm phi chức năng.
Functional Testing và Non-Functional Testing có gì khác biệt?
Những khác biệt chính giữa Functional Testing và Non – Functional Testing
- Kiểm thử chức năng xác minh từng chức năng/tính năng của phần mềm trong khi kiểm thử phi chức năng xác minh các khía cạnh phi chức năng như hiệu suất, khả năng sử dụng, độ tin cậy, v.v.
- Kiểm thử chức năng có thể được thực hiện thủ công trong khi kiểm thử phi chức năng khó thực hiện bằng tay.
- Kiểm thử chức năng dựa trên yêu cầu của khách hàng trong khi kiểm thử phi chức năng dựa trên kỳ vọng của khách hàng.
- Kiểm thử chức năng có mục tiêu xác thực các hành động phần mềm trong khi kiểm thử phi chức năng có mục tiêu xác nhận hiệu suất của phần mềm.
Ví dụ: bạn có thể kiểm tra xem việc nhập tên người dùng và mật khẩu có cho phép bạn đăng nhập vào tài khoản trên trang web hay không. Và với Non-functional Testing, bạn xác minh xem bằng cách nhập cùng một dữ liệu, bạn có thể đăng nhập vào tài khoản của mình trong vòng 2 giây hay không.
- Kiểm thử chức năng mô tả những gì sản phẩm làm trong khi Kiểm thử phi chức năng mô tả cách sản phẩm hoạt động.
- Kiểm thử chức năng được thực hiện trước khi kiểm thử phi chức năng.
Phân biệt cụ thể Functional và Non-Functional Testing
Functional Testing (Kiểm thử chức năng) | Non-Functional Testing (Kiểm thử phi chức năng) |
Là kiểm tra các hoạt động (operations) và hành động (actions) của một Ứng dụng | Là kiểm tra các hành vi (behavior) của 1 Ứng dụng |
Rất dễ dàng để xác định các yêu cầu chức năng và tiến hành chính xác | Rất khó để xác định các yêu cầu cho kiểm thử phi chức năng. Bởi vậy khó xác định được hiệu quả bằng một con số cố định cụ thể. |
Được thực hiện bằng cách sử dụng đặc tả chức năng | Đươc thực hiện bởi các thông số kỹ thuật về hiệu suất |
Là kiểm tra xem kết quả thực tế có hoạt động theo kết quả mong đợi hay không | Là kiểm tra thời gian đáp ứng (response time) và tốc độ (speed) của phần mềm trong các điều kiện cụ thể. |
Được thực hiện thủ công. (Manual test) Ví dụ: Phương pháp kiểm tra hộp đen. (Black box testing) | Được thực hiện thông qua các công cụ tự động để xác định các chỉ số Ví dụ: Loadrunner, Jmeter… |
Kiểm tra theo yêu cầu của khách hàng. | Kiểm tra theo mong đợi của khách hàng. |
Phản hồi của khách hàng giúp giảm các yếu tố rủi ro của sản phẩm trong quá trình sử dụng. | Phản hồi của khách hàng có giá trị hơn đối với thử nghiệm phi chức năng vì nó giúp cải thiện và cho phép người thử nghiệm biết được sự mong đợi của khách hàng, từ đó đáp ứng tốt mong đợi khách hàng hơn. |
Giúp xác thực hành vi của ứng dụng. | Giúp xác nhận hiệu suất của ứng dụng. |
Kiểm thử (thực hiện test) các chức năng của phần mềm. | Kiểm tra hiệu năng (performance) của chức năng của phần mềm. |
Bao gồm các loại Testing sau: · Unit testing · Smoke testing · User Acceptance · Integration Testing · Regression testing · Localization · Globalization · Interoperability | Bao gồm các loại Testing sau: · Performance Testing · Volume Testing · Scalability · Usability Testing · Load Testing · Stress Testing · Compliance Testing · Portability Testing · Disaster Recover Testing |
D. Kết luận
Trên đây là một số kiến thức về Functional Testing là gì cũng như về Non-Functional Testing và cách phân biệt 2 loại kiểm thử này.
CO-WELL Asia tự hào là Global Partner thứ 8 trên thế giới – hạng parter cao nhất của tổ chức ISTQB, đồng thời có nhiều năm kinh nghiệm phát triển dịch vụ kiểm thử phần mềm IT Outsource nhằm giải quyết những vướng mắc của các doanh nghiệp. Nếu bạn có bất kỳ câu hỏi nào về dịch vụ kiểm thử phần mềm, đừng ngần ngại liên hệ ngay với CO-WELL Asia tại ĐÂY để được tư vấn và báo giá nhé!
Nguồn tham khảo:
Functional and Non-functional Testing: The Basics You Should Know