🌱 Unit Test in Embedded Coding (1)
Giống như nhiều bạn đi theo con đường lập trình nhúng (Embedded Software), mình cũng xuất thân từ ngành điện, vì vậy khi bước chân vào con đường làm phần mềm, có rất nhiều thứ mà mình phải học mới. Điển hình trong số đó là các mô hình, quy trình thiết kế phần mềm.
➤ Và một phase khá quan trọng trong quy trình thiết kế phần mềm (nhúng) mà hôm nay mình muốn giới thiệu, đó là Unit Test - Kiểm thử đơn vị.
👉 Vậy Unit Test là gì?
Trong và sau khi phát triển phần mềm (nhúng), việc kiểm thử là việc vô cùng quan trọng. Cần đảm bảo sản phẩm phần mềm đến tay khách hàng là không có bug. Trong thế giới phần mềm, thử nghiệm là bước nhỏ rắc rồi mà không ai thích làm. Thời gian viết kịch bản để thử nghiệm có vẻ lãng phí, mặc dù thực tế thử nghiệm là một phần quan trọng của tất cả các ngành kỹ thuật và hầu hết công ty phần mềm đều áp dụng.
Đối với embedded software, việc kiểm thử còn bao gồm kiểm thử phần mềm được nạp và chạy trên phần cứng, bao gồm Unit Test, Integration Test, System Test, Acceptance Test.
➤ Trong đó, Unit Test - Kiểm thử đơn vị là kiểm thử ở đơn vị nhỏ nhất, đơn vị nhỏ nhất này có thể là 1 hàm, 1 file, hoặc một module, nhưng thường sẽ là một hàm - Unit Test sẽ kiểm tra hoạt động chính xác của từng hàm bằng các phương pháp như Black Box, White Box, ... (Mình sẽ giới thiệu sau 😇).
👉 Tại sao cần Unit Test?
1 - Tìm ra lỗi trong phần mềm (Driver)
Một chương trình nhúng dù nhỏ hay lớn đều có thể tiềm ẩn lỗi, thậm chí là những lỗi rất rõ ràng. Đôi khi chạy ứng dụng này rất ok, nhưng ghi vào một số thanh ghi bị sai, dẫn đến chạy các ứng dụng khác bị sai. Dev chỉ có thời gian kiểm tra các luồng code, thanh ghi chính, nhưng không thể cover các trường hợp.
Chính vì vậy, Unit Test là việc rất quan trọng và cả Dev và Test đều phải làm để kiểm tra những lỗi cơ bản nhất của phần mềm.
2 - Giảm chi phí
Tất nhiên rồi, nếu mà tăng chi phí thì chắc các công ty đã không làm 😆 Vì chi phí để sửa lại một phần mềm nếu có bug là rất lớn, mà nếu không test thì thường có bug, rất nhiều bug là đằng khác 😅. Mặt khác phần mềm có bug đơn giản còn khiến khách hàng không hài lòng, có thể gây "mất khách".
3 - Cải thiện hiệu suất
Thử nghiệm tối đa hóa hiệu suất của hệ thống. Việc tìm kiếm và loại bỏ mã chết và mã không hiệu quả có thể giúp đảm bảo rằng phần mềm sử dụng toàn bộ tiềm năng của phần cứng.
👉 Thử triển khai 1 Unit Test đơn giản
Mỗi ngôn ngữ lập trình hỗ trợ một số framework cho Testing, đối với C cũng vậy, chúng ta có EUnit, CUnit, Ctest, Check, AcuTest, ...
Những framwork này hỗ trợ các API sử dụng để kiểm tra kết quả của các hàm, hỗ trợ report kết quả của các testcase.
Dưới đây mình ví dụ triển khai 1 test chương trình C đơn giản sử dụng thư viện assert.h trong C (Vì nó có sẵn và dễ dàng sử dụng bằng cách include thư viện, không cần cài đặt nhiều môi trường như những framework khác).
👉 Ví dụ, cần test hoạt động của hàm tính giai thừa sau:
Sử dụng hàm assert() để test các kết quả mong muốn với cú pháp sau (cần include thư viện assert.h trước khi sử dụng):
void assert( /* Biểu thức cần kiểm tra */ );
Hàm này sẽ không trả về gì cả, nếu biểu thức cần kiểm tra là sai, nó sẽ trả về một thông báo.
👉 Dưới đây là cách mình triển khai:
👉 Ở những bài viết sau, có thể mình sẽ nói rõ hơn về cách cài đặt, và sử dụng của những framwork test này!
>>>= Follow ngay =<<<
💚 Kênh Youtube Lập trình - Điện tử 💚
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊
Cảm ơn a! hay quá a ơi cái này kiến thức mới với e. Mong a ra thêm nhiều bài để cho đàn e học hỏi thêm a
Trả lờiXóaOk em, phần test này đối với sinh viên là khá mới, a sẽ ra thêm nhiều bài hơn
XóaEmbedded firmware là lập trình cho vđk đúng ko ạ
Trả lờiXóaĐúng rồi em. Giờ nhìn chung là gộp vào làm software luôn rồi ấy.
Xóa