Unit Test là gì?

Unit tests are typically automated tests written and run by software developers to ensure that a section of an application (known as the "unit") meets its design and behaves as intended. In procedural programming, a unit could be an entire module, but it is more commonly an individual function or procedure.

Unit Test là gì?

Unit Test là một loại kiểm thử phần mềm trong đó các đơn vị hay thành phần riêng lẻ của phần mềm được kiểm thử. Kiểm thử đơn vị được thực hiện trong quá trình phát triển ứng dụng. 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ị đó.

Unit Test

Vòng đời của UT

Unit Test là gì? Khái niệm và vai trò

UT có 3 trạng thái cơ bản:

  • Fail (trạng thái lỗi).
  • Ignore (tạm ngừng thực hiện).
  • Pass (trạng thái làm việc).

Unit Test là gì? Khái niệm và vai trò

Toàn bộ UT được vận hành trong một hệ thống tách biệt. Có rất nhiều phần mềm hỗ trợ thực thi UT với giao diện trực quan. Thông thường, trạng thái của UT được biểu hiện bằng các màu khác nhau: màu xanh (pass), màu vàng (ignore) và màu đỏ (fail).

Benefits

Thời gian đầu, người ta thường do dự khi phải viết UT thay vì tập trung vào code cho các chức năng nghiệp vụ. Công việc viết Unit Test có thể mất nhiều thời gian hơn code rất nhiều nhưng lại có lợi ích sau:

  • Tạo ra môi trường lý tưởng để kiểm tra bất kỳ đoạn code nào, có khả năng thăm dò và phát hiện lỗi chính xác, duy trì sự ổn định của toàn bộ PM và giúp tiết kiệm thời gian so với công việc gỡ rối truyền thống.
  • Phát hiện các thuật toán thực thi không hiệu quả, các thủ tục chạy vượt quá giới hạn thời gian.
  • Phát hiện các vấn đề về thiết kế, xử lý hệ thống, thậm chí các mô hình thiết kế.
  • Phát hiện các lỗi nghiêm trọng có thể xảy ra trong những tình huống rất hẹp.
  • Tạo hàng rào an toàn cho các khối mã: Bất kỳ sự thay đổi nào cũng có thể tác động đến hàng rào này và thông báo những nguy hiểm tiềm tàng.

Limitations
Unit Test có các hạn chế:

  • Tăng chi phí dự án. Trong khi Manual Test (do Tester tiến hành) chiếm 40% - 50% tổng chi phí dự án, Unit Test chiếm 20%-30% tổng chi phí dự án. Do vậy cần cân nhắc đưa Unit Test vào triển khai.
  • Nhân sự triển khai Unit Test tăng so với không có phương pháp kiểm thử bán tự động này, bao gồm các chuyên gia lập trình, các chuyên gia vận hành Unit Test.
  • Unit Test có thể làm gián đoạn tạm thời các công việc phát triển chính (mainstream), làm chậm quá trình "faster GTM (Go-to-market)" do vậy không phù hợp với các sản phẩm startup, MVP...
  • Unit Test nếu không có độ phủ (test coverage) đủ lớn, hiệu quả thu được sẽ không đáng kể (xét trên góc nhìn Cost-Benefit Analysis). Điều này cũng tương tự như khi đơn thuốc, uống không đủ liều sẽ không đủ hiệu quả bảo vệ cho cơ thể (kháng thể).
  • Unit Test không thích hợp với các mô hình phát triển nhanh (Rapid), linh hoạt (Agile), chớp nhoáng (Big Bang).

Best fit
Unit Test được dùng trong các trường hợp sau:

  • Nâng cấp hệ thống có dữ liệu giao dịch lớn (transaction data)
  • Các hệ thống lớn, phức tạp
  • Các hệ thống phần mềm đặc thù ngành (bespoke), các phần mềm phục vụ ngành dọc (best-of-breed, best-of-suite). Các phần mềm dạng này đã có nghiệp vụ rõ ràng, hoặc được xây lại theo mô hình phần mềm cũ đã vận hành lâu năm (chỉ khác về công nghệ và mô hình phát triển, mở rộng).


Nguồn: TIGO Solutions