Unit Test là gì?
Last updated: May 17, 2023 Xem trên toàn màn hình
- 03 May 2019 Business Rule là gì?
- 04 Jan 2023 Phát triển phần mềm linh hoạt theo mô hình Big Bang
- 18 Mar 2021 Kỹ thuật ước lượng dự án phần mềm linh hoạt dựa vào Story Point - phương pháp T-Shirt Sizing
- 01 Feb 2023 Information Radiator là gì?
- 20 Jul 2021 Quản lý và đánh giá công việc theo quy trình TIGO SmartWork
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ị đó.
Vòng đời của UT
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).
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).
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.
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).
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).