Kiểm thử phần mềm là một khâu không thể thiếu khi phát triển bất kỳ hệ thống, website hay ứng dụng nào. Kiểm thử giúp đảm bảo hệ thống không xảy ra lỗi và vận hành đúng chức năng mong đợi ban đầu. Là một kiểm thử viên hay lập trình viên, bạn cũng nên nắm được các loại kiểm thử phần mềm phổ biến bởi mỗi loại lại phù hợp với mục đích riêng. Trong bài viết này, mình sẽ giới thiệu các loại kiểm thử phần mềm thông dụng nhất.
Kiểm thử thường được chia làm 2 loại: Kiểm thử thủ công (Manual testing) và kiểm thử tự động (Automation testing)
- Manual testing là việc thử nghiệm một phầm mềm hoàn toàn được làm bằng tay bởi người tester. Nó được thực hiện nhằm phát hiện lỗi trong phầm mềm đang được phát triển. Trong manual testing, tester sẽ thực hiện các trường hợp kiểm thử và tạo báo cáo kiểm thử hoàn toàn thủ công mà không có bất kỳ sự trợ giúp của công cụ tự động nào.
- Automation testing là phương pháp kiểm thử tự động. Người tester sẽ phải viết các kịch bản kiểm thử sau đó sử dụng các tool hỗ trợ để thực hiện kiểm thử, phương pháp này sẽ giúp việc kiểm thử hiệu quả và tốn ít thời gian hơn. Automation testing giúp chạy các kịch bản kiểm thử lặp lại nhiều lần và các task kiểm thử khác khó thực hiện bằng tay như performance testing.
Các loại kiểm thử phần mềm phổ biến
- Unit Testing (Kiểm thử đơn vị)
- là cấp độ kiểm thử thấp nhất trong các loại kiểm thử phần mềm.
- Một Unit là một thành phần nhỏ nhất mà ta có thể kiểm tra được như các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method).
- Hình thức kiểm thử này thường được áp dụng trong giai đoạn phát triển. Việc kiểm tra này đảm bảo rằng những đoạn code được implement bởi developer hoạt động hiểu quả.
- Unit Test thường được thực hiện bởi developer.
- Integration Testing (Kiểm thử tích hợp)
- Đúng như tên gọi của nó, việc kiểm thử tích hợp có tác dụng xác minh xem các mô-đun (modules) khác nhau của ứng dụng của bạn có hoạt động tốt cùng nhau. Ví dụ: kiểm thử sự tương tác với cơ sở dữ liệu hoặc đảm bảo rằng các microservices hoạt động cùng nhau như mong muốn. Việc thực hiện loại kiểm thử này tốn kém hơn vì chúng yêu cầu nhiều phần của ứng dụng được thiết lập và chạy cùng nhau.
- Functional Testing (Kiểm thử chức năng)
- Việc kiểm thử chức năng sẽ tập trung vào các yêu cầu nghiệp vụ của một ứng dụng. Đôi khi có sự nhầm lẫn giữa các kiểm thử tích hợp và kiểm thử chức năng. Vì cả hai hình thức kiểm thử này đều yêu cầu nhiều thành phần của hệ thống tương tác với nhau. Sự khác biệt là kiểm thử tích hợp có thể chỉ đơn giản xác minh rằng bạn có thể truy vấn cơ sở dữ liệu. Còn kiểm thử chức năng sẽ mong muốn nhận được một giá trị cụ thể từ cơ sở dữ liệu như được xác định bởi các yêu cầu sản phẩm.
- Regression Testing (Kiểm thử hồi quy)
- Kiểm thử hồi quy là một loại kiểm tra được sử dụng với mục đích xác minh những chức năng và trải nghiệm người dùng hiện có của sản phẩm không bị ảnh hưởng bởi sự thay đổi mã trong phần mềm. Điều này giúp đảm bảo khả năng hoạt động tốt của sản phẩm với những chức năng mới và sự thay đổi bất kỳ của những chức năng hiện có.
- Nếu Regression test phát hiện những thay đổi của chức năng mới làm ảnh hưởng đến chức năng cũ thì các lập trình viên ngay lập tức cần tiến hành sửa lỗi, thay đổi cấu hình, cải tiến sản phẩm và bổ sung thêm các tính năng mới cho sản phẩm.
- Smoke Testing (Kiểm thử khói)
- Kiểm thử khói là các bài kiểm tra cơ bản giúp kiểm tra chức năng cơ bản của ứng dụng. Mục tiêu của kiểm thử khói là đảm bảo rằng các tính năng chính của hệ thống của bạn đang hoạt động như mong đợi. Cách kiểm thử phần mềm này được thực hiện ngay sau khi một bản dựng (build) mới được thực hiện để quyết định xem bạn có thể thực hiện các hình thức kiểm thử đắt tiền hơn hay không. Kiểm thử khói cũng có thể diễn ra ngay sau khi triển khai để đảm bảo rằng ứng dụng đang chạy đúng cách trong môi trường mới được triển khai.
- System Test (Kiểm thử hệ thống)
- Kiểm thử hệ thống là một phương pháp theo dõi và đánh giá hành vi của sản phẩm hoặc hệ thống phần mềm hoàn chỉnh và đã được tích hợp đầy đủ, dựa vào đặc tả và các yêu cầu chức năng đã được xác định trước. Đó là giải pháp cho câu hỏi “Liệu hệ thống hoàn chỉnh có hoạt động đúng với yêu cầu hay không?”
- System test được thử nghiệm trong hộp đen, tức là chỉ có các tính năng làm việc bên ngoài của phần mềm được đánh giá trong quá trình thử nghiệm này. Nó không đòi hỏi bất kỳ kiến thức nào về coding, lập trình, thiết kế, v.v. và hoàn toàn dựa trên quan điểm của người dùng.
- Acceptance Testing (Kiểm thử chấp nhận)
- Kiểm thử chấp nhận là các kiểm tra chính thức được thực hiện để xác minh xem hệ thống có đáp ứng các yêu cầu nghiệp vụ của nó hay không. Chúng yêu cầu toàn bộ ứng dụng phải được thiết lập và chạy và tập trung vào việc tái tạo các hành vi của người dùng. Nhưng ta có thể tiến xa hơn, đó là đo lường hiệu suất của hệ thống và từ chối các thay đổi nếu các mục tiêu nhất định không được đáp ứng.
- End-to-end testing (Kiểm tra từ đầu đến cuối)
- Kiểm thử end-to-end tái tạo hành vi của người dùng với ứng dụng trong một môi trường ứng dụng hoàn chỉnh. Hình thức này giúp xác minh rằng các luồng người dùng (user flow) khác nhau hoạt động như mong đợi. Hành vi này có thể đơn giản như tải một trang web hoặc đăng nhập, hoặc các hành vi phức tạp hơn nhiều như: xác minh thông báo qua email, thanh toán trực tuyến, v.v. Việc kiểm thử đầu cuối rất hữu ích trong các loại kiểm thử phần mềm, nhưng cũng rất tốn kém để thực hiện và có thể khó duy trì khi chúng được tự động hóa. Bạn nên có một vài thử nghiệm đầu cuối quan trọng và dựa nhiều hơn vào các loại thử nghiệm cấp thấp hơn (kiểm thử đơn vị và tích hợp).
- Performance Testing (Kiểm thử hiệu suất)
- Cách kiểm thử này kiểm tra các hành vi của hệ thống khi nó đang phải chịu lượng tải (loading) lớn. Kiểm thử hiệu suất không mang tính chức năng và có thể có nhiều dạng khác nhau để hiểu độ tin cậy, tính ổn định và tính khả dụng của phần mềm. Ví dụ: kiểm thử quan sát thời gian phản hồi khi thực hiện một số lượng lớn yêu cầu hoặc xem hệ thống hoạt động như thế nào với một lượng lớn dữ liệu. Hình thức này về bản chất là khá tốn kém để thực hiện và chạy, nhưng lại có thể giúp bạn hiểu liệu các thay đổi mới có làm suy giảm hệ thống của bạn hay không.
Nguồn tham khảo:
https://co-well.vn/nhat-ky-cong-nghe/diem-ten-cac-loai-kiem-thu-phan-mem-pho-bien/