Sau khi các bạn đã hiểu được quá trình xây dựng và phát triển ra một phần mềm trải qua những pha nào. Trong bài học này tôi sẽ hướng dẫn các bạn hiểu về các giai đoạn trong kiểm thử phần mềm bao gồm:
Như các bạn đã biết Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định xem phần mềm đó có đúng với đặc tả không và thực hiện trong môi trường như mong đợi hay không nếu trong bối cảnh kiểm thử không bộc lộ ra lỗi.
Việc hiểu được các giai đoạn kiểm thử giúp các bạn khi thực hiện công việc liên quan sẽ hiểu rõ để đưa ra được cách thức kiểm thử, phát hiện lỗi hay.
1. Kiểm thử mức đơn vị (Unit Test)
- Kiểm thử đơn vị hay tiếng anh gọi là Unit Test là kiểm thử trên từng đơn vị nhỏ nhất của phần mềm mà chúng ta có thể thực hiện kiểm thử. Đó có thể là một hàm (function), một thủ tục (stored procedure),..
- Ở giai đoạn kiểm thử này nếu phát hiện lỗi, việc xác định nguyên nhân và khắc phục cũng tương đối dễ dàng vì chỉ khoanh vùng trong một đơn thể Unit đang kiểm tra.
- Một nguyên lý đúc kết từ thực tiễn: thời gian tốn cho Unit Test tiết kiệm hơn rất nhiều thời gian ở các mức kiểm tra sau đó. Bên canh đó chi phí cho việc kiểm tra và sửa lỗi cũng là thấp nhất.
Người thực hiện test đơn vị thường là lập trình viên. Các testcase trong giai đoạn này có thể giữ lại để tái sử dụng cho các dự án khác. -
2. Kiểm thử tích hợp(Integration Test)
- Unit riêng lẻ thì Integration Test kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng.
- Integration test kết hợp các thành phần của một ứng dụng và kiểm tra như một ứng dụng đã hoàn thành.
- Integration Test có 2 mục tiêu chính:
Phát hiện lỗi giao tiếp xảy ra giữa các Unit
Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là hoàn chỉnh hệ thống (system) để chuẩn bị cho kiểm tra ở mức hệ thống (System Test) - Tại sao nên tích hợp dần từng Unit ?
Một Unit khi được tích hợp vào một nhóm các Unit khác đã tích hợp trước đó thì lúc này, ta chỉ cần kiểm tra giao tiếp của Unit mới thêm vào với nhóm các Unit đã được tích hợp trước đó. Điều này làm cho số lượng kiểm tra sẽ giảm đi rất nhiều, sai sót sẽ giảm đáng kể.
Người thực hiện test tích hợp thường là lập trình viên -
3. Kiểm thử hệ thống(System test)
Mục đích System Test là kiểm tra thiết kế và toàn bộ hệ thống (sau khi tích hợp) có thỏa mãn yêu cầu đặt ra hay không?
Phải thực hiện Unit Test và Integration Test để bảo đảm mọi Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện System Test.
Đặc điểm kiểm tra hệ thống
Tốn rất nhiều công sức
Mất nhiều thời gian
Bởi vì trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và các yêu cầu khác liên quan đến chất lượng của toàn hệ thống.
Điểm khác nhau then chốt giữa Integration Test và System Test
System Test: chú trọng các hành vi và lỗi trên toàn hệ thống
Integration Test: chú trọng sự giao tiếp giữa các đơn thể (Unit) khi chúng làm việc cùng nhau.
Người thực hiện test hệ thống thường là kiểm thử viên. Một hoặc nhóm kiểm thử viên test hoàn toàn độc lập so với nhóm phát triển dự án.
4. Kiểm tra chấp nhận sản phẩm (Acceptance Test) hay còn gọi là kiểm thử nghiệm thu
Acceptance Test có ý nghĩa hết sức quan trọng. Giai đoạn này thường được khách hàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện) để kiểm tra xem sản phẩm thực hiện có đáp ứng được yêu cầu đặt ra của mình trước đó hay không.
Trong hầu hết mọi trường hợp, các phép kiểm tra của System Test và Acceptance Test gần như tương tự, nhưng bản chất và cách thức thực hiện lại rất khác biệt.
Thực tế cho thấy, nếu khách hàng không quan tâm và không tham gia vào quá trình phát triển phần mềm thì kết quả Acceptance Test sẽ sai lệch rất lớn, mặc dù phần mềm đã trải qua tất cả các kiểm tra trước đó.
Các bạn có thể xem chi tiết bài giảng về các giai đoạn kiểm thử phần mềm cũng như các loại kiểm thử qua video dưới đây: