Functional testing và phi chức năng là cách tiếp cận phổ biến nhất để phân loại các loại kiểm thử phần mềm khác nhau. Hai loại này đề cập đến bản chất của quá trình thử nghiệm và chính xác những gì đang được thử nghiệm. Có hai điều cần biết về functional testing và phi chức năng nếu bạn chưa từng tìm hiểu sâu về hai loại kiểm thử này trước đây.
- Thứ nhất, sự phân chia giữa functional testing và phi chức năng không cố định. Đối với một số loại kiểm thử, việc phân loại chúng không phải là điều dễ dàng.
- Thứ hai, cả functional testing và phi chức năng đều cần thiết cho sự thành công của dự án kiểm thử phần mềm của bạn, mặc dù theo những cách khác nhau.
Trong bài viết này, mình sẽ cùng bạn xem xét kỹ hơn Sự khác biệt giữa các yêu cầu chức năng và phi chức năng, Vị trí của hai loại kiểm thử này trong quy trình kiểm thử phần mềm, và Cách chúng ảnh hưởng đến chi phí kiểm thử. Nào, hãy cùng bắt đầu nhé!
Functional Testing Là Gì?
Functional testing – Kiểm thử chức năng là loại kiểm thử nhằm mục đích kiểm tra chức năng của một thành phần hoặc toàn bộ hệ thống. Nói một cách đơn giản, functional testing giúp chúng tôi đảm bảo rằng chức năng cụ thể của sản phẩm phần mềm đang hoạt động chính xác như dự định. Nếu chúng ta so sánh một sản phẩm phần mềm với một chiếc xe, yêu cầu chức năng sẽ là khả năng di chuyển từ điểm A đến điểm B. Nói cách khác, đây là điều mà sản phẩm được kỳ vọng sẽ hoạt động hoàn hảo mỗi khi bạn muốn sử dụng và lý do tại sao bạn lại sử dụng sản phẩm.
Non-functional Testing Là Gì?
Non-functional testing – Kiểm thử phi chức năng là loại kiểm thử liên quan đến các thành phần của hệ thống không liên quan đến chức năng của nó. Phạm vi của non-functional testing có thể là vô tận và phụ thuộc rất nhiều vào các chi tiết cụ thể của sản phẩm. Các yêu cầu phi chức năng liên quan nhiều hơn đến cách sản phẩm hoạt động cho người dùng cuối hơn là kết quả cuối cùng được mong đợi. Để tiếp tục ví dụ về ô tô bên trên, thì các yêu cầu phi chức năng có thể là bất kỳ thứ gì, từ tốc độ tối đa mà phương tiện có thể đạt được cho đến số bước cần thiết để tìm đài phát trên đài phát thanh ô tô.
Sự Khác Nhau Giữa Functional Testing và Non-Functional Testing
Một số sự khác nhau giữa functional testing và non-functional testing như sau:
Tiêu chí so sánh | Functional testing | Non-Functional testing |
---|---|---|
Mục đích | Mô tả xem sản phẩm làm được gì | Mô tả cách sản phẩm hoạt động như thế nào |
Trình tự thực hiện | Thực hiện trước non-functional testing | Thực hiện sau functional testing |
Cơ sở thực hiện | Dựa vào yêu cầu đặc tả của khách hàng | Dựa vào kỳ vọng của khách hàng về sản phẩm |
Phạm vi | Kiểm tra hành vi của ứng dụng | Kiểm tra hiệu suất của ứng dụng |
Yêu cầu đặc tả | Sử dụng tài liệu đặc tả chức năng | Sử dụng tài liệu đặc tả hiệu suất |
Kiểm thử thủ công | Dễ để tiến hành bằng kiểm thử thủ công | Rất khó để chạy thủ công non-functional testing |
Các loại test sử dụng | Unit Testing Smoke Testing User Acceptance Testing Integration Testing Regression Testing Localization Globalization Interoperability | Performance Testing Volume Testing Scalability Usability Testing Load Testing Compliance Testing Portability Testing Disaster Recovery Testing |
Ví dụ | Kiểm tra tính năng login | Dashboard nên được tải trong 2 giây |
Các Loại Kiểm Thử Dùng Cho Functional Testing và Non-functional Testing
Có rất nhiều loại functional testing và non-functional testing, và mỗi loại đều quan trọng theo đúng nghĩa của nó. Sẽ không thể nói rằng một số loại thử nghiệm quan trọng đối với một dự án hơn những loại khác bởi vì không có bộ thử nghiệm chung nào áp dụng cho mọi dự án. Tuy nhiên, có một số loại kiểm thử chức năng và phi chức năng được thực hiện đặc biệt thường xuyên và khi được thực hiện đúng sẽ có tác động đặc biệt đến chất lượng của sản phẩm cuối cùng. Dưới đây là một số loại thử nghiệm đó.
Các loại functional testing
Các kỹ thuật kiểm tra chức năng giúp nhóm QA hiểu liệu sản phẩm có phù hợp với các yêu cầu ban đầu do nhà phát triển đặt ra hay không. Có nhiều loại kiểm tra chức năng được thực hiện hàng ngày, nhưng đây là ba trong số những loại phổ biến nhất.
- UI testing – Kiểm tra giao diện người dùng: Trong hầu hết các trường hợp, giao diện người dùng đồ họa là cách duy nhất để người xem sản phẩm của bạn tương tác với nó. Giao diện bị lỗi là trở ngại nghiêm trọng ngăn người dùng truy cập một số tính năng nhất định của sản phẩm hoặc thậm chí không thể sử dụng sản phẩm hoàn toàn. Có hàng chục khía cạnh giao diện người dùng khác nhau cần được kiểm tra, từ xác thực chức năng đến chính tả.
- Unit testing – Kiểm thử đơn vị: Với sự trợ giúp của thử nghiệm đơn vị , kỹ sư QA có thể đạt được độ chính xác cao nhất có thể khi thử nghiệm một sản phẩm phần mềm mới được tạo hoặc cập nhật gần đây. Thử nghiệm đơn vị xử lý các đoạn mã nhỏ nhất. Kiểm thử đơn vị có thể được thực hiện thủ công để đảm bảo độ chính xác tối đa, hoặc kiểm thử tự động để đạt hiệu quả tối đa.
- Security testing – Kiểm tra độ bảo mật: Bảo mật trong một hệ thống phần mềm luôn quan trọng, nhưng tầm quan trọng của nó đã đạt đến mức cao nhất mọi thời đại khi bắt đầu đại dịch COVID-19. Với tỷ lệ đạt mức cao nhất mọi thời đại, cả về an toàn dữ liệu và lòng trung thành với thương hiệu, các công ty không thể chịu bất kỳ rủi ro bảo mật ở cấp độ nào. Có những công ty chuyên kiểm thử bảo mật, nhưng nó cũng có thể được thực hiện như một phần của gói functional testing.
Các loại Non-functional testing
Non-functional testing xử lý toàn bộ cách hệ thống hoạt động, chứ không phải các chức năng cụ thể mà nó chứa. Mọi khía cạnh phi chức năng của hệ thống đều quan trọng theo cách riêng của nó, nhưng cũng có một số loại non-functional testing phù hợp với bất kỳ dự án phần mềm nào:
- UX testing – Kiểm tra trải nghiệm người dùng: Loại thử nghiệm này giúp các nhà phát triển hiểu liệu sản phẩm có dễ vận hành đối với người dùng cuối hay không. Thử nghiệm UX thường được đề cập cùng với UI testing, nhưng chúng hoạt động ở các cấp độ khác nhau của câu chuyện người dùng. Mặc dù UI testing đảm bảo rằng tất cả các khía cạnh của giao diện đều ở đó và hoạt động bình thường. Nhưng thử nghiệm UX đảm bảo rằng tất cả chúng đều tạo ra hành trình thỏa mãn của người dùng.
- Performance testing – Kiểm thử hiệu năng: Kiểm thử hiệu năng vừa là một loại non-functional testing, nó phân tích kích thước ứng dụng, tốc độ và độ tin cậy của sản phẩm phần mềm, vừa là một nhóm các kiểm thức chức năng, có thể bao gồm stress testing, load testing, kiểm tra cấu hình, kiểm thử đột biến, kiểm tra khả năng mở rộng và một số loại thử nghiệm khác. Các kiểm thử này đảm bảo hiệu suất ổn định trong mọi trường hợp.
- Compatibility testing – Kiểm tra khả năng tương thích: Với sự đa dạng của các nền tảng mà sản phẩm phần mềm của bạn có thể được sử dụng trên đó, kiểm thử khả năng tương thích là một trong những loại non-functional testing cần thiết nhất để xem xét cho một dự án. Nhóm QA sẽ kiểm tra ứng dụng của bạn dựa trên các loại phần cứng, phần mềm, thiết bị di động, hệ điều hành và phiên bản, trình duyệt và mạng khác nhau của chúng để đảm bảo hiệu suất nhất quán trên tất cả.
Functional Testing và Non-functional Testing: Cái nào quan trọng hơn?
Nếu chúng ta xem xét vị trí của hai loại kiểm thử này trong quy trình kiểm thử, chúng ta sẽ thấy functional testing thường diễn ra sớm hơn non-functional testing. Và chúng ta biết rằng các lỗi được phát hiện sớm hơn thì càng tốn ít tài nguyên để sửa chúng. Ngoài ra, các lỗi chức năng thường dễ xác định hơn, đặc biệt là khi có đủ tài liệu để bắt đầu. Tất cả điều này làm cho thử nghiệm chức năng hiệu quả về chi phí.
Mặt khác, non-functional testing thường xảy ra ở giai đoạn cuối cùng của quá trình phát triển sản phẩm phần mềm hoặc đôi khi ngay cả sau khi phát hành. Tại thời điểm này, việc sửa lỗi tốn nhiều thời gian và tiền bạc hơn đáng kể. Hơn nữa, các lỗi không hoạt động thường khó phát hiện hơn vì chúng xử lý các khía cạnh tốt hơn trong hoạt động của sản phẩm phần mềm.
Tuy nhiên, bạn phải luôn nhớ rằng không nên xem non-functional testing là thứ yếu so với functional testing. Cả hai loại thử nghiệm này đều có tác động trực tiếp đến việc tiếp nhận sản phẩm phần mềm của bạn.