Unit Testing là gì? Ưu và nhược điểm

Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually scrutinized for proper operation. Software developers and sometimes QA staff complete unit tests during the development process.

Unit Testing là gì?

Unit testing là một loại kiểm thử phần mềm. Trong đó, các đơn vị (unit) hoặc thành phần riêng lẻ của phần mềm được kiểm thử. Mục đích của việc này là xác minh tính chính xác của mỗi đơn vị code.

Các dev thực hiện Unit Testing trong quá trình phát triển (giai đoạn viết code) ứng dụng. Unit Tests tách một phần code và xác minh tính đúng đắn của nó. Một đơn vị có thể là một chức năng (function point), tính năng (feature), hàm(method), phương thức (procedure), mô-đun, đối tượng riêng lẻ (object).

Trong SDLC, STLC, V Model, Unit testing là bước kiểm thử đầu tiên trước khi kiểm tra tích hợp. Unit testing là một kỹ thuật kiểm tra hộp trắng (WhiteBox) thường được thực hiện bởi lập trình viên.

Benefits

Ưu điểm

  • Unit test giúp sớm fix bugs trong vòng đời phát triển (development cycle) và tiết kiệm chi phí trong dài hạn, nhất là đối với sản phẩm phần mềm thuộc nhóm được nâng cấp, mở rộng liên tục, thí dụ các phần mềm trên nền tảng Cloud, SaaS....
  • Các unit test giúp các Dev hiểu rõ hơn về code cũng như nhận diện sớm về các lỗ hổng an toàn.
  • Các unit test tốt đóng vai trò như liều thuốc kháng sinh cho sản phẩm sau khi đi vào vận hành.
  • Các unit test có độ phủ lớn giúp nhà sản xuất phần mềm tự tin bàn giao sản phẩm chất lượng.
  • Unit test giúp sử dụng lại code. Di chuyển cả code và test của bạn sang dự án mới. Chỉnh sửa code cho đến khi các test chạy lại.

Limitations

Nhược điểm

  • Viết Unit Test rất tốn thời gian đó là lý do tại sao rất khó để đáp ứng yêu cầu về tiến độ cũng như thời hạn ngắn.
  • Unit Test chỉ kiểm tra các tập dữ liệu và chức năng của nó. Unit test không tìm ra các lỗi tích hợp, hoặc các lỗi sinh ra từ quy trình luồng khép kín (end-to-end).
  • Số lượng code để viết Unit Test đôi khi còn lớn hơn số dòng code thực, khiến cho công tác kiểm soát và quản lý trở nên khó khăn.
  • Viết Test Code để kiểm tra Code đôi khi không hiệu quả, rơi vào tình huống "mỡ nó rán nó".
  • Unit Test hoàn toàn khác với viết code thông thường. Có thể có những Lập Trình Viên viết code rất giỏi nhưng chưa chắc viết được test case. Không có gì đảm bảo rằng, ngay cả khi unit test code được kiểm tra kỹ lưỡng, phần mềm sẽ không có lỗi.
  • Unit testing cần đầu tư thời gian, công sức để học tập. Bởi vì đôi khi bạn cần học cách sử dụng các công cụ phần mềm tự động.

Lời kết

Tương tự như code, Unit Testing cũng nên thực hành một cách liên tục để có thể thành thạo hơn. Bất kỳ công cụ hay ngôn ngữ nào trong thế giới lập trình đều có 2 mặt ưu và nhược điểm. Điều quan trọng là bạn phải biết cách tận dụng, phát huy những ưu điểm. Và Unit Testing chỉ mang lại lợi ích nếu bạn đặt vấn đề chất lượng phần mềm lên hàng đầu.